如何计算来自多个列表的向量平均值?

5

我有几个包含向量的列表,我想要获得一个单独的列表,其中的元素是初始列表中向量的平均向量。

例如:两个初始列表

lt1 <- list(a = c(1,2,3), b = c(2,5,10))
lt2 <- list(a = c(3,4,5), b = c(4,5,2))

我希望获得

lt12 <- list(a = c(2,3,4), b = c(3,5,6))

我尝试使用lapply和llply,但最终我总是得到每个列表向量的平均值。

1
mapply(function(a,b) colMeans(rbind(a, b)), lt1, lt2, SIMPLIFY=F) 可能会有所帮助。 - Rorschach
1个回答

2
你可以使用Map()将向量合并,然后在结果列表上运行rowMeans()
lapply(Map(cbind, lt1, lt2), rowMeans)
# $a
# [1] 2 3 4
#
# $b
# [1] 3 5 6

或者使用lapply(Map(rbind, lt1, lt2), colMeans)的另一种方法。


非常感谢,这已经帮了我很多了。我还有一个问题。我的初始列表也嵌入到一个列表中。是否有一种方法可以传递来自此全局列表的列表,除了lapply(Map(rbind,lt [[1]],lt [[2]],... lt [[n]]))? - user34771
那听起来有点复杂,也许最好发布一个不同的新问题。 - Rich Scriven
我找到了答案:lapply(Reduce(function(x,y) Map(rbind, x, y),lt), colMeans) #其中lt=list(lt1,lt2) - user34771

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接