我想出了一个奇怪的错误。假设我在一个名为 data 的列表中有 10 个 xts 对象。我现在使用每三个组合搜索
data_names <- names(data)
combs <- combn(data_names, 3)
我的基本目标是对这 1080 个三元组进行 PCA。为了加快速度,我想使用包doParallel。所以这是缩短到错误发生点的代码段:
list <- foreach(i=1:ncol(combs)) %dopar% {
tmp_triple <- combs[,i]
p1<-data[tmp_triple[[1]]][[1]]
p2<-data[tmp_triple[[2]]][[1]]
p3<-data[tmp_triple[[3]]][[1]]
data.merge <- merge(p1,p2,p3,all=FALSE)
}
在这里,合并功能似乎是问题所在。错误是
任务 1 失败 - “无法将类 'c("xts", "zoo")' 强制转换为 data.frame”
但是,当将 %dopar% 更改为正常的串行 %do% 时,一切正常。
直到现在我还没有找到任何解决这个问题的方法,我什至不确定要寻找什么。