list_transpose_bind <- function(x) { purrr::reduce(x, list_transpose_bind_impl) } list_transpose_bind_impl <- function(x, acc) { if (!length(x)) return(acc) for (name in names(x)) { if (!name %in% names(x)) { acc[[name]] <- x[[name]] } else { acc[[name]] <- dplyr::bind_rows(acc[[name]], x[[name]]) } } acc }