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

时间:2017-05-29 11:46:49

标签: r

我有两个列表如下:

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

我想计算每行的两个列表的平均值,并将结果分配给新列表。如下所示:

l3 <- mean(l1, l2)

我如何在R?

中实现这一目标

3 个答案:

答案 0 :(得分:4)

使用:

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

给出:

  a   b   c 
2.5 3.5 4.5 

答案 1 :(得分:2)

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

答案 2 :(得分:2)

我们可以使用Map

Map(function(x,y) mean(c(x,y)), l1, l2)

map2

中的purrr
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作为帖子中提到的OP