如何让 doSMP 与 plyr 完美配合?

2023-12-30

这段代码的工作原理:

library(plyr)
x <- data.frame(V= c("X", "Y", "X", "Y", "Z" ), Z = 1:5)
ddply(x, .(V), function(df) sum(df$Z),.parallel=FALSE) 

虽然此代码失败:

library(doSMP)
workers <- startWorkers(2)
registerDoSMP(workers)
x <- data.frame(V= c("X", "Y", "X", "Y", "Z" ), Z = 1:5)
ddply(x, .(V), function(df) sum(df$Z),.parallel=TRUE) 
stopWorkers(workers)

>Error in do.ply(i) : task 3 failed - "subscript out of bounds"
In addition: Warning messages:
1: <anonymous>: ... may be used in an incorrect context: ‘.fun(piece, ...)’

2: <anonymous>: ... may be used in an incorrect context: ‘.fun(piece, ...)’

我正在使用 R 2.1.12、plyr 1.4 和 doSMP 1.0-1。有没有人想出办法解决这个问题?

编辑:为了回应安德里,这里有一个进一步的说明:

system.time(ddply(x, .(V), function(df) Sys.sleep(1), .parallel=FALSE)) #1
system.time(ddply(x, .(V), function(df) Sys.sleep(1), .parallel=TRUE)) #2
library(doSMP)
workers <- startWorkers(2)
registerDoSMP(workers)
x <- data.frame(V= c("X", "Y", "X", "Y", "Z" ), Z = 1:5)
system.time(ddply(x, .(V), function(df) Sys.sleep(1), .parallel=FALSE)) #3
system.time(ddply(x, .(V), function(df) Sys.sleep(1), .parallel=TRUE)) #4
stopWorkers(workers)

前三个功能可以工作,但都需要大约 3 秒的时间。函数 #2 发出警告,表明没有注册并行后端,因此按顺序执行。函数 #4 给出了我在原始帖子中引用的相同错误。

/编辑:好奇者和好奇者:在我的Mac上,以下工作正常:

library(plyr)
library(doMC)
registerDoMC()
x <- data.frame(V= c("X", "Y", "X", "Y", "Z" ), Z = 1:5)
ddply(x, .(V), function(df) sum(df$Z),.parallel=TRUE)

但这失败了:

library(plyr)
library(doSMP)
workers <- startWorkers(2)
registerDoSMP(workers)
x <- data.frame(V= c("X", "Y", "X", "Y", "Z" ), Z = 1:5)
ddply(x, .(V), function(df) sum(df$Z),.parallel=TRUE) 
stopWorkers(workers)

这也失败了:

library(plyr)
library(snow)
library(doSNOW)
cl <- makeCluster(2, type = "SOCK")
registerDoSNOW(cl)
x <- data.frame(V= c("X", "Y", "X", "Y", "Z" ), Z = 1:5)
ddply(x, .(V), function(df) sum(df$Z),.parallel=TRUE) 
stopCluster(cl)

所以我认为 foreach 的各种并行后端是不可互换的。


虽然@hadley 很好地回答了这个问题,但我想补充一点,我认为 plyr 现在可以与其他 foreach 并行后端一起使用。这里有一个link http://www.numbertheory.nl/2011/11/14/parallelization-using-plyr-loading-objects-and-packages-into-worker-nodes/到包含 plyr 与 doSNOW 结合使用的示例的博客条目:

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

