R获取大矩阵中小矩阵的补码

时间:2020-06-22 23:55:40

标签: r

我有一个n×2矩阵A和m×2矩阵B,其中m B中找到A的补码,即A中所有不在B中的行。我将如何在base r中做到这一点?

setdiff不起作用,因为它不遵守矩阵结构。 rbind + duplicate也不起作用,因为B中可能有一些行根本不在A中。

1 个答案:

答案 0 :(得分:0)

我们可以按行paste的值,并使用B检查它们是否存在于%in%中:

A[!paste(A[, 1], A[, 2], sep = '-') %in% paste(B[, 1], B[, 2], sep = '-'),]

使用可复制的数据:

A <- matrix(1:16, ncol = 2)
B <- matrix(c(2, 10, 1, 2, 5, 13, 6, 14, 8, 16), ncol = 2, byrow = TRUE)
A
#     [,1] [,2]
#[1,]    1    9
#[2,]    2   10
#[3,]    3   11
#[4,]    4   12
#[5,]    5   13
#[6,]    6   14
#[7,]    7   15
#[8,]    8   16

B
#     [,1] [,2]
#[1,]    2   10
#[2,]    1    2
#[3,]    5   13
#[4,]    6   14
#[5,]    8   16

A[!paste(A[, 1], A[, 2], sep = '-') %in% paste(B[, 1], B[, 2], sep = '-'),]

#     [,1] [,2]
#[1,]    1    9
#[2,]    3   11
#[3,]    4   12
#[4,]    7   15
相关问题