【问题标题】:Combine list elements (containing data.frames) based on element names in r根据r中的元素名称组合列表元素(包含data.frames)
【发布时间】:2023-01-28 02:17:10
【问题描述】:

假设我有一个包含 26 个元素的列表,每个元素都被命名并包含一个 data.frame。

lst <- lapply(1:26, function(x) data.frame(AA = 1:5, BB = 1:5, CC = 1:5))
names(lst) <- letters

如何仅将此列表中的选择(指定)元素组合成一个新的组合对象(在本例中为 data.frame)?

  • 例如:假设我只想将名为“m”和“o”的元素合并到一个 data.frame 中。

      AA BB CC
    m  1  1  1
    m  2  2  2
    m  3  3  3
    m  4  4  4
    m  5  5  5
    o  1  1  1
    o  2  2  2
    o  3  3  3
    o  4  4  4
    o  5  5  5
    

我知道有一种简单的方法可以使用 rbind 和 apply 函数之一或 do.call 或类似函数来执行此操作,但是我的各种努力组合都失败了,similar posts 我已经找到了没有帮助。

【问题讨论】:

    标签: r list dataframe rbind do.call


    【解决方案1】:

    我们可以通过命名对list进行子集化,并使用rbind和do.call

    do.call(rbind, lst[c("m", "o")])
    

    【讨论】:

      【解决方案2】:

      使用 do.call 的基本 R 方法:

      do.call(rbind, args = lst[names(lst) %in% c("m","o")])
      

      虽然,它创建了一些混乱的编号行名:

          AA BB CC
      m.1  1  1  1
      m.2  2  2  2
      m.3  3  3  3
      m.4  4  4  4
      m.5  5  5  5
      o.1  1  1  1
      o.2  2  2  2
      o.3  3  3  3
      o.4  4  4  4
      o.5  5  5  5
      

      这可以在第二步中使用 rownames 进行清理

      【讨论】:

        猜你喜欢
        • 2013-09-17
        • 2018-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-03
        • 1970-01-01
        相关资源
        最近更新 更多