R 检索没有显式引用的列
大家早上好 在R 检索没有显式引用的列,r,data.table,left-join,R,Data.table,Left Join,大家早上好 在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 也许值得一提的是x.c中的x指的是语法x[i]的位置,在本例中,表y 我的问题是,为什么明确提到表对于一项任务来说似
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
也许值得一提的是x.c
中的x
指的是语法x[i]
的位置,在本例中,表y
我的问题是,为什么明确提到表对于一项任务来说似乎是基本的。还是我遗漏了什么?谢谢。在我看来,第一次连接的结果是完全正确的,因为要合并的列被解释为相同的,即使它们有不同的名称。在我看来,您要寻找的不仅仅是一个join,您需要的是类似于
cbind.fill(x,y,fill=NA)
的库rowr
。强烈推荐的一个例子是:“on=
在不同名称的列上进行合并时,它们必须使用on=
这样的x=y
格式,其中x
来自“左侧”因为我们使用i
查找x
中的行,所以显示的列的名称来自x
,值来自i
:“在data.table中,形式为x[i]的联接”
传统上使用i
中的值,但使用x
"@Jaap@Henrik. 感谢您指出将值保留在i中而名称保留在x中的默认工作方式,以及指向其他问题和github的链接。我不想问一个重复的,但真的没有遇到这些链接。应该更仔细地看。期待下一次更新,因为我对data.table的性能增益感兴趣
z <- y[x, on=.(c=a), .(a,c,d)]; z
# a c d
# 1: 1 1 2
# 2: 2 2 NA
z <- y[x, on=.(c=a), .(a,x.c,d)]; z
# a x.c d
# 1: 1 1 2
# 2: 2 NA NA