比较 R 中的 3 个列列表

Comparing 3 column lists in R

我正在寻找 R 中可以比较三列矩阵的循环。我想要循环做的是采用格式

的两个 matrices/dataframes
 A:
 X    Y    Z
 3    4    5
 3    5    6
 4    5    7


B:
X    Y    Z
3    4    5
3    4    4
3    4    7
4    5    7

如果所有 3 列都完全匹配,则 return 遍历每一行。

这会 return


X    Y    Z
3    4    5
4    5    7 

理想情况下,代码可以应用于更长的 matrices/data 帧。

如果 "A"、"B" 是 "data.frames"

,您可以从 dplyr 尝试 intersect
library(dplyr)
intersect(A,B)

或者

inner_join(A,B)

基数 R 中的一个选项是 merge:

merge(A,B, by = c("X", "Y", "Z"))
#  X Y Z
#1 3 4 5
#2 4 5 7

此方法与矩阵和 data.frames 的工作方式相同。

事实上,在这种情况下,您甚至可以省略 "by" 参数的说明:

merge(A,B)
#  X Y Z
#1 3 4 5
#2 4 5 7

如果你的数据很大你可以使用data.table package:

library(data.table); setDT(A); setDT(B)

setkey(B)[A,nomatch=0]
#   X Y Z
#1: 3 4 5
#2: 4 5 7

setkey(A)[B,nomatch=0] returns 相同的输出,因为它是一个交叉点。