【问题标题】:rbind dataframes with varying namesrbind 具有不同名称的数据帧
【发布时间】:2018-05-15 23:18:38
【问题描述】:

我有一种情况,我需要根据名称绑定多个数据帧,我遇到的问题是如何在名称不同时定义这些数据帧的绑定 -

例如,我的数据框的名称是:

AB_0
AB_1
BCD_0
BCD_1

我想绑定 AB_0 和 BCD_0,以及 AB_1 和 BCD_1 - 我绑定的共同因素是 _ 和之后的所有内容

我知道我可以使用 strsplit,但我想要达到的只是:

for(i in 0:1){
    do.call("rbind", mget(sprintf("*_%d", i)))
}

其中 * 是具有不同字符数的变量字符串

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    这样的?

    AB_0 <- data.frame(a=1, b=1)
    AB_1 <- data.frame(a=2, b=2)
    BCD_0 <- data.frame(a=3, b=3)
    BCD_1 <- data.frame(a=4, b=4)
    
    
    XX0 <- do.call("rbind", mget(ls(pattern = ".+_0")))
    XX1 <- do.call("rbind", mget(ls(pattern = ".+_1")))
    

    或使用列表自动化:

    XX <- list()
    
    for (i in 0:1) {
      XX[[i+1]] <- do.call("rbind", mget(ls(pattern = paste0(".+_",i))))
    }
    

    【讨论】:

    • 太棒了-谢谢!您是否还知道我可以在哪里进一步定义模式/ sprintf 的语法是如何形成的,即可以告诉我“.+_”是什么意思,或者“%d”是什么意思等的地方?
    • 不客气。对于模式,运行?regex,格式见?sprintf
    猜你喜欢
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多