一個選項是在“B”中創建一個list列,并執行聯接和賦值(:=),因為:=無法展開原始數據上的行。 A[B[, .(b = .(b)), a], on = .(a), newvar := i.b] -output > A a b newvar1: 1 12 2: 2 13 23,243: 3 14 4: 4 15 一旦我們有了list,就更容易unnest library(tidyr)A[, unnest(.SD, newvar, keep_empty = TRUE)]# A tibble: 5 x 3 a b newvar <int> <int> <int>1 1 12 NA2 2 13 233 2 13 244 3 14 NA5 4 15 NA 或者使用與merge.data.table的完全聯接 merge(A, B, by = 'a', all.x = TRUE) a b.x b.y1: 1 12 NA2: 2 13 233: 2 13 244: 3 14 NA5: 4 15 NA