R 查找A中与B中的行匹配的行号

R 查找A中与B中的行匹配的行号,r,dataframe,R,Dataframe,我想知道A中与B中的行匹配的行的索引 A和B都是数据帧。为简单起见,假设: a1 <- data.frame(a = 1:5, b=letters[1:5]) a2 <- data.frame(a = 1:3, b=letters[1:3]) a1在plyr包中的join.keys函数为一对输入数据帧中的每个唯一行提供一个键,这使得确定a中的哪些行出现在B中变得非常简单。在由join.keys返回的列表中,x是第一个数据帧的行标识符向量,y是第二个数据帧的行标识符向量 librar

我想知道A中与B中的行匹配的行的索引

A和B都是数据帧。为简单起见,假设:

a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])

a1在
plyr
包中的
join.keys
函数为一对输入数据帧中的每个唯一行提供一个键,这使得确定
a
中的哪些行出现在
B
中变得非常简单。在由
join.keys
返回的列表中,
x
是第一个数据帧的行标识符向量,
y
是第二个数据帧的行标识符向量

library(plyr)
with(join.keys(a1, a2), which(x %in% y))
# [1] 1 2 3

您可以使用以下代码:

>subset(a1,a1$a %in% a2$a)
它返回:

>1  a

>2  b

>3  c
如果只需要a列,可以添加:

>subset(a1,a1$a %in% a2$a,a)

>1

>2

>3

我认为在你的数据上这样做会很快。

你有矩阵吗?数据帧?还有别的吗?请共享有效的R代码以生成示例数据,例如,
A=matrix(c(1,3,2,4),nrow=2)
或者
A=data.frame(v1=c(1,3),v2=c(2,4))
。同样,对于
B
。请编辑您的问题以使用此信息进行更新,不要将其放在评论中。如果您对再现性有其他疑问,可能是
匹配(粘贴(B[,1],B[,2],sep=“*”),粘贴(A[,1],A[,2],sep=“*”))
。如果您想得到更多猜测的答案,请提供您的数据样本。如果我的矩阵有两列以上,该怎么办?@j20120307无论列数多少,都可以不做修改。行标识符在这里是什么意思?我将c(“V1”、…、“V18”)作为两个数据帧的标头。每行是一个数据点,每个数据点有18个要素。@j20120307如果两行的所有18个要素的数据相同,则它们将具有相同的行标识符;否则,它们将具有不同的行标识符。谢谢,这很有效。如果我想知道A中对应的行号,而B中的行与A中的行匹配,该怎么办?如果A=[[1,2],[2,3],[3,6]]和B=[[2,4],[3,6]],那么它返回[NA,3]?