【问题标题】:How can I check if a matrix is an element of a list of matrices? in R如何检查矩阵是否是矩阵列表的元素?在 R 中
【发布时间】:2014-05-09 11:42:56
【问题描述】:

我对 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 &lt;- list(mat, mat2) 创建该列表,或者,如果您想要命名元素,例如matlist &lt;- list(m1=mat, m2=mat2)

标签: r vector matrix matching elements


【解决方案1】:

你可以试试这样的:

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))
}

那就试试吧:

matrix_is_in(mat,matlist)

【讨论】:

  • 或者,更简单地说,sapply(matlist, identical, mat)
  • 太棒了! sapply(matlist,identical,mat) 返回 TRUE FALSE 但我可以将它嵌入到 any() 中,我得到了我所需要的。谢谢!
猜你喜欢
  • 2019-03-09
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多