所以我有一個表m
,由隨機數的行和列組成。 (可以是任意大小)...嵌套的while循環 - R
我想這樣做對各行/列總計這樣計算:
r[i] * c[j]/n;
凡r <- rowSums(m);
,c <- colSums(m);
和n <- sum(m);
我可以用雙做for循環,但我希望現在使用while循環來實現它。
我不打算使用循環,但似乎表大小可以不同,我認爲這也是明智的。
我正在存儲每個值,因爲它在test
向量中找到。
這是我的嘗試,但我搞亂了指數:
while(i < nrow(m)){
while(j < ncol(m)){
test[i] <- r[i]*c[j]/n;
j=j+1;
i=i+1;
}
j=j+1;
i=i+1;
}
任何指導,幫助我理清我的循環,將不勝感激。提前致謝。
更新
請參見下面的示例和預期的結果:
m <- t(matrix(c(28,48,10,114), nrow=2, ncol=2));
r <- rowSums(m); #76 124 (sum of rows)
c <- colSums(m); #38 162 (sum of cols)
n <- sum(m); #200 (sum of all cells)
test <- c(0, times length(m)); #empty vector/data frame
#inside while loops, calc for each r and c indice:
test[1] <- 76 *38 /200 #first calc to test[i] where i=1
test[2] <- 124*38 /200
test[3] <- 76*162 /200
test[4] <- 124*162/200 #last calc to test[i] where i==length(m)
也許,'outer'在這裏可能很有用。像'outer(r,c,function(x,y)x * y/n)' –
可以用預期的輸入/輸出添加一個實際的例子嗎?由於R是矢量化的,只要運行'r * c/n'就會將行總和與相應的列和相加,然後除以總和......當你說三行十列時你想要發生什麼還不清楚...數據如何回收? – Chase
我已經添加了一個例子。我希望這可以讓我更清楚自己想要達到的目標。感謝發佈。 PS。所有行總數(無論是3還是500)都需要按照列總數(無論是3還是500)進行計算。 – Reanimation