如何在data.frames列表上递归调用dplyr中的bind_行?

如何在data.frames列表上递归调用dplyr中的bind_行?,r,dplyr,R,Dplyr,我在R中有一个数据帧列表,我想将其绑定在一起。下面是一个例子: tmp <- list( list( list( data.frame(x = 1:5), data.frame(x = 6:10) ), list( data.frame(x = 11:15), data.frame(x = 16:20) )

我在
R
中有一个
数据帧列表,我想将其绑定在一起。下面是一个例子:

tmp <- list(
    list(
        list(
            data.frame(x = 1:5),
            data.frame(x = 6:10)
            ),
        list(
            data.frame(x = 11:15),
            data.frame(x = 16:20)
            )
    ),
    list(
        list(
            data.frame(x = 21:25),
            data.frame(x = 26:30)
            ),
        list(
            data.frame(x = 31:35),
            data.frame(x = 36:40)
            )
        )
    )

bind_rows(
    bind_rows(lapply(tmp[[1]], bind_rows)),
    bind_rows(lapply(tmp[[2]], bind_rows))
    )
tmp这个怎么样:

Reduce(dplyr::bind_rows, unlist(unlist(tmp, FALSE), FALSE)) 

#Source: local data frame [40 x 1]
#
#       x
#   (int)
#1      1
#2      2
#3      3
#4      4
#5      5
#6      6
#7      7
#8      8
#9      9
#10    10
#..   ...
尝试此函数::
bind_rows hadley的purr包有一个
flatte
函数,尽管我没有使用它。我在玩flatte<代码>展平(tmp)%%>%flatte%%>%bind_rows
将是一种方法。嗯,这不就是
数据帧(x=unlist(tmp))
对于你的例子吗?@jazzurro到目前为止,反复调用
flatte
似乎是最简单的解决方案。
bind_rows <- function(lst){
    if(class(lst[[1]]) == "data.frame") {
        return(data.table::rbindlist(lst))
    } else {
        bind_rows(unlist(lst, recursive = FALSE))
    }
}