Summe in R innerhalb der Funktion

Schreibe ich eine Funktion in R zu berechnen, werden die Werte der beiden Vektoren, bevor Sie voran gehen und tun, einige andere ausgefallene Sachen. Die beiden Vektoren R und B sind gegeben durch die folgenden Summen:

Summe in R innerhalb der Funktion

und

Summe in R innerhalb der Funktion

wobei $\beta$ ist eine Konstante und die ts an die Funktion übergeben und das auftreten mal ein Ereignis. Also, im Grunde, wenn das i-te Ereignis Eintritt (zum Zeitpunkt t_i), berechne ich B(i) und R(i) die Summen getan, mit all den vorherigen auftreten mal t_k meinem Fall bis zu diesem moment.

Ich würde gerne kommen mit etwas effizienter als das

r <- rep(0,length(t))
for(i in 2:length(t)) {
    r[i] <- sum((t[i]-t[which(t<t[i])])*exp(beta*(t[i]-t[which(t<t[i])])))
}
b <- rep(0,length(t))
for(i in 2:length(t)) {
    b[i] <- sum(((t[i]-t[which(t<t[i])])^2)*exp(beta*(t[i]-t[which(t<t[i])])))
}

was im Grunde berechnet alles doppelt, obwohl der einzige Unterschied zwischen den beiden ist der Platz vor der Exponentialfunktion. Irgendwelche Ideen? Danke!

Wie groß wird t typischerweise werden? Wenn es nicht zu groß, Sie könnte verwenden outer statt for Schleifen.
Sie haben einfach nicht ein Beispiel für die Vektor -t, so dass R glaubt, dass Sie wollen Teilmenge der Funktion t.
Uhhhh, diese Schleifen sind hässlich. Vektorisierung ist der Name des Spiels... sollten Sie einen dataframe mit den Spalten, t_i und t_k. Dann berechnen Sie den Unterschied. Danach, verwenden Sie ifelse auf den Unterschied. Diese kann getan werden, ohne irgendwelche loops und berechnet werden soll sofort.
t ist ziemlich gross: mehrere hundert tausend Einträge... @Peter: ich bin mir nicht sicher, ob ich verstehe: sollte nur zwei Spalten? Auch im Fall, dass es einen Unterschied macht, ich habe gerade in der Frage der definition von dem, was meine ts sind.
Wenn das wirklich beabsichtigt ist, eine Summe über alle Elemente der tk weniger als ti, dann ist es nicht eine gut definierte operation. Soll dies eine Summe von über ti[j]<tk[j] ? Was ist der index, über die Sie möchten, um die Summe?

InformationsquelleAutor g_puffo | 2014-09-19

Schreibe einen Kommentar