R中将循环产生的数据框合并

作者: LeoinUSA | 来源:发表于2018-03-29 20:25 被阅读49次

    1.问题

    今天利用R写循环的时候出现了一个问题,循环内会产生多个数据框,希望将这多个数据库合并并生产一个最终的数据框,最后利用了list和do.call()功能进行了实现。

    2.解决

    例如假设我们有如下三个数据框

    df1 <- data.frame(cell=c(1,2,3),val=c(345,123,466))
    df2 <- data.frame(cell=c(67,3,2),val=c(234,234,56))
    df3 <- data.frame(cell=c(3,67,23),val=c(23,8,34))
    

    现在我们希望将这三个数据框进行合并:
    首先创建一个空list,利用get()将所有数据框写入,形成一个2维的list,然后利用do.call()进行合并。

    l <- list()
    
    for(i in 1:3){
      df.now <- get(paste0("df",i))
      l[[i]] <- df.now
    }
    
    do.call(rbind,l)
    

    最后结果是:

        cell val
    1    1 345
    2    2 123
    3    3 466
    4   67 234
    5    3 234
    6    2  56
    7    3  23
    8   67   8
    9   23  34
    

    3.总结

    这虽然是个小的track,但是在数据处理的时候有时会显得非常有用。

    相关文章

      网友评论

      • 董八七:相同的结果:
        l <- data.frame()
        for(i in 1:3){
        df.now <- get(paste0("df",i))
        l <- rbind(l, df.now)
        }
        LeoinUSA:谢谢,我把这个方法更新到文章中

      本文标题:R中将循环产生的数据框合并

      本文链接:https://www.haomeiwen.com/subject/drppcftx.html