我有一个列表,此列表中的每个元素都是一个向量并且长度相同。我想计算每个向量的所有第一个元素的平均值(或其他值,它可以是用户定义的函数),每个向量的所有第二个元素的平均值(或其他值,它可以是用户定义的函数)等等。返回一个向量。所以这与问题How to sum a numeric list elements in R不同。以下代码给了我我想要的东西,但是,有没有更有效和最复杂的方法来做到这一点?感谢。
list1 <- list(a=1:5,b=2:6,c=3:7)
result <- numeric(length(list1[[1]]))
for(i in 1:length(list1[[1]])){
result[i] <- mean(c(list1[[1]][i],list1[[2]][i],list1[[3]][i])) #the function can be any other function rather than mean()
}
答案 0 :(得分:4)
以下是使用Reduce
功能的选项:
Reduce("+",list1)/length(list1)
[1] 2 3 4 5 6
答案 1 :(得分:1)
如何将它们全部放在矩阵中,然后计算列的平均值?
colMeans(do.call(rbind, list1))
[1] 2 3 4 5 6