2016-04-14 87 views
0

如果我有多個矩陣狀查找其矩陣行具有最高列總和

mymat <- matrix(c(1,2,3,8,6,1,1,3,1) , nrow=3, ncol=3) 
matrix_list <- replicate(2, mymat) 
column_sums <- colSums(matrix_list) 

這讓我發現,連續兩個具有最高的總和,但我將如何創建一個告訴我,行中的兩個有一個代碼兩個矩陣中的最高總和?所以它會給我看一個2,2的矢量。我試過這個

for(i in 1:2) { 
S <- max(matrix_list[i, ]) 
} 

但是這不是做這項工作。任何幫助,將不勝感激。

+1

'申請(column_sums,2,which.max)'? – Sotos

+3

請注意,您沒有'matrix_list'中的矩陣列表,您有一個3x3x2陣列。也許你打算在'replicate()'中使用'simplify = FALSE'。 –

+0

這工作得很好,如果你喜歡,你可以讓你的評論另一個答案。 – Killian

回答

4
apply(column_sums, 2, which.max) 
#[1] 2 2 
2

我們可以用max.col

max.col(t(column_sums), "first") 
#[1] 2 2 
+0

這很好。 't(column_sums)'的意義是什麼? – Killian

+0

@Killian'max.col'返回每行最大值的索引。所以,通過轉置它,我們得到了該索引。你可以檢查'column_sums'這是一個2列矩陣的輸出。如果我們不使用轉置使用它,它會爲矩陣的每一行返回3個值。 – akrun