【问题标题】:How to use statements "next"/"break" with foreach如何在 foreach 中使用语句“next”/“break”
【发布时间】:2017-01-26 03:45:49
【问题描述】:

当我使用for 循环时,我通常会使用带有nextbreak 语句的if 构造。解决一些问题和合乎逻辑的步骤就需要这样做。但是我无法在foreach 包中使用nextbreak 语句。如何在 foreach 循环结构中使用这些语句?

【问题讨论】:

标签: r if-statement parallel.foreach


【解决方案1】:

使用foreach 包时的总体思路是每次迭代都可以并行执行;因此,如果您有N 迭代和N CPU,您将获得(忽略线程通信)完美的加速。

因此,不要使用break,而是尽早返回NA0。例如

library("foreach")
f = function(i) if(i < 3) sqrt(i) else NA
foreach(i=1:5) %do% f(i)

现在您可以争辩说您浪费了 i=4i=5 的资源,但这相当于纳/微秒,并且您的总计算量以秒/分钟为单位。

【讨论】:

    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2016-10-11
    • 2016-06-28
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多