3

数据集

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不返回“意思”列表

提前谢谢了

4

1 回答 1

3

根据?mean,用法是

mean(x, ...)

在 中mapply,我们有 'x' 和 'y',所以我们可以将相应的list元素连接成一个 'x' 然后取mean

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

如同,

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

如果我们使用apply函数组合,我们可以连接 with Map,然后循环list元素 withsapply以获得mean

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

或者如果元素的个数相同,我们可以使用lengths,因为输出是没有的listcolMeansmapply/cmatrixSIMPLIFY=FALSE

colMeans(mapply(c, firstList, secondList)) 
#a b 
#5 8 
于 2015-09-19T09:36:48.443 回答