【发布时间】:2014-08-20 21:06:13
【问题描述】:
我有四个向量:
a<-c(1,2,3,4,5)
b<-c(2,3,4,5,6)
c<-c(3,5,6,7,2)
d<-c(5,7,3,7,2)
我想计算平均值以便得到:
average
2.75 4.25 4.00 5.75 3.75
谁能给我一个建议,告诉我如何做到这一点? 谢谢。
【问题讨论】:
-
如果你运行那几行代码,第四行会报错。
我有四个向量:
a<-c(1,2,3,4,5)
b<-c(2,3,4,5,6)
c<-c(3,5,6,7,2)
d<-c(5,7,3,7,2)
我想计算平均值以便得到:
average
2.75 4.25 4.00 5.75 3.75
谁能给我一个建议,告诉我如何做到这一点? 谢谢。
【问题讨论】:
mapply 的解决方案:
mapply(function(...) mean(c(...)), a, b, c, d)
Reduce 的解决方案:
l <- list(a,b,c,d)
Reduce(`+`, l) / length(l)
双sapply的解决方案:
l <- list(a,b,c,d)
sapply(seq_along(a), function(i) mean(sapply(l, function(x) x[i])))
【讨论】:
将它们放在一个矩阵中并使用rowMeans:
a<-c(1,2,3,4,5)
b<-c(2,3,4,5,6)
c1<-c(3,5,6,7,2)
d<-c(5,7,3,7,2)
rowMeans(matrix(c(a,b,c1,d), ncol=4))
## [1] 2.75 4.25 4.00 5.75 3.75
【讨论】: