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)
给出矩阵,而不是向量。为什么是这样?
答案 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
并注意,根据文档,结果将作为列表返回。