如何让 doSMP 与 plyr 完美配合? 的相关文章

  • 为什么 ggplot2 图例不结合手动填充和缩放值?

    预期行为 如果我用 ggplot2 创建一个绘图并使用单独的形状和填充比例来描绘数据 我希望图例会在 白色 填充点 看起来是空心的 和 黑色 填充点 看起来不空洞的 在下面的示例代码中 Windows 的图例项应为白色空心点 Linux 的
  • 循环遍历列并将字符串长度添加为新列

    我有一个包含多列的数据框 并且希望为每个列输出一个单独的列 其中包含每行的长度 我试图迭代列名称 并为每列输出一个附加有 length 的相应列 例如 col1 col2 将转到 col1 列2 col1 长度 列2 长度 我正在使用的代码
  • 在闪亮仪表板中显示/隐藏菜单项

    当进入应用程序时 我需要隐藏一个菜单项 当用户选择某个值时 菜单项必须出现 我努力了shinyjs功能hidden 并且它隐藏了一个 menuItem 但是当使用show or toggle 菜单项不会出现 我发现了Rshinydashbo
  • 展平 ggplot2 中的 alpha 通道

    ggplot2 的某些对象 函数 支持 alpha 通道 http docs ggplot2 org current geom point html http docs ggplot2 org current geom point html
  • lme4:如何指定 2 个与随机截距的相关性,而不添加随机斜率之间的相关性

    重新发布自stats stackexchange com https stats stackexchange com q 195385 33560 我试图在 R 的 lme4 包中指定一个模型 其中随机截距和随机斜率之间有 2 个相关性 但
  • R 中具有 NA 值的聚合栅格

    我在 R 中有一个分辨率为 1 公里的栅格 其 NA 值分布广泛 但位置不规则 即 包含数据的单元格不连续 并且 NA 值分散 我正在尝试使用用户定义的平均圆角函数 包括在下面 以 5 公里分辨率 因子 5 聚合此栅格 使用 raster
  • 将线条剪裁到绘图区域并在绘图区域外显示文本

    我想限制绘图的可见 y 范围 为了保留超出此范围的值 我需要设置oob 出界 to rescale none这效果很好 不过 我还想在图外的页边空白处添加一些文本 为了做到这一点 我需要关闭剪辑 这会导致超出范围的值被绘制在绘图区域之外的边
  • 替换为 NA

    我有一个包含条目的数据框 看来这些值没有被视为 NA 因为 is na 返回 FALSE 我想将这些值转换为 NA 但找不到方法 Use dfr dfr
  • 为 PDF 输出添加 natbib 选项

    有没有办法指定natibib输出 PDF 时的选项bookdown 我希望 tex 输出具有命令 usepackage sort compress natbib 但似乎没有任何方法可以在 YAML 中指定它 我无法将命令添加到我的序言中 因
  • 使用梯度下降(最速下降)估计线性回归

    示例数据 X lt matrix c rep 1 97 runif 97 nrow 97 ncol 2 y lt matrix runif 97 nrow 97 ncol 1 我已经成功创建了成本函数 COST lt function th
  • 在 RStudio 控制台中显示西里尔字母

    我在 Rstudio 控制台中显示俄语字符时遇到问题 我使用 readxl 包加载带有俄语的 Excel 文件 西里尔字母在数据框中正确显示 但是 如果我运行一个输出包含变量名称的函数 RStudio 控制台将显示符号而不是正确的西里尔字符
  • 为闪亮的应用程序创建桌面图标

    当我在基本 R 提示中提供以下代码时 我会在浏览器中打开一个闪亮的应用程序 shiny runApp C Myapp 我使用 Windows 7 我试图创建一个桌面图标 以避免我的客户每次想要使用该应用程序时都键入上述代码 我创建了一个桌面
  • 使用 dplyr 和 ggplot 绘制包括负值的多面水平发散堆积条形图

    我希望这个例子能够让人清楚 我想要堆叠条形 其中中间条形跨越 0 因为它代表中性值 这与李克特量表一起使用 为了重现性 我使用钻石数据集 以下示例与我的用例足够接近 并演示了我很难以正确的顺序获取 好 或 正 数据 因此中性最接近 0 这是
  • 两个闪亮的操作按钮

    我正在编写一个闪亮的函数 其中包含两个操作按钮 这两个按钮是左右按钮 单击时可以帮助绘图移动 第一次单击时 这两个按钮都工作正常 当我重新单击它们时 就会出现问题 无论我单击哪个按钮 它都会在两个范围之间来回弹跳 我猜可能是 右 和 左 按
  • Sweave 缓存包

    我正在尝试编写一份报告 我的问题是每次我编译 R 时都会加载我在报告中使用的包 如 ggplot2 MASS cubature 这是非常耗时的 有没有办法查包裹 I found 缓存编织但它不起作用 这是我在 sweave 文件中添加的块
  • 在 R 中使用科学记数法和 xtable

    我将 data frame 传递给 xtable dat table lt xtable dat 1 20 digits 10 我宁愿使用科学记数法 而不是像那样显示数字 我该怎么做呢 看过了 但我发现的只是R 格式化xtable中的数字
  • ggplot2:图例中的斜体

    我正在尝试编辑图例中的标签 以便第一个标签 WT 为纯文本 而后续 7 个标签为斜体 我一直在使用element text face c plain rep italic 7 但这导致没有任何标签被转换为斜体 我有点困惑为什么它不起作用 因
  • 生成与现有变量具有预定义相关性的二进制变量

    对于模拟研究 我想生成一组随机变量 连续变量和二元变量 这些变量与已经存在的变量具有预定义的关联binary变量 此处表示为x 对于这篇文章 假设x是按照下面的代码生成的 但请记住 在现实生活中 x是一个已经存在的变量 set seed 1
  • R 中的微秒时间戳

    在 CSV 文件中 我有几列 其中一列有时间戳 其中每个时间戳是今天午夜经过的微秒 每个 csv 文件仅包含一天内的数据 因此这并不含糊 我的问题是 如何将这些微秒时间戳解析为 R 多谢 我的 CSV 文件的一部分 34201881666
  • 修改x轴刻度标签

    我正在尝试更改由生成的箱线图的 x 轴刻度标签ggplot2 x 轴是一个分类变量 HabFac 我想要的是将其刻度更改为 6 个化学品 A E 下面是我的代码 raw data read table Read data p TT ggpl

