Почему 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 = TRUEall.x = TRUE а такжеall.y = TRUE, ПосколькуX[Y] операция напоминаетmerge намного больше, чемmatchпочему бы не использоватьmerge синтаксис для объединений, а неmatch функция-хnomatch параметр?

Вот примеры кода 4 типов соединения:

# sample X and Y data.tables
library(data.table)
X 

Ответы на вопрос(3)

Ваш ответ на вопрос