0
これはなぜとても遅いのですか?非常に遅い:最初の行で列を分割するxts
私は最初の行にインデックスを付けることを試みています。
> 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
私はこれを試してみましたが、奇妙な結果だ:
> 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
を、私は、これを試してみました右の結果を得たが、永遠にかかりました。
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
何が起こっているのですか?私はこれが経験を持つ人にとっては明白でなければならないと確信していますが、私は困惑しています...
ファンタスティック!ありがとう!!私は列ではなく、行ごとにforループを試していました。何がなぜうまくいくのか、他のものは考えていないのか? –
@DeepakRamachandran:行ごとにループを試したときに何か他のことを間違って実行しているに違いありません。これは動作しているためです: 'for(rr in 1:nrow(cfm))cfm [rr、] < - cfm [rr、]/drop (coredata(cfm [1、])) ' –