为什么foreach在一个元素上与cbind结合返回一个向量而不是一个矩阵?

时间:2016-03-29 21:58:47

标签: r foreach

void addData(int &*arr, int &SIZE, int data)

给出数字向量foreach(i=seq_len(1), .combine = cbind) %do% c(1,2,3) ,而为了与其他序列长度一致,它应该给出3x1矩阵。特别是

c(1,2,3)

给出矩阵,而不是向量。为什么是这样?

1 个答案:

答案 0 :(得分:2)

对不起,这应该是评论而不是答案,但我还不能发表评论,所以它就是为了解决你的问题。我会说这不是一个错误。 foreach中的cbind正在做一些不同的事情。它是在迭代之间组合结果,但是在原始语句中只有一个,所以没有什么可以解决的。

foreach(i=seq_len(1), .combine = 'cbind') %dopar% c(1,2,3)

产生结果:

[1] 1 2 3

但如果有多次迭代,

foreach(i=seq_len(2), .combine = 'cbind') %dopar% c(1,2,3)

     result.1 result.2
[1,]        1        1
[2,]        2        2
[3,]        3        3

在使用cbind的迭代之间正确组合。如果你绝对必须在一轮,那么cbind将不得不进入声明

foreach(i=seq_len(1)) %dopar% cbind( c(1,2,3) )
[[1]]
     [,1]
[1,]    1
[2,]    2
[3,]    3

并注意,根据文档,结果将作为列表返回。