我有一个a
缺失值的向量(缺失值为 5,可能还有更多缺失值)。我想s
并行创建上三角数据框(矩阵)。最终的数据帧s
应该是基于a
索引的b
:
> 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