首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的replicate函数返回NULL

R中的replicate函数返回NULL
EN

Stack Overflow用户
提问于 2013-11-01 05:33:27
回答 3查看 25.1K关注 0票数 6

我对R中的复制函数的输出感到困惑,我试图以两种不同的方式使用它,(在我看来)应该给出一个矩阵作为输出!

所以,如果我使用

代码语言:javascript
复制
replicate(5, seq(1,5,1))

我得到了一个5x5的矩阵

代码语言:javascript
复制
    [,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

..and没关系,我明白了.

但是,如果我改用:

代码语言:javascript
复制
replicate(5, for(i in 1:5){print(i)})

我得到了以下信息:

代码语言:javascript
复制
[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

有人能给我解释一下为什么会这样吗?谢谢:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-01 06:43:57

正如@mrip所说,for循环返回NULL,因此您需要将该对象赋值给循环中的一个对象,并将该对象返回给replicate以便输出。但是,mrip的代码仍然会在replicate求值的每次迭代中产生NULL。

您还需要将replicate的输出赋给一个名称,这样它就不会蒸发掉,呃,得到垃圾回收。这意味着您需要将d作为单独的语句添加,以便花括号内的整个表达式的计算将返回'something‘而不是NULL。

代码语言:javascript
复制
d <- numeric(5); res <- replicate(5, { 
                            for(i in 1:5){d[i] <- print(i)} ; d}
                                  )
[1] 1
[1] 2

snipped
[1] 4
[1] 5
> res
     [,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
票数 4
EN

Stack Overflow用户

发布于 2013-11-01 05:38:50

for循环返回NULL。因此,在第二种情况下,replicate函数将执行for(i in 1:5){print(i)}五次,这就是为什么您会看到打印出所有这些数字的原因。

然后将返回值放入一个列表中,因此replicate调用的返回值是一个包含5个NULL的列表,并将其打印出来。正在执行中

代码语言:javascript
复制
x<-replicate(5, for(i in 1:5){print(i)})
x

应该澄清一下。

票数 5
EN

Stack Overflow用户

发布于 2013-11-01 05:39:19

for循环返回一个列表,而seq()调用返回一个向量。这应该与使用for循环的seq()相同

代码语言:javascript
复制
foo <- function(){
  b = list()
  for(i in 1:5) b[i] <- i
  do.call(c, b)
}

replicate(5, foo())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19716984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档