如何合并具有相同列名的列表以获得它们的联合

N08*_*N08 8 r list nested-lists

假设我有N个列表,它们都具有相同的列名.我想合并这些,以便我得到一个具有相同列的结果列表,但现在包含所有N列表中的条目.这是一个显示我想要的MWE:

  ls<-list()
ls[[1]]<-list("a"=1,
              "b"=2)
    ls[[2]]<-list("a"=3,
                  "b"=4)

#how to write a one-liner that produces lsTotal, which is the union of ls[[1]] and ls[[2]]?

lsTotal<-list("a"=c(1,3),
              "b"=c(2,4))  
Run Code Online (Sandbox Code Playgroud)

我发现了这个线程,我可以使用它Map(c, ls[[1]], ls[[2]]).然而,如果ls很长的话,写出来是很乏味的.有捷径吗?

akr*_*run 7

一种选择是 tidyverse

library(purrr)
library(dplyr)
transpose(ls) %>%
        map(unlist)
Run Code Online (Sandbox Code Playgroud)

或者使用Mapdo.call

do.call(Map, c(f=c, ls))
#$a
#[1] 1 3

#$b
#[1] 2 4
Run Code Online (Sandbox Code Playgroud)