R - cpv(猪蹄包)和 %dopar%
R - cpv (trotter package) and %dopar%
我想知道 trotter 包中的 cpv
功能是否可以与 %dopar%
一起使用?我收到以下错误:
task 1 failed - "object of type 'S4' is not subsettable"
这是一个小例子:
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]]
}
我想知道 trotter 包中的 cpv
功能是否可以与 %dopar%
一起使用?我收到以下错误:
task 1 failed - "object of type 'S4' is not subsettable"
这是一个小例子:
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]]
}