代码之家  ›  专栏  ›  技术社区  ›  Arut

R保留矩阵行(如果在其他矩阵中可用),省略NAs

  •  0
  • Arut  · 技术社区  · 7 年前

    如果行包含在矩阵m2的一行中,我找不到一种只保留矩阵m1中的行的有效方法。矩阵m2可以包含不必与矩阵m1行匹配的NA。请参见以下示例:

    m1 = matrix(c(1:6), ncol=2, byrow = T)
    m2 = matrix(c(NA, 4, NA, 2), ncol=2, byrow=T)
    

    运行代码m1后,应:

    enter image description here

    矩阵m1保留第1行,因为m1的第2列与m2中的第2列匹配(NA必须省略)。此外,矩阵m1保留第2行,因为m1的第2列与m2中的第1列匹配。 理想情况下,为了保持高性能,不应该使用循环来解决这个问题。它必须适用于大型矩阵。 谢谢你的帮助!

    1 回复  |  直到 7 年前
        1
  •  0
  •   Rui Barradas    7 年前

    如果我理解正确,也许下面的内容就可以了。

    inx <- m1[, 1] %in% m2[, 1] | m1[, 2] %in% m2[, 2]
    m1[inx, ]
         [,1] [,2]
    [1,]    1    2
    [2,]    3    4