Combine/merge lists by elements names

You can do: keys <- unique(c(names(lst1), names(lst2))) setNames(mapply(c, lst1[keys], lst2[keys]), keys) Generalization to any number of lists would require a mix of do.call and lapply: l <- list(lst1, lst2, lst1) keys <- unique(unlist(lapply(l, names))) setNames(do.call(mapply, c(FUN=c, lapply(l, `[`, keys))), keys)