微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“checkForRemoteErrors(val) 中的错误:2 个节点产生错误;第一个错误:找不到函数“wincrqa”

如何解决“checkForRemoteErrors(val) 中的错误:2 个节点产生错误;第一个错误:找不到函数“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

不幸的是,我明白了:“

checkForRemoteErrors(val) 中的错误:2 个节点产生错误;第一的 错误:找不到函数“wincrqa”

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

我很高兴得到任何帮助!

最好的, 约翰逊

解决方法

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。