R 如何可靠地引用X中的列,其中';的名称与另一个变量相同 我确切地知道每个人都会说“正确地说出你的变量”,但是请考虑这个问题。

R 如何可靠地引用X中的列,其中';的名称与另一个变量相同 我确切地知道每个人都会说“正确地说出你的变量”,但是请考虑这个问题。,r,data.table,R,Data.table,如果有一个变量(任何DT的外部变量)与DT中的列具有相同的名称 我们如何可靠地在DT[]中引用这两个术语 下面是一个独立的示例 #define the sample ID that we are interested in sample_id <- "sample-3" #create some toy data ids <- paste0("sample-",1:5) dt <- data.table(sample_id=ids) dt

如果有一个变量(任何DT的外部变量)与DT中的列具有相同的名称 我们如何可靠地在DT[]中引用这两个术语

下面是一个独立的示例

#define the sample ID that we are interested in
sample_id <- "sample-3"
#create some toy data
ids <- paste0("sample-",1:5)
dt <- data.table(sample_id=ids)
dt[,data:=rnorm(.N)]
#subset the DT using the sample_id that we are interested in
dt[sample_id==sample_id]
但是我想要这个

> dt[sample_id==sample_id]
   sample_id       data
1:  sample-3 0.02002767
有没有什么特殊的符号或函数可以用来让DT知道我指的是外部变量

或者我必须重命名我的外部变量(或列) 谢谢阅读,干杯。

使用键是一种方法:

setkey(dt, sample_id)
dt[sample_id]

   sample_id     data
1:  sample-3 1.428484

如果要在不设置关键点的情况下执行此操作,可以在父帧中专门查找变量:

dt[sample\u id==get(“sample\u id”,envir=parent.frame())]
#>样本id数据
#>1:样本-3 1.547372

我们可以使用
.GlobalEnv
提取对象

dt[sample_id == .GlobalEnv$sample_id]
#   sample_id      data
#1:  sample-3 0.2044901

类似的二进制搜索,但在上使用
而不是键:
dt[sample\u id,on=“sample\u id”]
dt[sample_id == .GlobalEnv$sample_id]
#   sample_id      data
#1:  sample-3 0.2044901