0
我有一个缺失值的矢量a
(缺失值为5,可能有更多缺失值)。 我想创建上三角形数据帧(矩阵)s
并行。 最终的数据帧s
应该是基于a
指数b
:在R中缺失值的平行上三角形数据帧(矩阵)
> 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
谢谢,但我不希望建立在事先整个矩阵由于代码回路内的复杂性。我想创建它,如示例中所示,不添加行和列。在我的示例代码中,行只有在行中可以更改。 – Avi
@Avi请参阅更新。 –
再次感谢。它看起来好多了,但我需要并行执行(使用foreach),另外,而不是'+',有一个复杂的代码依赖于i和j循环值。请参考我附带的例子。 (另外,我使用'a'作为矢量,并将它用作x) – Avi