【发布时间】:2016-04-27 07:41:36
【问题描述】:
我有一个带有缺失值的向量a(缺失值为 5,可能还有更多缺失值)。
我想并行创建上三角数据框(矩阵)s。
最终的数据帧s 应该是基于b 上的a 索引:
> s
1 2 3 4 6
1 22 32 42 52 82
2 0 42 52 62 92
3 0 0 62 72 102
4 0 0 0 82 112
6 0 0 0 0 142
我使用以下代码:
library(foreach)
library(doParallel)
b<-c(11,21,31,41,61)
a<-c(1,2,3,4,6)
N<-length (a)
cl<-makeCluster(4)
registerDoParallel(cl)
#loop
#result is a list of vectors
s <- foreach(i=a) %:%
foreach(j=i:N, .combine='c') %dopar% {
as.numeric(b[i]+b[j]) }
stopCluster(cl)
s <- t(vapply(s, function(x) {
x <- rev(x)
length(x) <- N
rev(x)
}, FUN.VALUE = numeric(N)))
s[lower.tri(s)] <- 0
【问题讨论】:
标签: r foreach dataframe doparallel