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