如何计算每行两个列表的平均值

3

我有以下两个列表:

l1 <- list(a=1, b=2, c=3)
l2 <- list(a=4, b=5, c=6)

我希望计算每一行两个列表的平均值,并将结果分配给一个新列表。如下所示:
l3 <- mean(l1, l2)

我该如何在R中实现这个功能?

3个回答

4

使用:

colMeans(do.call(rbind.data.frame, list(l1,l2)))

提供:

  a   b   c 
2.5 3.5 4.5 

2
apply(cbind(do.call(rbind,l1),do.call(rbind,l2)),1, mean)

2
我们可以使用Map
Map(function(x,y) mean(c(x,y)), l1, l2)

或者使用purrr中的map2函数。
purrr::map2(l1, l2, ~ mean(c(.x, .y)))

或者使用 tidyverse

library(tidyverse)
bind_rows(l1, l2) %>% 
      summarise_all(mean) %>%
      unlist() %>%
      relist(., skeleton = l1)

另一个选择是:
relist((unlist(l1) + unlist(l2))/2, skeleton= l1)

注意:所有解决方案都会返回一个列表,正如原帖中所提到的list

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