这是关于data.table连接语法的一个哲学问题.我发现data.tables的用途越来越多,但仍在学习......
X[Y]
data.tables 的连接格式非常简洁,方便和高效,但据我所知,它只支持内连接和右外连接.要获得左外部或全外部连接,我需要使用merge
:
X[Y, nomatch = NA]
- Y中的所有行 - 右外连接(默认)X[Y, nomatch = 0]
- 只有在X和Y中都匹配的行 - 内连接merge(X, Y, all = TRUE)
- 来自X和Y的所有行 - 完全外部连接merge(X, Y, all.x = TRUE)
- X中的所有行 - 左外连接在我看来,如果X[Y]
连接格式支持所有4种类型的连接,那将会很方便.有没有理由只支持两种类型的连接?
对我来说,nomatch = 0
和nomatch = NA
参数值对于正在执行的操作不是非常直观.这是我更容易理解和记忆的merge
语法:all = TRUE
,all.x = TRUE
和all.y = TRUE
.由于X[Y]
操作类似于merge
远远不止match
,为什么不使用merge
的连接,而不是语法match
功能的nomatch
参数?
以下是4种连接类型的代码示例:
# …
Run Code Online (Sandbox Code Playgroud)