首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何可靠地引用X中名称与另一个变量相同的列

如何可靠地引用X中名称与另一个变量相同的列
EN

Stack Overflow用户
提问于 2020-08-07 23:07:31
回答 3查看 68关注 0票数 4

我知道每个人都会说“正确命名你的变量!”,但是请考虑这个问题。

如果有一个变量(任何DT的外部)与DT中的列同名,我们如何才能可靠地在DT内同时引用这两个变量

这里有一个自包含的示例。

代码语言:javascript
复制
#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]

我们得到这个输出

代码语言:javascript
复制
> 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

但是我想要这个

代码语言:javascript
复制
> dt[sample_id==sample_id]
   sample_id       data
1:  sample-3 0.02002767

有没有什么特殊的符号或函数可以用来让DT知道我指的是一个外部变量?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-07 23:25:03

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

代码语言:javascript
复制
dt[sample_id == .GlobalEnv$sample_id]
#   sample_id      data
#1:  sample-3 0.2044901
票数 2
EN

Stack Overflow用户

发布于 2020-08-07 23:23:43

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

代码语言:javascript
复制
dt[sample_id == get("sample_id", envir = parent.frame())]
#>    sample_id     data
#> 1:  sample-3 1.547372
票数 3
EN

Stack Overflow用户

发布于 2020-08-07 23:21:11

使用键是一种方法:

代码语言:javascript
复制
setkey(dt, sample_id)
dt[sample_id]

   sample_id     data
1:  sample-3 1.428484
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63304462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档