在并行foreach中使用S4对象类

在并行foreach中使用S4对象类,r,foreach,s4,R,Foreach,S4,我有以下代码,可以工作: library(foreach) cl <- makeCluster(2) registerDoSNOW(cl) foreach(i = unique(iris$Species), .verbose = T , .multicombine = TRUE, .packages = c("data.table"), .export = "jsonEntityField") %do% { subset <- iris[Species %

我有以下代码,可以工作:

library(foreach)
cl <- makeCluster(2)

registerDoSNOW(cl)


foreach(i = unique(iris$Species), .verbose = T , .multicombine = TRUE,  .packages = c("data.table"),
        .export = "jsonEntityField") %do% {
  subset <- iris[Species %in% i]
  candToEntityList(subset)
}

stopCluster(cl)
这些
jsonEntityObjects
用于组成json字符串。 到目前为止还不错,但是当尝试使用
%dopar%
更改
%do%
以使其并行时,我得到了错误:

Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : 
  unable to find variable "jsonEntityField"
如果删除
导出
,则会显示错误:{:task 1 failed-“jsonetityfield”中的
错误不是已定义的类“


有人知道发生了什么吗?

setClass
是S4,而不是S3!错误“找不到变量”是不相关的。每当您显式导出无效的对象名时(使用doSNOW后端时),就会发生此错误。您是否可以启动一个干净的R会话并重现错误,然后显示
ls()的结果
setClass
是S4,而不是S3!错误“找不到变量”是无关的。每当您显式导出无效的对象名时(使用doSNOW后端时),就会发生此错误。您是否可以启动一个干净的R会话并重现错误-然后显示
ls()的结果?
Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : 
  unable to find variable "jsonEntityField"