获取命令

时间:2017-09-06 18:05:50

标签: r which

我有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])

没有问题,但我想概括一下)
请提出一些替代方案。

1 个答案:

答案 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)