【问题标题】:subset data.table columns by matching with a list通过与列表匹配来子集 data.table 列
【发布时间】:2017-05-03 20:33:28
【问题描述】:

我有以下data.table:

dt1 <- data.table(apple = c(1:5),
                  bananas = c(5:1),
                  carrots = c(6:10),
                  donuts = c(11:15)) 

还有以下list:

names_to_keep <- c("apple", "carrots")

我需要从dt1 创建一个新的data.table,其中只包含名称包含在names_to_keep 中的列。

想要的结果:

#   apple carrots
#1:     1       6
#2:     2       7
#3:     3       8
#4:     4       9
#5:     5      10

【问题讨论】:

    标签: r data.table subset


    【解决方案1】:

    使用with=FALSE,另见vignette("datatable-faq"):

    dt1[, names_to_keep, with=FALSE]
    
    #   apple carrots
    #1:     1       6
    #2:     2       7
    #3:     3       8
    #4:     4       9
    #5:     5      10
    

    或者正如@Frank 评论的那样,现在有一种新的语法:

    dt1[,..names_to_keep]
    
    #   apple carrots
    #1:     1       6
    #2:     2       7
    #3:     3       8
    #4:     4       9
    #5:     5      10
    

    【讨论】:

      【解决方案2】:
      dt1 <- data.table(as.data.frame(dt1)[,names_to_keep])
      dt1
           apple carrots
      1:     1       6
      2:     2       7
      3:     3       8
      4:     4       9
      5:     5      10
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        • 1970-01-01
        • 1970-01-01
        • 2014-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多