三行代码  ›  专栏  ›  技术社区  ›  Mwavu

数据。表格相当于dplyr的砰砰(!!)

  •  0
  • Mwavu  · 技术社区  · 1 月前

    说我有这个 DT ID 下:

    library(data.table)
    DT <- data.table(
      ID = c("b","b","b","a","a","c"),
      a = 1:6,
      b = 7:12,
      c = 13:18
    )
    
    ID <- "b"
    
    DT
    #>    ID a  b  c
    #> 1:  b 1  7 13
    #> 2:  b 2  8 14
    #> 3:  b 3  9 15
    #> 4:  a 4 10 16
    #> 5:  a 5 11 17
    #> 6:  c 6 12 18
    
    

    有没有 {data.table} 相当于 {dplyr}

    DT |> dplyr::filter(ID == !!ID)
    #>    ID a b  c
    #> 1:  b 1 7 13
    #> 2:  b 2 8 14
    #> 3:  b 3 9 15
    

    假设我不更改变量的名称。

    1 回复  |  直到 1 月前
        1
  •  4
  •   VitaminB16    1 月前

    是的,只需将变量包装在 as.name() :

    DT[ID == as.name(ID)]
    
    #    ID a b  c
    # 1:  b 1 7 13
    # 2:  b 2 8 14
    # 3:  b 3 9 15
    
        2
  •  2
  •   r2evans    1 月前

    我喜欢维生素B16的答案在日常生活中起作用 i= (以及 j= )部分 data.table::[ 典型的 从调用环境引用对象的响应是 .. -操作员,此处讨论: https://rdatatable.gitlab.io/data.table/articles/datatable-intro.html

    ,

    DT[ID == ..ID,]
    # Error in eval(stub[[3L]], x, enclos) : object '..ID' not found
    

    所以必须放在一个 .SD . (我相信这是可行的 我= DT j=

    DT[, .SD[ID == ..ID,] ]
    #        ID     a     b     c
    #    <char> <int> <int> <int>
    # 1:      b     1     7    13
    # 2:      b     2     8    14
    # 3:      b     3     9    15