当我使用for
循环时,我通常会使用if
和next
语句构建break
。解决一些问题和逻辑步骤只需要这样做。但是,我无法在next
包中使用break
,foreach
语句。如何在foreach
循环结构中使用这些语句?
答案 0 :(得分:0)
使用foreach
包时的一般想法是每次迭代都可以并行执行;因此,如果您有N
次迭代和N
CPU,您将获得(忽略线程通信)完美的加速。
因此,不要使用break
,而是尽早返回NA
或0
。例如
library("foreach")
f = function(i) if(i < 3) sqrt(i) else NA
foreach(i=1:5) %do% f(i)
现在你可能会说你浪费了i=4
和i=5
的资源,但这相当于纳米/微秒,你的总计算量是以秒/分钟为单位。