簡體   English   中英

使用與列同名的 object 過濾 data.table 中的行

[英]filter row in data.table using object with same name as column

我有一個列名為xy的 data.table dt 我還有 object y ,我需要使用dt$y中的值過濾dt中的某些行。 不幸的是,由於其中一列與 object 同名,我無法使其工作。 我究竟做錯了什么? 太感謝了。

library(data.table)
dt <- data.table( x = c(1:4), 
                  y = letters[1:4])
y <- "c"

dt[y == y]
#>    x y
#> 1: 1 a
#> 2: 2 b
#> 3: 3 c
#> 4: 4 d
dt[y == (y)]
#>    x y
#> 1: 1 a
#> 2: 2 b
#> 3: 3 c
#> 4: 4 d
dt[y == ..y]
#> Error in eval(stub[[3L]], x, enclos): object '..y' not found
eval(quote(y))
#> [1] "c"
dt[y == eval(quote(y))]
#>    x y
#> 1: 1 a
#> 2: 2 b
#> 3: 3 c
#> 4: 4 d

代表 package (v2.0.0) 於 2021 年 4 月 12 日創建

PS:如果在其他地方問過這個問題,我深表歉意。 我搜索了一個答案,但我找不到它。

可以使用get()env參數:

dt[y == get('y', env = -2)]
#    x y
# 1: 3 c

請注意,這會對您的設置做出某些假設。 如果您的y像您的示例一樣在全局環境中定義,那么更安全的解決方案(如 Ian Campell 所建議)將是:

dt[y == get('y', env = globalenv())]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM