我对 R 中复制函数的输出感到困惑,我试图以两种不同的方式使用它,(在我看来)应该给出一个矩阵作为输出!
所以,如果我使用
replicate(5, seq(1,5,1))
我得到一个矩阵 5x5
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
[2,] 2 2 2 2 2
[3,] 3 3 3 3 3
[4,] 4 4 4 4 4
[5,] 5 5 5 5 5
..没关系,我明白了......
但是,如果我改为使用:
replicate(5, for(i in 1:5){print(i)})
我得到以下信息:
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
谁能解释一下为什么会这样?
谢谢 :)
最佳答案
一个 for
循环返回 NULL
.所以在第二种情况下,replicate
函数正在执行 for(i in 1:5){print(i)}
五次,这就是为什么您会看到所有这些数字都打印出来的原因。
然后它把返回值放在一个列表中,所以返回值replicate
调用是五个列表NULL
s,它被打印出来。执行
x<-replicate(5, for(i in 1:5){print(i)})
x
应该澄清。
关于R中的复制函数返回NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19716984/