在没有明确提及的情况下检索列

T.F*_*ung 5 r left-join data.table

大家早上好

data.table我发现使用左连接时,当隐式提及列名时,即不提及表(列所在的表)会导致意外的结果,尽管列名是唯一的。

虚拟数据

x <- data.table(a = 1:2); x
#    a
# 1: 1
# 2: 2
y <- data.table(c = 1
                ,d = 2); y 
#    c d
# 1: 1 2
Run Code Online (Sandbox Code Playgroud)

左连接在检索列 c 时不提及表名

z <- y[x, on=.(c=a), .(a,c,d)];  z
#    a c  d
# 1: 1 1  2
# 2: 2 2 NA
Run Code Online (Sandbox Code Playgroud)

查看上述结果时出现问题。c 列的第 2 行应该是NA. 但是,它显示2 这仅在用户明确提及该表时才得到纠正:

z <- y[x, on=.(c=a), .(a,x.c,d)];  z
#    a x.c  d
# 1: 1   1  2
# 2: 2  NA NA
Run Code Online (Sandbox Code Playgroud)

也许值得一提的是xinx.c指的是语法的位置x[i],在这种情况下,表y

我的问题是,为什么对于一项看似基本的任务,明确提及表格是必要的。或者我错过了什么?谢谢你。