Почему X [Y] соединение data.tables не допускает полное внешнее соединение или левое соединение?
Это немного философский вопрос о синтаксисе соединения data.table. Я нахожу все больше и больше использования для data.tables, но все еще учусь ...
Формат соединенияX[Y]
for 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 типов соединения:
# sample X and Y data.tables
library(data.table)
X