如何对R中列表的元素应用均值函数

时间:2012-11-12 23:27:08

标签: r list lapply

我有一个列表,我想使用lapply()来计算其元素的平均值。例如,对于列表的第七项,我有:

>list[[7]]
 [1] 1 1 1 1 1 1 1 1 1 1

我的输出应该是:

> mean(temp[[7]][1:10])
[1] 1

但是当我像下面这样使用lapply()时,结果会是另一回事。我该怎么办?

> lapply(list[[7]][1:10],mean)
[[1]]
[1] 1

[[2]]
[1] 1
.
.
.
[[10]]
[1] 1

2 个答案:

答案 0 :(得分:12)

要获得列表第7个元素的平均值,只需使用mean(list[[7]])。 要获得列表中每个元素的均值,请使用lapply(list,mean)。 拨打列表list是一个非常糟糕的主意。

答案 1 :(得分:7)

考虑使用sapply代替lapply

# sample data
a<- 1:3
dat <- list(a, a*2, a*3)

# sapply gives a tidier output
> sapply(dat, mean)
[1] 2 4 6

> lapply(dat, mean)
[[1]]
[1] 2

[[2]]
[1] 4

[[3]]
[1] 6



另外,您可能需要查看plyr包。 This question也很好地解释了不同的* apply函数