在计算列表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
答案 0 :(得分:1)
我们可以使用lapply
来代替sapply
,因为参数略有不同,即lapply
中的参数很少,以确保索引可以按参数的顺序完成< / p>
colMeans(do.call(cbind, lapply(ls1, "[", ,2)))
如有疑问,匿名功能可能会有所帮助
colMeans(sapply(ls1, function(x) x[,2]))