2016-09-25 31 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