在r中使用另一个数据帧中的两列对一个数据帧中的列进行子集设置

在r中使用另一个数据帧中的两列对一个数据帧中的列进行子集设置,r,dataframe,subset,R,Dataframe,Subset,我试过解决类似的问题,但没能 我有两个数据帧。我想使用另一个数据帧中的两列来子集一个数据帧中的一列 数据帧如下所示 df1 <- data.frame(x = c(22,23,22,34,21), y = c(1,4,2,3,2)) df1 x y 1 22 1 2 23 4 3 22 2 4 34 3 5 21 2 df2 <- data.frame(a = c("John", "Matt", "foo","boo"),

我试过解决类似的问题,但没能

我有两个数据帧。我想使用另一个数据帧中的两列来子集一个数据帧中的一列

数据帧如下所示

df1 <- data.frame(x = c(22,23,22,34,21),
                  y = c(1,4,2,3,2))
df1
   x y
1 22 1
2 23 4
3 22 2
4 34 3
5 21 2

df2 <- data.frame(a = c("John", "Matt", "foo","boo"),
                  b = c(4, NA, NA,2), 
                  c = c(3, NA, 3, 3))


df2

     a  b  c
1 John  4  3
2 Matt NA NA
3  foo NA  3
4  boo  2  3

您可以尝试以下方法:

dfnew<-list()
for (i in 1:nrow(df2)){
  dfnew[[i]]<-df1[which(df1$y %in% df2[i,2:3]),]
}

dfnew您可以尝试以下方法:

dfnew<-list()
for (i in 1:nrow(df2)){
  dfnew[[i]]<-df1[which(df1$y %in% df2[i,2:3]),]
}

dfnew我们可以使用
lappy

lapply(split(df2[-1], as.character(df2$a)), function(x) df1[df1$y %in% unlist(x),])

我们可以使用
lappy

lapply(split(df2[-1], as.character(df2$a)), function(x) df1[df1$y %in% unlist(x),])

谢谢但是我能用矢量化运算得到类似的结果吗?谢谢!但是我可以使用向量化运算得到类似的结果吗。