如何在R中对列表元素应用mean函数

16

我有一个列表,想用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
如果你在列表的单个元素上使用 lapply,那么你将会对向量的每个元素取平均值。请改用 lapply(list, mean)。此外,使用 list 作为变量名是一个不好的主意,因为它是一个重要的函数! - Justin
2个回答

15
要获取列表第7个元素的平均值,只需使用mean(list[[7]])。 要获取列表每个元素的平均值,请使用lapply(list,mean)。 而将您的列表命名为list是一个非常糟糕的主意。

谢谢 :) 我也会更改名称 - hora
如果您认为这个答案提供了您所寻找的足够描述,请随意勾选下面得分旁边的灰色勾号以接受它。 - Roman Luštrik

12

考虑使用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包。 这个问题也很好地解释了不同的 *apply 函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接