Rmpfr列表变量:如何强制向量?

Rmpfr列表变量:如何强制向量?,r,R,有人能解释一下这个示例代码中发生了什么吗?我有一个函数,它执行一个计算循环,像往常一样,我想初始化我的输出向量,而不是每次通过循环递增它 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 b

有人能解释一下这个示例代码中发生了什么吗?我有一个函数,它执行一个计算循环,像往常一样,我想初始化我的输出向量,而不是每次通过循环递增它

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
Rgames>library(Rmpfr)
Rgames>foo-foo
[1] 娜娜娜娜娜娜
Rgames>rfoorfoo
5个精度为20位的“mpfr”数字
[1] 楠楠楠楠楠楠
Rgames>for(jj为1:5){
+foo[jj]foo
[[1]]
“mpfr1”1
[[2]]
‘mpfr1’2
[[3]]
‘mpfr1’3
[[4]]
‘mpfr1’4
[[5]]
‘mpfr1’5

显然,我不明白为什么现有的非mpfr向量
foo
不仅被强制为一个列表,而且每次通过循环,新值都作为列表插入
foo[jj]
,给我一个令人不快的“列表列表”.在这两种情况下,
mpfr
vector
rfoo
都达到了我预期的效果。(我检查了,如果我没有初始化,并在循环中放入类似
foo的内容,这里发生的事情与使用列表而不是
mpfr
对象时发生的事情相同。例如,如下所示。我相信这是有意义的,因为S4对象的存储方式与列表类似,但我不是S4 e专家

> foo <- rep(NA,2)
> foo
[1] NA NA
> foo[1] <- list(1)
> foo
[[1]]
[1] 1

[[2]]
[1] NA
如果从原子向量开始,会发生以下情况:

> (foo <- rep(NA, 2))
[1] NA NA
> foo[1] <- mynum(1)
> foo
[[1]]
[1] 1

[[2]]
[1] NA

什么是
mpfr
?它在一个特定的包中吗?几乎是。
Rmpfr
是一个包,它提供的向量和矩阵类对象的十进制精度高于普通浮点数。它是“多精度浮点数可靠”的缩写.Oops.我总是给你这个包,但这次忘了。我很抱歉。要开始S4兔子洞,请尝试:
showMethods(“[除非你真的需要它,否则“去那里”是没有意义的,但当你真的需要它时,这些命令将是你的面包和黄油;)
> (foo <- rep(NA, 2))
[1] NA NA
> foo[1] <- mynum(1)
> foo
[[1]]
[1] 1

[[2]]
[1] NA
> (rfoo <- mynum(rep(NA, 2)))
My numbers are:
[1] NA NA
> rfoo[1] <- mynum(1)
> rfoo
My numbers are:
[1] 1 NA