我该如何开始考虑我更喜欢哪种语法?
我的标准是效率(这是第一)以及可读性/可维护性.
这个
A <- B[A, on = .(id)] # wow such. concision
Run Code Online (Sandbox Code Playgroud)
或者那个
A[B, on = .(id), comment := i.comment]
Run Code Online (Sandbox Code Playgroud)
甚至(正如PoGibas所说):
A <- merge(A, B, all.x = TRUE)
Run Code Online (Sandbox Code Playgroud)
为了完整性,一个更基本的方法是使用match():
A[, comment := B[chmatch(A[["id"]], id), comment]]
Run Code Online (Sandbox Code Playgroud)
示例数据:
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"))
Run Code Online (Sandbox Code Playgroud)