查找两个或多个不等长向量中的值

时间:2019-02-22 13:22:29

标签: r

我有以下两个数字向量:

A <- c(1, 3, 5, 7, 9)
B <- c(2, 3, 4, 5, 6, 10, 12, 13)

我想生成一个新的向量C,其中包含在AB中都存在的值(而不是找到这些值的位置)。结果应该是:

C <- c(3, 5)

我还想生成一个向量D,其中包含A中存在的值,但不包含在B中;以及向量E,包含{{1}中存在的值}},而不是B

A

使用基数R的最佳方法是什么?谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用基本的R函数intersect()

此外,一般来讲,我不会将C用作变量名,因为它确实接近c(),这可能会给您带来麻烦。

A <- c(1, 3, 5, 7, 9)
B <- c(2, 3, 4, 5, 6, 10, 12, 13)

Inter <- intersect(A, B)

[1] 3 5

与“ intersect()”相反:

#taken from here:https://www.r-bloggers.com/outersect-the-opposite-of-rs-intersect-function/
outersect <- function(x, y) {
  sort(c(setdiff(x, y),
         setdiff(y, x)))
}

outersect(A, B)
[1]  1  2  4  6  7  9 10 12 13

答案 1 :(得分:0)

A <- c(1, 3, 5, 7, 9)
B <- c(2, 3, 4, 5, 6, 10, 12, 13)
C <- A[!A%in%B]
D <- B[!B%in%A]

哪个产量

> C
[1] 1 7 9
> D
[1]  2  4  6 10 12 13