0
Irgendeine Idee, warum das so langsam ist?Sehr langsam: xts Spalte durch erste Zeile teilen
Ich versuche, eine Matrix zu seiner ersten Zeile zu indizieren.
> nrow(cfm2)
[1] 8326
> head(cfm2)
TSX TY1 GC1:CAD CL1:CAD
1983-12-01 2558.0 80.43750 497.3676 36.29842
1983-12-02 2550.2 79.84375 496.1024 36.55753
1983-12-05 2540.2 79.81250 496.9146 36.49022
1983-12-06 2536.8 79.84375 495.9524 36.41626
1983-12-07 2549.3 79.68750 501.9910 36.16226
1983-12-08 2535.5 79.25000 484.1805 36.44115
Ich versuchte dies, bekam seltsame Ergebnisse:
> cfm <- cfm2/drop(coredata(cfm2[1]))
> head(cfm)
TSX TY1 GC1:CAD CL1:CAD
1983-12-01 1.0000000 0.16172644 0.1944361 0.07298106
1983-12-02 31.7041175 2.19964833 6.1675513 1.00713855
1983-12-05 5.1072883 0.03120113 0.9990891 0.01426514
1983-12-06 69.8873485 0.99261849 13.6631959 0.45272736
1983-12-07 0.9965989 0.16021851 0.1962435 0.07270731
1983-12-08 31.5213675 2.18329086 6.0193380 1.00393224
ich das versucht, bekam die richtigen Ergebnisse, aber es dauerte ewig.
test.cfm <- function(cfm){
cfm1 <- cfm
for(cc in 1:ncol(cfm)){
for(rr in 1:nrow(cfm)){
coredata(cfm[rr,cc]) <- 100 * coredata(cfm1[rr,cc])/coredata(cfm1[1,cc])
}
}
return(cfm)
}
> system.time(cfm <- test.cfm(cfm2))
user system elapsed
17.809 4.886 22.896
> head(cfm)
TSX TY1 GC1:CAD CL1:CAD
1983-12-01 100.00000 100.00000 100.00000 100.00000
1983-12-02 99.69507 99.26185 99.74561 100.71385
1983-12-05 99.30414 99.22300 99.90891 100.52841
1983-12-06 99.17123 99.26185 99.71545 100.32465
1983-12-07 99.65989 99.06760 100.92956 99.62491
1983-12-08 99.12041 98.52370 97.34861 100.39322
Irgendeine Idee was ist los? Ich bin sicher, dass dies für diejenigen mit Erfahrung offensichtlich sein muss, aber ich bin perplex ...
Fantastisch! Vielen Dank!! Ich hatte die for Schleife für Zeile, nicht für Spalte versucht. Irgendeine Idee warum man arbeitet und nicht die andere? –
@DeepakRamachandran: Sie müssen etwas anderes falsch gemacht haben, als Sie die Schleife für Zeile ausprobiert haben, weil es auch funktioniert: 'für (rr in 1: nw (cfm)) cfm [rr,] <- cfm [rr,]/drop (coredata (cfm [1,])) ' –