我有以下两个数字向量:
A <- c(1, 3, 5, 7, 9)
B <- c(2, 3, 4, 5, 6, 10, 12, 13)
我想生成一个新的向量C
,其中包含在A
和B
中都存在的值(而不是找到这些值的位置)。结果应该是:
C <- c(3, 5)
我还想生成一个向量D
,其中包含A
中存在的值,但不包含在B
中;以及向量E
,包含{{1}中存在的值}},而不是B
。
A
使用基数R的最佳方法是什么?谢谢!
答案 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