2
我期待總結矩陣中所有可能的行組合。功能類似於rowSums()
功能,但不會產生nrow()
總和,它會產生nrow()^nrow()
總和。如何對Matrix中的所有行進行求和?
例如:
set.seed(10)
dummymat <- matrix(floor(runif(9, 0, 2)), nrow = 3, ncol = 3)
產生矩陣:
[,1] [,2] [,3]
[1,] 1 1 0
[2,] 0 0 0
[3,] 0 0 1
爲了找到該矩陣的每一個可能的行總和,下面的非常低效的代碼可以被寫成:
allrowsums <- c()
for(i in 1:nrow(dummymat)) {
firstcolval <- dummymat[i,1]
for(j in 1:nrow(dummymat)) {
secondcolval <- dummymat[j,2]
for(k in 1:nrow(dummymat)) {
thirdcolval <- dummymat[k,3]
rowsum <- firstcolval + secondcolval + thirdcolval
allrowsums <- append(allrowsums,rowsum)
}
}
}
這給出了以下輸出:
[1] 2 2 3 1 1 2 1 1 2 1 1 2 0 0 1 0 0 1 1 1 2 0 0 1 0 0 1
我可以爲更大的矩陣編寫更簡潔的代碼嗎?
感謝這個@Djork,你能想到如何使答案的動態,使得它可以處理任何柱長度的矩陣? (並且代碼不需要每次調整)。對於100列的矩陣,此答案的代碼也會變得相當長。 –
我編輯了答案來解決你的問題。如果這適用於您,請接受答案以標記它。 – Djork
謝謝@Djork,很抱歉成爲PITA,但由於看起來內存消耗,此解決方案無法處理更大的矩陣。嘗試使用'dummymat < - matrix(floor(runif(5000,0,2)),nrow = 1000,ncol = 5)' –