问题描述
带有data.table
您可以在 nomatch = NA 之间进行选择:
DT[c("A","D"),on = "V4",nomatch = NA] #returns a row with "D" even if not found
或 nomatch = NULL (与dplyr行为相同):
DT[c("A",nomatch = 0] # keep only rows found in V4
与dplyr
filter(DF,V4 %in% c("A","D")) # we only have equivalent to *nomatch=0* behavIoUr.
解决方法
这将返回DT[c("A","D"),on = "V4",nomatch = NA]
df %>% right_join(data.frame(V4 = c("A","D")),"V4")
可复制的示例:
library(dplyr)
df <- data.frame(V4 = LETTERS[c(1,1,2,3)],V3 = 1:5)
df %>% right_join(data.frame(V4 = c("A","V4")
#> V4 V3
#> 1 A 1
#> 2 A 2
#> 3 D NA
library(data.table)
DT <- as.data.table(df)
DT[c("A",nomatch = NA]
#> V4 V3
#> 1: A 1
#> 2: A 2
#> 3: D NA