大家早上好
在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
在检索列c时不提及表名的左联接
z <- y[x, on=.(c=a), .(a,c,d)]; z
# a c d
# 1: 1 1 2
# 2: 2 2 NA
查看以上结果时出现问题。 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
也许值得一提的是x
中的x.c
是指语法x[i]
的位置,在这种情况下,表y
我的问题是,为什么对于看似基本的任务必须要明确提及表格。还是我错过了什么?谢谢。