如何使用语句“next”/“break”与foreach
问题描述:
当我使用for
循环时,我通常有if
构造与next
和break
语句。解决一些问题和逻辑步骤只是需要。但是,我无法在foreach
包中使用next
,break
语句。我怎样才能在foreach
循环结构中使用这些语句?如何使用语句“next”/“break”与foreach
答
使用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
,但是这无异于纳米/微秒,你总计算以秒/分钟计。
[下一个革命R的foreach包?]可能的重复?(http://*.com/questions/7707467/next-with-revolution-rs-foreach-package) – 989