假设您有一堆计算,您希望使用foreach
执行这些计算。也许你想现在或将来并行化它们。每个计算返回一个数字。获得以这种方式计算的所有数字的平均值的最佳习惯是什么?
我有两个解决方案,我会将其作为可能的答案发布,以便您可以单独投票和评论,甚至可以编辑它们以改进它们。但我想可能会有更好的方法,所以欢迎额外的答案。我的答案将包括您可以采用的示例来演示您自己的技术。
答案 0 :(得分:0)
一个解决方案将结果累积到一个向量中,并最终在其上执行mean
函数。
> foreach(i = icount(300), .combine = c, .inorder = FALSE, .multicombine = TRUE,
+ .final = mean) %do% { i*7 %% 11 }
[1] 1053.5
优点:
foreach
调用mean
以外的聚合函数缺点:
答案 1 :(得分:0)
一种解决方案将结果累积为一个总和,并最终将此总和除以迭代次数。
> foreach(i = icount(300), .combine = '+', .inorder = FALSE,
+ .final = function(x) x/300) %do% { i*7 %% 11 }
[1] 1053.5
优点:
foreach
调用缺点:
foreach
的参数列表中重复迭代次数。在这个例子中,数字是一个常数,所以这很容易,使用单个变量甚至单个向量的长度应该不会更难。但是在迭代跨越多个向量或未知大小的迭代器的情况下,事情可能会变得更加困难,并且由于不一致的修改而导致的错误可能会被忽视。