每个列表第i行的平均值

时间:2018-06-24 22:16:43

标签: r list dataframe

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

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,依此类推。我认为一些适用的方法是正确的方法,但是我不确定如何做到这一点。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您是对的,apply是解决方案之一。

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)) )