是否有一个dplyr :: filter参数等效于data.table中的nomatch选项?

问题描述

带有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