使用mapply计算多个列表的平均值

时间:2015-09-19 09:30:59

标签: r mean lapply mapply

数据集

firstList  <- list(a = 1:3, b = 4:6)
secondList <- list(c = 7:9, d = 10:12)

我试图用mapply计算多个列表的平均值。

mapply(mean, firstList, secondList)

它不起作用,因为mean只按其平均第一个参数 Using mapply with mean function on a matrix

这是正常的:

mapply(mean, firstList)
mapply(mean, secondList)

然后我尝试lapply一次向mapply

提供一个列表
lapply(c(firstList, secondList), function(x) mapply(mean, x))

输出不是平均值,而是单个列表

我需要的是如何使用mean计算多个列表的mapply。我还要感谢解释为什么mapply没有返回列表'mean&#39;

非常感谢提前

1 个答案:

答案 0 :(得分:3)

根据?mean,用法是

mean(x, ...)

mapply中,我们有&#39; x&#39;并且&#39; y&#39;,因此我们可以连接相应的list元素以制作单个&#39; x&#39;然后选择mean

mapply(function(x,y) mean(c(x,y)), firstList, secondList)
#a b 
#5 8 

同样,

mean(c(1:3, 7:9))
#[1] 5

如果我们使用apply函数的组合,我们可以与Map连接,然后使用list循环sapply元素以获取mean }

sapply(Map(c, firstList, secondList), mean)
# a b 
#5 8 

或者,如果lengthslist元素相同,我们可以使用colMeans,因为mapply/c输出为matrix而不SIMPLIFY=FALSE }

colMeans(mapply(c, firstList, secondList)) 
#a b 
#5 8