如何在R中检查矩阵是否为矩阵列表的元素?

5

我在R编程方面还是比较新手。

我有一个数字矩阵mat,以及一个矩阵列表matlist。我想要检查矩阵mat是否与matlist中的任何元素相匹配(即完全相同)。我尝试了%in%方法,但这并没有给出我所希望的输出结果。

以下是类似于我的代码的东西。

mat <- rbind(c(0,1),
             c(1,0))
mat2 <- rbind(c(1,1),
              c(1,0))
matlist <- vector(mode="list", 2)
matlist[[1]] <- mat
matlist[[2]] <- mat2

如果我尝试mat %in% matlist,我会得到:FALSE FALSE FALSE FALSE 我正在寻找这样的表达式,它将评估为TRUE
这似乎应该非常简单,但我找不到答案!

请注意,您还可以使用 matlist <- list(mat, mat2) 创建该列表,或者,如果您想要为元素命名,则可以使用 matlist <- list(m1=mat, m2=mat2) - jbaums
1个回答

6
你可以尝试这样做:sapply(matlist,function(x) identical(x,mat)),或者像@jbaums在下面提到的那样:sapply(matlist,identical,mat)。或者自己构建一个定制函数来检查任何矩阵列表中的任何矩阵:
matrix_is_in <- function(my_mat, my_mat_list) {
      sapply(my_matlist, function(x) identical(x, my_mat))
}

然后尝试一下: < p > matrix_is_in(mat,matlist)


3
或者更简单地说,sapply(matlist, identical, mat) - jbaums
1
太好了!sapply(matlist,identical,mat) 返回 TRUE FALSE,但我可以将其嵌入到 any() 中,这样我就得到了我需要的结果。谢谢! - user3477111

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接