【发布时间】:2017-01-26 03:45:49
【问题描述】:
当我使用for 循环时,我通常会使用带有next 和break 语句的if 构造。解决一些问题和合乎逻辑的步骤就需要这样做。但是我无法在foreach 包中使用next、break 语句。如何在 foreach 循环结构中使用这些语句?
【问题讨论】:
标签: r if-statement parallel.foreach
当我使用for 循环时,我通常会使用带有next 和break 语句的if 构造。解决一些问题和合乎逻辑的步骤就需要这样做。但是我无法在foreach 包中使用next、break 语句。如何在 foreach 循环结构中使用这些语句?
【问题讨论】:
标签: r if-statement parallel.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 的资源,但这相当于纳/微秒,并且您的总计算量以秒/分钟为单位。
【讨论】: