接下来是 Revolution R 的 foreach 包?

2024-02-12

我已经浏览了很多文档并进行了大量的谷歌搜索,但找不到以下问题的答案:是否有一种方法可以并行诱导“类似下一个”功能foreach循环使用foreach包裹?

具体来说,我想做一些类似的事情(这不适用于next但没有):

foreach(i = 1:10, .combine = "c") %dopar% {
    n <- i + floor(runif(1, 0, 9))
    if (n %% 3) {next}
    n
}

我意识到我可以嵌套括号,但如果我想在一个长循环中添加一些下一个条件,这很快就会成为语法噩梦。

这里有一个简单的解决方法(要么是类似的功能,要么是解决问题的不同方法)?


虽然看起来很奇怪,但您可以使用return在 foreach 循环体中,不需要辅助函数(如@Aaron 所示):

r <- foreach(i = 1:10, .combine='c') %dopar% {
  n <- i + floor(runif(1, 0, 9))
  if (n %% 3) return(NULL)
  n
}

A NULL在此示例中返回,因为它被过滤掉了c函数,这可能很有用。

另外,虽然它对于您的示例效果不佳,但when函数可以代替next有时,对于阻止计算的发生非常有用:

r <- foreach(i=1:5, .combine='c') %:%
         foreach(j=1:5, .combine='c') %:%
             when (i != j) %dopar% {
                 10 * i + j
             }

内部表达式仅计算 20 次,而不是 25 次。这对于嵌套的 foreach 循环特别有用,因为when可以访问所有上游迭代器值。


Update

如果你想过滤掉NULL当以列表形式返回结果时,您需要编写自己的组合函数。这是一个完整的示例,演示了一个组合函数,其工作方式类似于默认的组合函数,但包含过滤机制:

library(doSNOW)
cl <- makeSOCKcluster(3)
registerDoSNOW(cl)

filteredlist <- function(a, ...) {
  values <- list(...)
  c(a, values[! sapply(values, is.null)])
}

r <- foreach(i=1:200, .combine='filteredlist', .init=list(),
             .multicombine=TRUE) %dopar% {
  # filter out odd values of i
  if (i %% 2) return(NULL)
  i
}

请注意,当任务结果超过 100 个时,此代码可以正常工作(100 是任务结果的默认值).maxcombine选项)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接下来是 Revolution R 的 foreach 包? 的相关文章

  • 如何在 R 中的 for 循环内将值存储在向量中

    我正在开始使用 R 但我对以下问题感到非常沮丧 我试图将 for 循环内完成的某些计算的值存储到我之前定义的向量中 问题是如何进行索引 因为for循环迭代代码的次数取决于用户的输入 所以变量i不一定要从1开始 它可以从80开始 for举个例
  • 在 R 的 for 循环中创建动态命名对象并分配动态值

    我正在尝试创建一套动态命名的新对象 例如 temp2015 使用 for 循环 并存储动态值 具体来说 其他对象的名称 例如 Y2015 和 for 循环中使用的值 例如 2015 在动态命名的新对象中 我不确定为什么下面的代码不起作用 Y
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • 如何按定义的顺序将图像合并到一个文件中

    我有大约 100 张图像 png 我不想手动执行此操作 而是希望将它们按照定义的顺序 基于文件名 并排放置在一个 pdf 中 每行 12 个图像 有人有什么建议吗 我按照下面托马斯告诉我的方法尝试了 它把它们贴在旁边有一个黑边 我怎样才能去
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used
  • 要在子集中显示的非数字条目的维恩图

    我有以下数据框 SET1 SET2 SET3 par1 par2 par1 par2 par3 par2 par3 par4 par5 我想制作一个维恩图 其中所有这些 parX 元素都显示在各自的子集中 即作为标签 而不仅仅是重叠元素的数
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • 如何在Rstudio中快速给几个单词加上引号?

    如何将 MI ID FL 转换为 MI ID FL 而无需键入每个双引号 Hmisc 包有一个函数 Cs 它将评估逗号分隔的文本是否带有引号 Cs MI ID FL becomes MI ID FL
  • 扩展数据框以使其具有与原始行中两列的范围一样多的行[重复]

    这个问题在这里已经有答案了 我有一个数据框如下 structure list symbol c u n v i a start c 9L 6L 10L 8L 7L end c 14L 15L 12L 13L 11L Names c symb
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • 计算 R 行中的非零条目数

    我有以下类型的数据 mode1 mode2 mode3 1 8 1 0 2 0 0 0 3 6 5 4 4 1 2 3 5 1 1 1 数据使用dput structure list mode1 c 8L 0L 6L 1L 1L mode2
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • 我如何查看 quantmod 包中所有可用的数据系列?

    如何显示可用的所有报价 数据系列的列表 例如使用雅虎的 getSymbols 我不知道有什么办法 TTR包有一个功能 stockSymbols 下载 NYSE AMEX 和 NASDAQ 的所有当前代码 它试图将它们采用雅虎可接受的格式 但
  • 无法将“gather”输出的列名称更改为默认名称以外的任何名称

    我正在尝试使用gather in the tidyr包 但我无法更改默认名称的输出列名称 例如 df data frame time 1 100 a 1 100 b 101 200 df long df gt gather foo bar
  • 有没有一种简单的方法来准备 Fortran 代码以进行并行调用

    我想使用 OpenMP 在 C 程序中并行求解多个大型 ODE 系统 由于某些原因 我需要使用 ODE 求解器 但我只能找到 Fortran 90 子例程 而且代码太大 无法简单地将其转换为 C 我知道 Fortran 广泛使用静态内存 因
  • 为什么java中的for-each循环中需要声明变量

    for 每个循环的通常形式是这样的 for Foo bar bars bar doThings 但如果我想保留 bar 直到循环结束 我可以not使用 foreach 循环 Foo bar null Syntax error on toke
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x

随机推荐

  • 安装aws-sdk后出错

    我正在尝试让回形针与 S3 一起使用 但我的视图抛出错误 cannot load such file aws sdk You may need to install the aws sdk gem 我的 Rails 配置如下 Gemfile
  • (MVC 3 Razor) - 循环遍历 3 列 div 的更简单方法

    目前我在 CSHTML 中使用以下代码 int i 0 foreach var item in Model Traders if i 3 0 if i 1 div class row div class four column div cl
  • 获取 Firefox SDK main.js 中某个文件的内容

    所以我正在开发一个 Firefox 插件 它可以向任何网页的 DOM 添加一些 HTML 这里的想法是我使用一个名为template html作为模板 位于dataaddon 文件夹内的文件夹 接下来 我想使用该内容template htm
  • 如何像Notes App一样设置UITextView内容插入

    我正在开发一个应用程序 我需要在 iPhone 中提供类似 Notes App 的功能 如第一个屏幕截图所示 最初 笔记在内容开始之前留下一个选项卡 我也想做同样的事情 当我设置时左侧内容插图 UITextView 到 25 时 它显示如屏
  • 是否可以使“type”的输出返回不同的类?

    所以免责声明 这个问题 https stackoverflow com questions 56879033 how do i override type method in python object noredirect 1 comme
  • Python/Tkinter:Tkinter StringVar(IntVar 等)线程安全吗?

    Tkinter StringVar IntVar FloatVar 等 线程安全吗 后台线程可以读取或写入这些对象吗 或者我必须使用队列在后台线程和主 Tkinter GUI 线程之间传递信息 并让我的主 Tkinter 线程弹出队列并相应
  • .NET 桌面应用程序的最佳崩溃报告框架? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有几个简单的 Windows 窗体应用程序 我想向其中添加崩溃报告 可以为我提供有关用户计算机 当然
  • Serilog不将日志输出到txt文件中

    我使用 dotnet 工作服务 net 5 我集成了 Serilog 以及浓缩器和接收器 但由于某种原因 我在文件日志中看不到任何输出 这是我的 appsettings json ConnectionStrings DefaultConne
  • 使用数组和对象将多个值插入到雪花表中

    我试图使用数组和结构插入多行 通过 SQL 语句转换为 Snowflake 要将值数组插入到列中 我正在使用ARRAY CONSTUCT函数并插入我正在使用的结构 字典 对象OBJECT CONSTRUCT功能 E g insert int
  • 新版本上传到 iTunes Connect 后消失

    我正在尝试使用 Xcode 8 将构建版本上传到 iTunesConnect Xcode 显示上传成功 在 iTunesConnect 的 活动 选项卡中 我看到我的构建出现了 并且被标记为 正在处理 但几分钟后 这个构建就消失了 我在任何
  • 对 CountedCompleter 的文档和来源感到困惑

    这是一个代码片段java util concurrent CountedCompleter类 JDK 1 8 0 25 If the pending count is nonzero decrements the count otherwi
  • 使用 JodaTime 自动将秒转换为年/日/小时/分钟?

    当 x 超过 3600 秒时 有没有办法将 x 秒转换为 y 小时和 z 秒 同样 当x超过60但小于3600秒时 使用JodaTime 将其转换为 a分b秒 我知道我必须在 periodFormatter 中指定我需要的内容 但我不想指定
  • 传递常量矩阵

    参考this https stackoverflow com questions 546860 passing arrays and matrices to functions as pointers and pointers to poi
  • 对象内部字段的 Arangodb AQL 更新

    给出以下集合文档示例 timestamp 1413543986 message message readed 8 null 9 null 22 null type 1014574149174 如何使用键 readed 更新对象中特定键的值
  • 我可以使用 groovy 的默认 getter/setter 来帮助实现 java 接口吗?

    我正在从导入的库扩展一个非常简单的 Java 接口 该接口非常简单 它声明的唯一方法是属性列表的 getter 和 setter 我的应用程序是用 Groovy 编写的 因此我想使用 Groovy 类来实现这个 Java 接口 我的印象是
  • CryptoAPI 返回 HMAC_SHA1 的错误结果

    我将下面的代码与 Crypto API 一起使用 但根据其他 API 和库的测试 我没有得到预期的结果 我正在使用钥匙 key 数据是 message 例如 使用 Indy 的 TidHMACSHA1 我得到 2088df74d5f2146
  • 使用数组绘制 D3 简单折线图

    我正在尝试实现这段代码 http bl ocks org 3883245 http bl ocks org 3883245 但我不是加载 TSV 文件 而是从数组加载数据 数组如下所示 2012 10 02 2 2012 10 09 2 2
  • 什么时候应该在非成员函数之前写入关键字“static”?

    我最近在 SO 上看到了一些关于static函数之前的关键字 我想知道如何正确使用它 1 什么时候应该写关键字static在非成员函数之前 2 在头文件中定义静态非成员函数有危险吗 为什么不 附带问题 3 是否可以以某种方式在头文件中定义一
  • 没有路线匹配 [POST]“/sessions/new”(rails 4 正在运行)

    我正在阅读 Rails 4 In action 一书 但遇到了以下错误 No route matches POST sessions new 我不知道为什么 因为我已经按照教程进行了操作 这让我相信教程本身是有缺陷的 无论如何 由于某种原因
  • 接下来是 Revolution R 的 foreach 包?

    我已经浏览了很多文档并进行了大量的谷歌搜索 但找不到以下问题的答案 是否有一种方法可以并行诱导 类似下一个 功能foreach循环使用foreach包裹 具体来说 我想做一些类似的事情 这不适用于next但没有 foreach i 1 10