R筛选器行:where子句:来自数据帧

R筛选器行:where子句:来自数据帧,r,select,filter,dplyr,R,Select,Filter,Dplyr,我试图在R中过滤一个数据帧,如下所示 让mydf成为具有两列A和B的数据帧 让udf成为另一个具有1列A的数据帧 我想做以下几件事 Select rows from mydf where mydf[A] is in udf[A] 我正在使用dplyr,并尝试在线路上作为 T = filter(mydf, A %in% udf['A']) 这显然行不通。在不显式编写for循环的情况下,是否有一种简单的解决方法?非常感谢 您可以简单地pip数据并使用left\u join功能。 这是一个可重复的

我试图在R中过滤一个数据帧,如下所示

让mydf成为具有两列A和B的数据帧

让udf成为另一个具有1列A的数据帧

我想做以下几件事

Select rows from mydf where mydf[A] is in udf[A]
我正在使用dplyr,并尝试在线路上作为

T = filter(mydf, A %in% udf['A'])

这显然行不通。在不显式编写for循环的情况下,是否有一种简单的解决方法?非常感谢

您可以简单地pip数据并使用
left\u join
功能。 这是一个可重复的例子:

数据:
set.seed(123)

颜色您可以从
dplyr

library(dplyr)
r1 <- inner_join(mydf, udf, by='A')
或使用
data.table

library(data.table)
setkey(setDT(mydf),A)[udf, nomatch=0]
数据
set.seed(24)

mydf我猜您希望%udf[['A']]
中的
%,即向量而不是子列表。哦,耶!非常感谢!我的(真的很小)坏!
r2 <- filter(mydf, A %in% udf[['A']])
identical(r1, r2)
#[1] TRUE
library(data.table)
setkey(setDT(mydf),A)[udf, nomatch=0]
set.seed(24)
mydf <- as.data.frame(matrix(sample(1:10,2*10, replace=TRUE),
    ncol=2, dimnames=list(NULL, LETTERS[1:2])) )
set.seed(29)
udf <- data.frame(A=sample(1:10,6,replace=TRUE))