2016-09-25 59 views
0

我想在列表中總結多列矩陣,只顯示總和而不顯示(計算)輸入列(類似於我在數據框上的former question)。感謝以前的答案,但是我努力在矩陣上實現這些想法。下面一個例子:R:如何在列表中對多列矩陣求和?

ls <- list(matrix(c(1, 5, 3, 2), ncol=4), matrix(c(NA, 2, 7, 9), ncol=4)) 
countries <- c("a", "b", "c", "d") 
ls <- lapply(ls, "colnames<-", countries) 

我預期的結果是:

[[1]] 
    c new 
[1,] 3 8 

[[2]] 
    c new 
[1,] 7 11 

任何想法如何做到這一點的列求和?由於

+0

你能解釋一下,請您所需的輸出?你爲什麼要保留「c」列?這與原來的問題有什麼不同? 200列的期望輸出是多少? –

+0

c只是一個例子..我有國家列,我想添加到地區。唯一的區別是我之前詢問了數據框,現在是矩陣。 –

回答

1

嘗試以下:

calc <- c("a", "b", "d") 
keep <- "c" 

lapply(ls, function(i){ 
    cbind(i[, keep, drop = FALSE], 
     new = rowSums(i[, calc, drop = FALSE], na.rm = TRUE)) 
    }) 
+0

正常工作的例子。然而,cbind(i [,「c」...(特別是「c」)不適合我的數據,因爲我有> 200列。因此,我需要一個通用的解決方案,而不用命名柱。 –

+0

@ N.Varela然後你可以保留「c」作爲變量以及外部lapply? – zx8754

+0

@ N.Varela我認爲你的例子並不代表你正在努力實現的目標,請讓你的數據更「真實」並顯示「真實」的計算邏輯 – zx8754