如何平均R中列表中的元素组?

时间:2016-03-17 01:14:39

标签: r list average

在R中,我列出了10个元素,例如:

n <- c(5,5,5,5,5,6,6,6,6,6)

我想创建另一个列表,其中包含2个元素,其中每个元素将是上一个列表中5个元素的平均值。因此,其他列表应如下所示:

5,6

在R中有快速的方法吗?我想要的是一个列表,它给出了第一个X元素的平均值,第二个X元素的平均值等等。在这个例子中,初始列表有10个元素,我想将它们分组为5.所以我想计算一个列表,其中第一个元素是前5个元素的平均值,第二个元素是最后5个元素的平均值。

2 个答案:

答案 0 :(得分:3)

投射你的价值向量

x = rnorm(50 * 10)

进入矩阵并采用列意味着

colMeans(matrix(x, 50))

更一般地说,创建一个描述数据分区方式的向量

f = rep(seq_len(10), each=50)

split()您的数据,lapply()每个组的功能,并结合(在这种情况下为unlist())结果

unlist(lapply(split(x, f), mean))

以两个(例如sapply(split(x, f), mean))或一个(例如,tapply()by()ave())步骤执行此操作。

答案 1 :(得分:2)

正如您所提到的,您的原始列表有500个名称。这是一种方法:

x <- runif(500)
list_x <- split(x, ceiling(seq_along(x)/50))

# find the mean in each group of 50
colMeans(as.data.frame(list_x))

10个元素:

y <- c(rep(5, 5), rep(6, 5))

list_y <- split(y, ceiling(seq_along(y)/5))
colMeans(as.data.frame(list_y))