有人可以解释这个示例代码中发生了什么吗?我有一个执行计算循环的函数,并且一如既往地想要初始化我的输出向量,而不是每次通过循环递增它。
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
我不明白为什么,显然,现有的非 mpfr 向量foo
不仅被强制到一个列表中,而且每次通过循环时,新值都foo[jj]
作为列表插入,给我一个令人不快的“列表列表” . 在这两种情况下,mpfr
向量rfoo
都符合我的预期。(我检查了,如果我不初始化,并在循环中放入一些东西,就像 foo<-c(foo,mpfr(jj,10))
我得到的结果相当于rfoo
)