数据集
firstList <- list(a = 1:3, b = 4:6)
secondList <- list(c = 7:9, d = 10:12)
我正在尝试使用mapply计算多个列表的平均值。
mapply(mean, firstList, secondList)
它没有起作用,是因为mean
只会按照其第一个参数的平均值进行计算,如在矩阵上使用mapply和mean函数中所述。
以下代码可以正常工作:
mapply(mean, firstList)
mapply(mean, secondList)
我随后尝试使用lapply
将一个列表一次传递给mapply
lapply(c(firstList, secondList), function(x) mapply(mean, x))
输出结果不是平均值,而是单独的列表。
我需要知道如何使用 mapply
计算多个列表的平均值。我也希望能解释一下为什么 mapply
没有返回列表的平均值。
非常感谢。
mean
中的参数有关,它只能接受x
,而使用mapply/Map
,您可以根据列表数量拥有 x、y 等。此外,如果有许多列表,而不是指定function(x,y,z, u)...
,您可以使用c
来连接所有相应的列表元素,然后使用sapply
获取mean
或者如果长度相同,则使用colMeans
。 - akrunlibrary(data.table); rbindlist(list(firstList, secondList))[, lapply(.SD, mean)]
。 - akrunc(firstList, secondList)
的输出,它是一个长度为 4 的列表。lapply
将循环遍历列表元素。每个列表元素都是一个向量。在该向量上应用mapply
就像再次循环每个单个向量元素,而进行mean
就是对单个值进行mean
。 - akrunlapply(c(firstList, secondList), function(x) mapply(mean, list(x)))
或者lapply(c(firstList, secondList), mean)
。 - akrun