【问题标题】:R - use rbind on multiple variables with similar namesR - 对具有相似名称的多个变量使用 rbind
【发布时间】:2023-03-26 02:33:01
【问题描述】:

我有很多变量是我使用这样的代码创建的:

for (i in 1:10) {
    assign(paste0("variable", i), i )}

我现在需要对变量使用 rbind 来组合它们。我尝试过这样的事情无济于事:

rbind(assign(paste0("variable", 1:10)))

有什么建议吗?

【问题讨论】:

    标签: r rbind


    【解决方案1】:

    我想添加另一种方法来合并具有动态名称的多个数据框。这将通过使用来自dplyrmgetbind_rows 来完成。

    # 3 Data frames are created
    TXN_MONTH_01 <- data.frame(a = 1:10, b = 101:110)
    
    TXN_MONTH_02 <- data.frame(a = 11:20, b = 111:120)
    
    TXN_MONTH_03 <- data.frame(a = 21:30, b = 121:130)
    
    #create a list using dynamic names of dataframes
    z <- as.list(mget(paste("TXN_MONTH_0", 1:3, sep="")))
    library(dplyr)
    #now call bind rows
    bind_rows(z)
    #    a   b
    #1   1 101
    #2   2 102
    #3   3 103
    #4   4 104
    #5   5 105
    #.....
    #.....
    #25 25 125
    #26 26 126
    #27 27 127
    #28 28 128
    #29 29 129
    #30 30 130
    

    【讨论】:

      【解决方案2】:

      这是处理相关项目的错误方式。最好使用列表或数据框,但您可能会在适当的时候找出原因。现在:

      do.matrix <- do.call(rbind, lapply( ls(patt="variable"), get) )
      

      或者:

      do.matrix <- do.call(rbind, lapply( paste0("variable", 1:10) , get) )
      

      【讨论】:

      • 这有效,但前提是我没有其他具有相同模式的变量。例如,如果在我的原始代码中,我现在将 for 循环设置为最高 1000,然后将其设置回 10,则 do.matrix 变量将包含太多行。
      • 谢谢,@DWin。您对我的评论的跟进是正确的。我道歉。并感谢这行额外的代码。这正是我所需要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      相关资源
      最近更新 更多