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

R 如何在列表中方便地指定矩阵列?,r,list,matrix,R,List,Matrix,当计算列表ls1的矩阵列平均值时,是否有方法定义整列(如第2列)而不是单元格?直觉上,我尝试了诸如sappy(ls1,“[”,[,2]),sappy(ls1,“[”,“[”,2),或者sappy(ls1,c(“[”,“[”,2))之类的东西,但都不起作用 ls1 <- list(matrix(seq(1,16), ncol = 4), matrix(seq(17,32), ncol = 4), matrix(seq(33,48), ncol

当计算列表
ls1
的矩阵列平均值时,是否有方法定义整列(如第2列)而不是单元格?直觉上,我尝试了诸如
sappy(ls1,“[”,[,2])
sappy(ls1,“[”,“[”,2)
,或者
sappy(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

ls1我们可以使用
lappy
而不是
sapply
来获得此结果,因为参数略有不同,即
lappy
中的参数很少,以确保可以按参数顺序进行索引

colMeans(do.call(cbind, lapply(ls1, "[", ,2)))
当有疑问时,匿名函数可能会有所帮助

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