2013-12-20 113 views
3

我正在尝试修改for循环以并行使用它作为foreach循环。对于for循环,我创建一个空矩阵,然后用for循环生成的值填充它。但是这种方法在foreach循环中不起作用,我的结果矩阵仍然只填充了na,它没有被填充。将foreach循环的结果保存在矩阵中

z是一个光栅文件,我是一个数值类的向量。我希望每个类i的栅格z中的单元格数量,然后将其除以栅格z中的单元格总数以得到此比例。

有关如何将其保存为foreach循环中的矩阵/数据框的任何建议?

预先感谢您。


跟进这个previous question

回答

2

的你还没有明白怎么foreach作品。它与for循环不一样。请研究包装短片。这里有两个简单的例子:

library(foreach) 
#you need to assign the loop result 
res <- foreach(z = 1:5, .combine=c) %do% { 
    a <- z 
    a #return value for the iterations 
} 

res 
#[1] 1 2 3 4 5 


res <- foreach(z = 1:5, .combine=cbind) %:% foreach(i = 10:13, .combine=c) %do% { 
    a <- z+i 
    a 
} 
res 
#  result.1 result.2 result.3 result.4 result.5 
# [1,]  11  12  13  14  15 
# [2,]  12  13  14  15  16 
# [3,]  13  14  15  16  17 
# [4,]  14  15  16  17  18 

请注意,你应该总是先测试你的循环,而不是首先进行并行化。另外,在循环内部使用print没有意义。无论如何,当你并行运行循环时,你将看不到印刷值。

+0

感谢您的建议。我一直在阅读cran文档,但我无法将我正在做的事情与给出的例子联系起来。我正在尝试我的代码在一个单一的核心,只是试图调试代码。 – Karen