@snoram Для (1) я отредактировал, чтобы добавить пару причин. Для (2), я думаю, это отчасти вопрос предпочтений и фона. С нормализованным набором таблиц я никогда не обнаруживал необходимости в различных объединениях SQL (внешнем, внутреннем, полном, левом, правом и т. Д.) Или в жаргоне за ними ... и я подозреваю, что в рабочем процессе есть что-то неэффективное что требует их (вне очистки данных). У меня есть некоторое знакомство с теорией множеств и схожими терминами реляционной алгебры (объединение, полу-, уравнение, анти-соединение и т. Д.)

не начать думать о том, какой синтаксис я предпочитаю?

Моими критериями являются эффективность (это номер один), а также удобочитаемость / ремонтопригодность.

Этот

A <- B[A, on = .(id)] # wow such. concision

Или это

A[B, on = .(id), comment := i.comment]

Или даже (как предполагает PoGibas):

A <- merge(A, B, all.x = TRUE)

Для полноты, то более простой способ заключается в использованииmatch():

A[, comment := B[chmatch(A[["id"]], id), comment]]

Пример данных:

library(data.table)
A <- data.table(id = letters[1:10], amount = rnorm(10)^2)
B <- data.table(id = c("c", "d", "e"), comment = c("big", "slow", "nice"))

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

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