也许仅仅用base::merge()
就足以做你想做的事了?例如:
set.seed(123)
my_mat <- matrix(c(1, 2, 3, 4), 2, 2)
large_mat <- matrix(sample(1:4, 100, replace = TRUE), ncol = 2)
head(large_mat)
#> [,1] [,2]
#> [1,] 3 4
#> [2,] 3 1
#> [3,] 3 3
#> [4,] 2 1
#> [5,] 3 3
#> [6,] 2 4
any_common <- if (nrow(merge(large_mat, my_mat)) == 0) FALSE else TRUE
any_common
#> [1] TRUE
如果您想知道大矩阵匹配中的which行,则需要做更多的工作:
set.seed(123)
my_mat <- matrix(c(1, 2, 3, 4), 2, 2)
large_mat <- matrix(sample(1:4, 100, replace = TRUE), ncol = 2)
large_mat <- as.data.frame(large_mat)
large_mat$row_num <- 1:nrow(large_mat)
head(large_mat)
#> V1 V2 row_num
#> 1 3 4 1
#> 2 3 1 2
#> 3 3 3 3
#> 4 2 1 4
#> 5 3 3 5
#> 6 2 4 6
which_common <- merge(large_mat, my_mat)$row_num
which_common
#> [1] 14 23 25 12 13 6 30
any_common <- if (length(which_common) == 0) FALSE else TRUE
any_common
#> [1] TRUE
创建于2023-11-01年第reprex v2.0.2页