【问题标题】:The mean over the i-th row of each list [duplicate]每个列表的第 i 行的平均值 [重复]
【发布时间】:2018-06-24 22:16:42
【问题描述】:

我没有找到类似的问题。让我们假设我有以下列表

a <- data.frame(number=1:10)
dat <- list(a, a*2, a*3)

   number
1       1
2       2
3       3
4       4
5       5
6       6
7       7
8       8
9       9
10     10

[[2]]
   number
1       2
2       4
3       6
4       8
5      10
6      12
7      14
8      16
9      18
10     20

[[3]]
   number
1       3
2       6
3       9
4      12
5      15
6      18
7      21
8      24
9      27
10     30

我想知道计算每一行的平均值。所以第一个应该是 (1+2+3)/3 第二个应该是 (2+4+6)/3 等等。我认为 apply 家族的某些东西是正确的方法,但我不知道该怎么做。

【问题讨论】:

    标签: r list dataframe


    【解决方案1】:

    我假设您想从dat 中的所有data.frames 中逐行计算值的平均值?假设所有data.frames 具有相同的维度,您可以这样做

    rowMeans(data.frame(dat))
    # [1]  2  4  6  8 10 12 14 16 18 20
    

    【讨论】:

    • 需要一个带有列表的解决方案,因为这是一个非常程式化的例子
    • @rook1996 dat list;只需重铸为data.frame,然后使用rowMeans;这适用于data.frames 的list
    【解决方案2】:

    你是对的,sapply 是解决方案之一。

    a <- c(number=1:10)
    dat <- list(a, a*2, a*3)
    sapply(dat, function(x) mean(head(x, 3)) )
    
    
    
    a <- data.frame(number=1:10)
    dat <- list(a, a*2, a*3)
    sapply(dat, function(x) mean(head(x[,1], 3)) )
    

    【讨论】:

    • 出现错误
    • 那是因为,数据是data.frame,编辑后的答案
    猜你喜欢
    • 2022-11-10
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2018-06-17
    • 2016-04-20
    相关资源
    最近更新 更多