随机推荐

  • 使用 Jersey 客户端在 POST 中发送名称值对

    我如何将名称值对作为正文传递给泽西岛的 POST ReST 服务 类似于下面使用 Apache Commons PostMethod 的代码 final PostMethod post new PostMethod url post set
  • 为什么正则表达式的运行时间可以呈指数级增长?

    可以编写在某些情况下需要指数运行时间的正则表达式 这样的例子是 aa aa 如果有奇数个输入a它需要指数级的运行时间 测试这个很容易 如果输入仅包含as 且长度为 51 正则表达式需要几秒钟的时间来计算 在我的机器上 相反 如果输入长度为
  • Rails activerecord:总和、最大值和连接

    我有两个型号users and posts 用户可以投票和查看帖子 users id name posts id count votes count views users id created at updated at 我想要的是过去
  • 向 Array 类添加新方法

    我对数组对象有一个新的要求 所以我需要将自己的方法添加到内置 Array 类中 如何添加新方法 以便无论我创建什么 Array 对象 它也将具有我的实例方法 Use 红宝石公开课 http rubylearning com satishta
  • 在 Windows 7 的 XAMPP 1.8.3 上运行 ImageMagick

    我已经尝试了几个小时让 ImageMagick 在我的本地主机上运行 在 Windows 7 上运行 XAMPP 1 8 3 我已经检查并尝试了在该网站上找到的所有解决方案以及其他数十个解决方案 什么都不起作用 无论我尝试哪种 ImageM
  • 安装 SubGit 存储库时跳过修订

    我在用着SubGit http subgit com 克隆 SVN 存储库 修订版本中的某个位置是某个标记的 副本 当 SubGit 加载每个修订版本时 需要很长时间才能获取这个特定标签 而该标签恰好是 的副本 这会阻止复制 我尝试设置mi
  • Jquery,隐藏和显示第n项之后的列表项

    假设我有一个无序列表 如下所示 ul li One li li Two li li Three li li Four li li Five li ul 我如何使用 JQuery 隐藏最后 2 个列表项并在那里有一个 显示更多 链接 这样当单
  • “运算符=必须是非静态成员”是什么意思?

    我正在创建一个双链表 并重载了运算符 以使列表等于另一个 template
  • 如何在 spring-security-javaconfig 中添加访问拒绝处理程序

    我正在使用 spring security javaconfig 库来实现 Spring Security 如果我使用 xml 配置文件 我会使用类似这样的内容来定义自定义 拒绝访问 页面
  • JavaFX 模态窗口对 Swing 的所有权

    我有一个基于 Swing 构建的应用程序 并与 JavaFX 集成 Swing 的 JFrame 是顶层窗口 JFXPanel 包含不同的 JavaFX 控件 现在 我还集成了 JavaFX 的新警报 API 目前在显示时设置警报的所有权时
  • 使用 zsh 对于大型 /.ssh/config 文件自动完成速度较慢

    我目前有一个 ssh config 文件 其中约有 7000 行 我想看看是否有办法加快 zsh 中的自动完成功能 当我开始输入我想要 ssh 进入的服务器然后按TAB它需要大约 10 秒的时间来向我显示我可以选择的可能的主机 问题是完成
  • 推荐的最低 Android 应用 SDK

    我正在制作一个 Android 应用程序 想知道业界对支持旧版 Android 版本 如 GingerBread 和 FroYo 的想法是什么 像我这样的开发人员是否应该采取额外的步骤来使我的应用程序与这些旧版本兼容 或者它们是否已过时 我
  • 如何从主窗口调用异步方法?

    所以我写了一个快速的async方法将一些数据放入DataTable来自 Oracle 数据库 我该怎么称呼这个MainWindow 不阻塞UI线程 这async wait模型在那里并没有多大意义 async Task
  • Facebook JavaScript SDK:FB.ui 打开一个弹出窗口

    我试图在 facebook iframe 应用程序中使用以下代码显示 发布到您的墙 提要对话框 div div
  • 增加 parallel.foreach 范围之外的计数值

    如何增加parallel foreach 循环范围之外的整数值 同步对并行循环之外的对象的访问的最简单方法是什么 var count 0 Parallel ForEach collection item gt action item inc
  • 在 Xcode 中查找方法引用

    Xcode 中有没有办法找到调用方法或属性的所有位置 例如 在 Eclipse 中 您可以右键单击一个方法并选择查找参考资料 Xcode中有类似的东西吗 选择您感兴趣的方法 或将文本光标置于其中 通过编辑器左上角的图标打开 相关文件 菜单
  • 使用链表压栈操作失败

    我正在尝试使用单个链表创建堆栈 我的推送操作不会将数据插入链表 这是我到目前为止所尝试过的 typedef struct element int data struct element next node 推送方法 void push no
  • 在欧几里得空间中嵌入图

    我有一个总无向图 其中节点表示平面上点上的点 边是点之间的近似欧几里德距离 我想将此图 嵌入 到二维空间中 也就是说 我想将每个顶点转换为 x y 位置元组 以便对于任意两个两个顶点 v 和 w 边 v w 的权重接近 dist v w 例
  • 如何保持指针之间的 const 正确性?

    我试图对一个真正 const 的类进行 const 操作 它不会更改该类指向的数据 例如 class Node public int val class V public Node node what is the change that
  • 如何让 doSMP 与 plyr 完美配合?

    这段代码的工作原理 library plyr x lt data frame V c X Y X Y Z Z 1 5 ddply x V function df sum df Z parallel FALSE 虽然此代码失败 library