数据集
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
输出的是没有matrix
的SIMPLIFY=FALSE
colMeans(mapply(c, firstList, secondList))
#a b
#5 8