我有2个数据框
D1 = V1 V2 V3 V4
1 2 3 4
2 3 4 5
3 5 4 2
D2 = V1 V2 V3
1 2 3
3 5 4
我正在尝试匹配两个数据帧并提取行D2的索引,该行与D2的索引相匹配,但是得到了错误
which(D2[,1:3]==D1[3,1:3])
Error in Ops.data.frame : ‘==’ only defined for equally-sized data frames
(但如果我将该等式分别写为,
which(D2[,1]==D1[3,1] & D2[,1]==D1[3,2] & D2[,1]==D1[3,3])
没有问题,但我想概括一下)
请提出一些替代方案。
答案 0 :(得分:1)
这就是诀窍:
which(apply(D2, 1, function(x) all(D1[3,1:3] == x)))
[1] 2
数据:
D1 <- read.table(text="V1 V2 V3 V4
1 2 3 4
2 3 4 5
3 5 4 2", header=T)
D2 <- read.table(text="V1 V2 V3
1 2 3
3 5 4", header=T)