如何方便地指定列表中的矩阵列?

时间:2018-02-07 17:34:26

标签: r list matrix

在计算列表ls1的矩阵列平均值时,有没有办法定义整列(例如第2列)而不是单元格?我直观地尝试了sapply(ls1, "[", [, 2])sapply(ls1, "[", "[", 2)sapply(ls1, c("[", "["), 2)这样的内容,但它不会起作用。

ls1 <- list(matrix(seq(1,16), ncol = 4),
            matrix(seq(17,32), ncol = 4),
            matrix(seq(33,48), ncol = 4))

colMeans(sapply(ls1, "[", 5:8))
# [1]  6.5 22.5 38.5

1 个答案:

答案 0 :(得分:1)

我们可以使用lapply来代替sapply,因为参数略有不同,即lapply中的参数很少,以确保索引可以按参数的顺序完成< / p>

colMeans(do.call(cbind, lapply(ls1, "[", ,2)))

如有疑问,匿名功能可能会有所帮助

colMeans(sapply(ls1, function(x) x[,2]))