【问题标题】:How to apply mean function over elements of a list in R如何在R中的列表元素上应用平均函数
【发布时间】:2012-11-01 10:38:34
【问题描述】:

我有一个列表,我想使用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

【问题讨论】:

  • 如果您在列表的单个元素上使用lapply,您将取向量中每个元素的平均值。请改用lapply(list, mean)。此外,使用list 作为变量名是个坏主意,因为它是一个重要功能!

标签: r list lapply


【解决方案1】:

考虑使用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 函数

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 谢谢 :) 我也会改名
    • @hora 如果您认为此答案为您提供了对您正在寻找的内容的充分描述,请随时通过检查分数下方的灰色复选标记来接受它是正确的。
    猜你喜欢
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2016-08-23
    • 2021-09-30
    • 2020-07-12
    相关资源
    最近更新 更多