数据集
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;
非常感谢提前
答案 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
或者,如果lengths
个list
元素相同,我们可以使用colMeans
,因为mapply/c
输出为matrix
而不SIMPLIFY=FALSE
}
colMeans(mapply(c, firstList, secondList))
#a b
#5 8