我有如下兩個列表:如何計算的兩個列表平均值爲每行
l1 <- list(a=1, b=2, c=3)
l2 <- list(a=4, b=5, c=6)
我想計算兩個列表的每一行的平均值和結果分配到一個新的列表。如下所示:
l3 <- mean(l1, l2)
我該如何在R中實現這一點?
我有如下兩個列表:如何計算的兩個列表平均值爲每行
l1 <- list(a=1, b=2, c=3)
l2 <- list(a=4, b=5, c=6)
我想計算兩個列表的每一行的平均值和結果分配到一個新的列表。如下所示:
l3 <- mean(l1, l2)
我該如何在R中實現這一點?
我們可以使用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
如在後
apply(cbind(do.call(rbind,l1),do.call(rbind,l2)),1, mean)
提到的OP使用:
colMeans(do.call(rbind.data.frame, list(l1,l2)))
給:
a b c
2.5 3.5 4.5