R 将一个数据帧中的元素与另一个数据帧中的元素匹配的聪明方法?

R 将一个数据帧中的元素与另一个数据帧中的元素匹配的聪明方法?,r,indexing,dataframe,match,R,Indexing,Dataframe,Match,假设我有两列x=c(“a”、“c”、“g”)和y=c(“a”、“b”、“c”、“d”、“e”、“f”、“g”) x是dataframe1中的一列,y是DataFrame2中的一列。dataframe1不一定与维度中的DataFrame2匹配 我想返回包含x的y行。例如,我想得到1,3,7 我尝试了一些笨拙的东西,比如items=which(dataframe1$x==dataframe2$y),但显然不起作用。我知道我可以循环使用dataframe1$x并将其与dataframe2$y匹配,但似

假设我有两列
x=c(“a”、“c”、“g”)
y=c(“a”、“b”、“c”、“d”、“e”、“f”、“g”)

x是dataframe1中的一列,y是DataFrame2中的一列。dataframe1不一定与维度中的DataFrame2匹配

我想返回包含x的y行。例如,我想得到1,3,7


我尝试了一些笨拙的东西,比如
items=which(dataframe1$x==dataframe2$y)
,但显然不起作用。我知道我可以循环使用
dataframe1$x
并将其与
dataframe2$y
匹配,但似乎应该有更好的解决方案。

您使用了正确的工具。你只是没有正确地使用它<代码>=将匹配单个值。当您要将一个向量与另一个向量匹配时,请将
匹配
哪个
与%中的
%匹配(而不是与
=
匹配)

例如:

df1 <- data.frame(x = c("a", "c", "g"))
df2 <- data.frame(y = letters[1:7])
match(df1$x, df2$y)
# [1] 1 3 7
which(df2$y %in% df1$x)
# [1] 1 3 7
df1