相关疑难解决方法(0)

为什么X [Y]连接data.tables不允许完全外连接或左连接?

这是关于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 = 0nomatch = NA参数值对于正在执行的操作不是非常直观.这是我更容易理解和记忆的merge语法:all = TRUE,all.x = TRUEall.y = TRUE.由于X[Y]操作类似于merge远远不止match,为什么不使用merge的连接,而不是语法match功能的nomatch参数?

以下是4种连接类型的代码示例:

# …
Run Code Online (Sandbox Code Playgroud)

join r data.table

115
推荐指数
3
解决办法
3万
查看次数

标签 统计

data.table ×1

join ×1

r ×1