Ich hätte gerne einen Tipp zum Schreiben besserer R-Code. Ich habe derzeit eine Schleife in R geschrieben und es leidet unter Leistungsproblemen.Vermeiden für Schleife in R
Ich kann mich nicht mit dem Vektorisieren herumschlagen, weil jede Zeile im Ausgabedatenrahmen Abhängigkeiten von früheren Zeilen hat und sie iterativ heruntersickern, also habe ich eine Schleife geschrieben, um die Zeilen in Folge zu lesen/schreiben.
Ein Beispiel für meinen Code:
example <- data.frame(a=c(.5,.1,.5,.25),b=c(1,0,2,0),c=c(1,2,3,4),d=c(4,3,2,1))
for (i in 2:nrow(example)) {
if (example[i,1]>0) {
example[i,2]<-example[i,2]+example[i-1,2]*example[i,1]
example[i,3]<-example[i,3]+example[i-1,3]*example[i,1]
example[i,4]<-example[i,4]+example[i-1,4]*example[i,1]
}
}
Um zu sehen, was geschieht:
# before
a b c d
1 0.50 1 1 4
2 0.10 0 2 3
3 0.50 2 3 2
4 0.25 0 4 1
# after
a b c d
1 0.50 1.0000 1.0000 4.000
2 0.10 0.1000 2.1000 3.400
3 0.50 2.0500 4.0500 3.700
4 0.25 0.5125 5.0125 1.925