我知道每个人都会说“正确命名你的变量!”,但是请考虑这个问题。
如果有一个变量(任何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-1 -0.75094006
2: sample-2 0.85408100
3: sample-3 0.02002767
4: sample-4 1.20461499
5: sample-5 -0.46026177但是我想要这个
> dt[sample_id==sample_id]
sample_id data
1: sample-3 0.02002767有没有什么特殊的符号或函数可以用来让DT知道我指的是一个外部变量?
或者我必须重命名我的外部变量(或列)谢谢阅读,干杯。
发布于 2020-08-07 23:25:03
我们可以使用.GlobalEnv并提取对象
dt[sample_id == .GlobalEnv$sample_id]
# sample_id data
#1: sample-3 0.2044901发布于 2020-08-07 23:23:43
如果要在不设置关键点的情况下执行此操作,可以专门在父帧中查找变量:
dt[sample_id == get("sample_id", envir = parent.frame())]
#> sample_id data
#> 1: sample-3 1.547372发布于 2020-08-07 23:21:11
使用键是一种方法:
setkey(dt, sample_id)
dt[sample_id]
sample_id data
1: sample-3 1.428484https://stackoverflow.com/questions/63304462
复制相似问题