use*_*695 4 parallel-processing foreach r xts
我想出了一个奇怪的错误.假设我在名为data的列表中有10个xts对象.我现在使用搜索每三个组合
data_names <- names(data)
combs <- combn(data_names, 3)
Run Code Online (Sandbox Code Playgroud)
我的基本目标是在这些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)
}
Run Code Online (Sandbox Code Playgroud)
这里,合并功能似乎是问题所在.错误是
任务1失败 - "无法将类c("xts","zoo")强制转换为data.frame"
但是,当将%dopar%更改为正常序列%do%时,一切都可以接受.
直到现在我无法找到任何解决这个问题的方法,我甚至不确定要寻找什么.
Ada*_*son 10
更好的解决方案而不是在函数中显式加载库将是利用foreach()函数的.packages参数:
list <- foreach(i=1:ncol(combs),.packages=c("xts","zoo")) %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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2176 次 |
| 最近记录: |