获取通过foreach计算的值的平均值
假设您有一组计算,您希望使用这些计算来执行。也许您现在或将来想要将它们并行化。每次计算都返回一个数字。用这种方式计算出的所有数字的平均值,最好的习惯用法是什么获取通过foreach计算的值的平均值,r,foreach,R,Foreach,假设您有一组计算,您希望使用这些计算来执行。也许您现在或将来想要将它们并行化。每次计算都返回一个数字。用这种方式计算出的所有数字的平均值,最好的习惯用法是什么 我想到了两个解决方案,我将尽可能地发布答案,以便您可以对这些答案进行单独投票和评论,甚至可以编辑它们以改进它们。但我想可能有更好的方法,所以欢迎更多的答案。我的答案将包括一些示例,您可以采用这些示例来演示自己的技术。一个解决方案将结果累积到一个向量中,并最终在该向量上执行mean函数 > foreach(i = icount(300
我想到了两个解决方案,我将尽可能地发布答案,以便您可以对这些答案进行单独投票和评论,甚至可以编辑它们以改进它们。但我想可能有更好的方法,所以欢迎更多的答案。我的答案将包括一些示例,您可以采用这些示例来演示自己的技术。一个解决方案将结果累积到一个向量中,并最终在该向量上执行
mean
函数
> foreach(i = icount(300), .combine = c, .inorder = FALSE, .multicombine = TRUE,
+ .final = mean) %do% { i*7 %% 11 }
[1] 1053.5
好处:
- 也可用于嵌套的
调用foreach
- 也适用于除
之外的聚合函数mean
- 不需要了解迭代中的值的数量
- 首先将所有结果收集到一个向量中,这可能会消耗不必要的内存,尤其是在执行大量非常小的作业时
> foreach(i = icount(300), .combine = '+', .inorder = FALSE,
+ .final = function(x) x/300) %do% { i*7 %% 11 }
[1] 1053.5
好处:
- 对于单个数字和,只需要内存,这应该是一个性能增益
- 也可用于嵌套的
调用foreach
- 迭代次数必须在
的参数列表中重复。在这个例子中,数字是一个常数,所以这很容易,使用单个变量甚至单个向量的长度应该不会太难。但在迭代跨越多个向量或未知大小的迭代器的情况下,事情可能会变得更加困难,并且由于不一致的修改而导致的错误可能会被忽略foreach