数据集

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”的原因,我也将不胜感激。

提前谢谢了

最佳答案

根据?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函数的组合,则可以与Map串联,然后将list元素与sapply循环以获取mean
sapply(Map(c, firstList, secondList), mean)
# a b
#5 8

或者,如果lengths元素的list相同,我们可以使用colMeans,因为mapply/c输出的是没有matrixSIMPLIFY=FALSE
colMeans(mapply(c, firstList, secondList))
#a b
#5 8

10-04 21:52