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

use*_*111 4 r vector matrix elements matching

我对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
Run Code Online (Sandbox Code Playgroud)

如果我然后尝试mat %in% matlist我得到: FALSE FALSE FALSE FALSE

我正在寻找一个这样的表达式来评估TRUE.

这看起来应该很简单,但我找不到答案!

Gar*_*man 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))
}
Run Code Online (Sandbox Code Playgroud)

然后尝试一下:

matrix_is_in(mat,matlist)

  • 或者,更简单地说,"sapply(matlist,相同,mat)". (3认同)