Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中找到矩阵的模式?_R_Matrix - Fatal编程技术网

在R中找到矩阵的模式?

在R中找到矩阵的模式?,r,matrix,R,Matrix,我有一个叫做my_矩阵的矩阵,有5行5列,由1和0组成 test.matrix <- matrix(c(0,0,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,0,0,1),nrow=5) test.matrix [,1] [,2] [,3] [,4] [,5] [1,] 0 0 0 0 0 [2,] 0 1 1 0 1 [3,] 1 1 1 0 0 [4,

我有一个叫做my_矩阵的矩阵,有5行5列,由1和0组成

test.matrix <- matrix(c(0,0,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,0,0,1),nrow=5)
test.matrix

     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    0    0
[2,]    0    1    1    0    1
[3,]    1    1    1    0    0
[4,]    0    1    1    1    0
[5,]    0    0    0    0    1
我还想找到test.matrix的right2tile模式,如图所示:

      [,1] [,2]
[1,]    1    0
[2,]    1    0
      [,1] [,2]
[1,]    0    1
[2,]    0    1
对于left2tile,我想找到矩阵中唯一的2-tile的数量,其中最左边的两个条目是1,最右边的两个条目是0

对于right2tile,我想找到矩阵中唯一的2-Tile数,其中最右边的两个条目是1,最左边的两个条目是0


我知道这些可能重叠。知道如何在R中计算吗?

这里有一些示例函数,可以告诉您较大矩阵中有多少2x2矩阵与提供的2x2矩阵匹配。第一个助手函数创建一个2x2矩阵列表,输入矩阵由这些矩阵组成。第二个函数使用第一个helper函数并返回第二个矩阵参数中第一个矩阵参数的数量

# Helper functions
decompose=function(x) {
  two_by_two=list()
  k=1
  for (i in 1:(nrow(x)-1)) {
    for (j in 1:(ncol(x)-1)) {
      two_by_two[[k]]=matrix(c(x[i,j], x[i+1,j], x[i,j+1], x[i+1,j+1]), ncol=2)
      k=k+1
    }
  }
  return(two_by_two)
}

how_many=function(x, test) {
  my_list=decompose(test)
  bools=sapply(my_list, function(y) {
    return(identical(x, y))
  })
  return(sum(bools))
}

#Carrying it out
left2tile=matrix(c(1,1,0,0), ncol=2)

right2tile=matrix(c(0,0,1,1),ncol=2)

how_many(left2tile, test.matrix)

how_many(right2tile, test.matrix)

谢谢,这很有帮助