【问题标题】:Subsetting multiple columns of a data.table with the same column name使用相同的列名子集 data.table 的多个列
【发布时间】:2020-04-26 07:15:43
【问题描述】:

假设我有以下data.table:

dt <- data.table(a = 1:3, b = 4:6, a = 7:9)

# dt
   a b a
1: 1 4 7
2: 2 5 8
3: 3 6 9

如何子集 data.table 以便选择名称为 a 的所有列?

下面的代码只给了我第一个匹配项。

dt[, "a", with = F]

   a
1: 1
2: 2
3: 3

【问题讨论】:

  • 列名相同是一种非常糟糕的做法。考虑重命名它。

标签: r data.table


【解决方案1】:

我推荐使用.SDcols:

dt[ , .SD, .SDcols = patterns('^a$')]

【讨论】:

    【解决方案2】:

    您可以传递一个逻辑向量来选择列。

    library(data.table)
    dt[, names(dt) == 'a', with = FALSE]
    
    #   a a
    #1: 1 7
    #2: 2 8
    #3: 3 9
    

    【讨论】:

      【解决方案3】:

      dt[,grep("a",names(dt)),with=FALSE]

      【讨论】:

        猜你喜欢
        • 2014-03-06
        • 2015-07-14
        • 2012-08-16
        • 1970-01-01
        • 1970-01-01
        • 2019-03-19
        • 2013-11-17
        • 1970-01-01
        • 2022-08-19
        相关资源
        最近更新 更多