r - R - cpv (trotter package) 和 %dopar%
问题描述
我想知道cpv
trotter 包中的功能是否适用%dopar%
?我收到以下错误:
任务 1 失败 - “'S4' 类型的对象不是子集”
这是一个小例子:
library(doParallel)
library(trotter)
registerDoParallel(cores = 2)
x <- letters
combos <- cpv(2, 1:4)
print(combos)
num_combos <- length(combos)
results_list <- foreach(combo_num=1:num_combos) %dopar% { # many iterations
y <- x[combos[combo_num]]
# time consuming stuff follows that involves using y
}
替换%dopar%
为%do%
(或简单地使用 for 循环),它工作正常。
解决方案
根据集群类型,需要通过.packages
参数明确指定使用的包。以下应该有效:
library(doParallel)
library(trotter)
cl <- makePSOCKcluster(2)
registerDoParallel(cl=cl)
x <- letters
combos <- cpv(2, 1:4)
num_combos <- length(combos)
rl <- foreach(combo_num=1:num_combos, .packages="trotter") %dopar% {
x[combos[combo_num]]
}
推荐阅读
- r - 如何将 spearman Rho stat 附加到新对象?
- c++ - 将 set 函数(setter)标记为 constexpr 的目的是什么?
- java - 在写入共享资源之前获取 WriteLock
- c# - 乘以 @Html.DisplayFor(modelItem => item.gheimatkol) 值
- c# - C# 创建带有转义的 HTML 行
- reporting-services - 将 RDL 报告上传到 SSRS,不包括用户凭据
- ruby - Ruby Net::OpenTimeout 调用“puts”,奇怪的堆栈跟踪。多线程应用
- latex - 在 Lyx 中启用 shell-escape 时删除警告
- django - 有没有办法总是按 django-tables2 中的特定列对表进行排序?
- amazon-ec2 - Ubuntu 上的 Hyperledger composer CLI 安装问题