"Error in checkForRemoteErrors(val) : 2 nodes produced errors; first error: could not find function "wincrqa"

"Error in checkForRemoteErrors(val) : 2 nodes produced errors; first error: could not find function "wincrqa"

我目前正在尝试 运行 使用以下代码的并行化 RQA。

library(snow)
library(doSNOW)
library(crqa)
    my_wincrqa = function(x, y){
      wincrqa(x, y, windowstep = 1000, windowsize = 2000,
              radius = .2, delay = 4, embed = 2, rescale = 0, normalize = 0,
              mindiagline = 2, minvertline = 2, tw = 0, whiteline = F,
              side = "both", method = "crqa", metric = "euclidean", datatype = "continuous")
    }
cl<-makeCluster(11,type="SOCK")
start_time <- Sys.time()
WCRQA_list = clusterMap(cl, my_wincrqa, HR_list, RR_list)
end_time <- Sys.time()
end_time - start_time

不幸的是,我明白了:“

Error in checkForRemoteErrors(val) : 2 nodes produced errors; first error: could not find function "wincrqa"

我知道设置并行处理时可能存在求和错误,但我无法解决。我还使用 parallel() 包尝试了类似的事情。

我很高兴能得到任何帮助!

最好的, 约翰逊

问题是您已经在主执行环境中加载并附加了“crqa”包,但集群节点是 运行 单独、隔离的 R 会话中的代码——它们看不到相同加载的包或全局变量!

最简单的解决方案是将 wincrqa 的使用替换为完全限定名称,即在您的函数中使用 crqa::wincrqa

或者,可以在执行函数之前在所有集群节点上附加“crqa”包:

clusterEvalQ(cl, library(crqa))
WCRQA_list = clusterMap(cl, my_wincrqa, HR_list, RR_list)