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)
也许值得一提的是x
inx.c
指的是语法的位置x[i]
,在这种情况下,表y
我的问题是,为什么对于一项看似基本的任务,明确提及表格是必要的。或者我错过了什么?谢谢你。