data.table中的变量用法

时间:2015-12-03 23:05:52

标签: r data.table

它必须是非常基本的东西,但我无法弄清楚如何使用与data.table列同名的实变量。我可以使用不同的变量名来避免冲突,但我想知道是否有办法在放弃DT之前评估变量。

> DT = data.table(ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c=13:18)
> 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
> DT[b == 7]
   ID a b  c
1:  b 1 7 13
> b <- 7
> DT[b == b]
   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

1 个答案:

答案 0 :(得分:3)

由于您有两个名为b的变量,一个位于DT内,另一个位于DT范围之内,因此我们必须从全局环境中获取b <- 7。我们可以使用get()

DT[b == get("b", globalenv())]
#    ID a b  c
# 1:  b 1 7 13

更新:您在评论中提到变量位于函数环境中。在这种情况下,您可以使用parent.frame()代替globalenv()

f <- function(b, dt) dt[b == get("b", parent.frame(3))] 

f(7, DT)
#    ID a b  c
# 1:  b 1 7 13
f(12, DT)
#    ID a  b  c
# 1:  c 6 12 18