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]]
}