誰かがこのサンプルコードで何が起こっているのか説明できますか?計算ループを実行する関数があり、いつものように、ループを通過するたびに出力ベクトルをインクリメントするのではなく、出力ベクトルを初期化したいと考えていました。
Rgames> library(Rmpfr)
Rgames> foo<-rep(NA,5)
Rgames> foo
[1] NA NA NA NA NA
Rgames> rfoo<-mpfr(rep(NA,5),20)
Rgames> rfoo
5 'mpfr' numbers of precision 20 bits
[1] NaN NaN NaN NaN NaN
Rgames> for(jj in 1:5) {
+ foo[jj]<- mpfr(jj,10)
+ rfoo[jj]<-mpfr(jj,10)
+ }
Rgames> rfoo
5 'mpfr' numbers of precision 10 bits
[1] 1 2 3 4 5
Rgames> foo
[[1]]
'mpfr1' 1
[[2]]
'mpfr1' 2
[[3]]
'mpfr1' 3
[[4]]
'mpfr1' 4
[[5]]
'mpfr1' 5
foo
どうやら、既存の非mpfrベクトルがリストに強制されるだけでなく、ループを通過するたびに新しい値がリストとして挿入さfoo[jj]
れ、不快な「リストのリスト」が表示される理由がわかりません。 。mpfr
ベクトルは、rfoo
どちらの場合も私が期待したことを実行します。(チェックしました。初期化しない場合は、ループ内に何かを入れて、と foo<-c(foo,mpfr(jj,10))
同等の結果が得られますrfoo
)