2017-05-29 4 views
1

Ich habe zwei Listen, wie unten Mittelwert von zwei Listen berechnen:Wie für jede Zeile

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

ich den Mittelwert der beiden Listen für jede Zeile und weisen das Ergebnis eine neue Liste berechnet werden soll . Wie unten:

l3 <- mean(l1, l2) 

Wie kann ich das in R erreichen?

Antwort

1

Wir verwenden Map

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

Oder mit map2 von purrr

purrr::map2(l1, l2, ~ mean(c(.x, .y))) 

Oder mit tidyverse

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

Oder eine andere Option ist

relist((unlist(l1) + unlist(l2))/2, skeleton= l1) 

HINWEIS: Alle Lösungen ein list als OP Rückkehr im Beitrag erwähnt

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

Verwendung:

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

gibt :

a b c 
2.5 3.5 4.5