使用R比较两个不同长度的变量

时间:2012-06-05 12:15:54

标签: r

我需要比较存储在两个变量中的值。变量大小是不同的。例如

x = c(1,2,3,4,5,6,7,8,9,10)

y = c(2,6,11,12,13)

我需要一个答案,即两个变量中都存在2和6。我需要在R.Anyone帮忙做到这一点。

3 个答案:

答案 0 :(得分:8)

交叉函数避免了对@mdsumner的简单索引的需要:

> x = c(1,2,3,4,5,6,7,8,9,10)
> y = c(2,6,11,12,13)
> intersect(x,y)
[1] 2 6

可在此处找到一大堆集合运算符:help(intersect)

答案 1 :(得分:2)

在允许某种容忍度的附加要求之后发布:您可以针对第二组中的所有其他值顺序检查一组值,或者您可以使用outer()一次性完成所有这些操作。一旦你将外部结果作为逻辑矩阵,仍然需要引用回值,但expand.grid似乎能够处理:

expand.grid(x,y)[outer(x,y, FUN=function(x,y) abs(x-y) < 0.01), ]
#   Var1 Var2
#2     2    2
#16    6    6

发布后我发现你的价值已被排序。事实证明,从expand.grid()中提取这些内容可以通过未排序的向量。

答案 2 :(得分:1)

x[x %in% y]
[1] 2 6

或者,更明确地说:

x[match(x, y, nomatch = 0) > 0]
[1] 2 6

请注意,您实际上将match的结果与简单索引一起链接到输入值中。

请参阅?match