如何在R中的数组中查找数字序列?

如何在R中的数组中查找数字序列?,r,sequence,pattern-finding,R,Sequence,Pattern Finding,我想在数组中找到一个特定的数字序列。例如,假设我想找到两个数字7的序列,即c(7,7) 以矩阵M为例,在哪里 set.seed(100) M = matrix(sample(10,100,replace = T), nrow = 10) 如果运行代码,则M[5,4]和M[5,5]都等于7。矩阵M的序列和我要找的序列相同 因此,我想知道序列所在行的索引,因此,我的答案是5。为了更好,我想知道序列开始的列。在这种情况下,这将是4 我在StackOverflow上找到了与此主题相关的两个答案。及 问

我想在数组中找到一个特定的数字序列。例如,假设我想找到两个数字7的序列,即c(7,7)

以矩阵M为例,在哪里

set.seed(100)
M = matrix(sample(10,100,replace = T), nrow = 10)
如果运行代码,则M[5,4]和M[5,5]都等于7。矩阵M的序列和我要找的序列相同

因此,我想知道序列所在行的索引,因此,我的答案是5。为了更好,我想知道序列开始的列。在这种情况下,这将是4

我在StackOverflow上找到了与此主题相关的两个答案。及

问题1是关于在数组中查找序列。我尝试将给出的解决方案与
apply
函数耦合,如中所示

apply(M, 1, *solution from Question 1*)
但是没有成功

问题2似乎做了我想做的,但它在HPH中,我没有完全掌握代码

要做到这一切,我使用R。
感谢您的反馈。

矩阵或数组中项目的顺序是“列主”的,因此如果您想要在列和行中出现序列,则需要测试原始矩阵及其转置

> which(diff(M)==0)
[1]  5 17 48 61 68 75
> which(diff(t(M))==0)
[1]  5  7  8 35 40 64 90
> M
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    4    7    6    5    4    4    5    5    5    10
 [2,]    3    9    8   10    9    2    7    4    6     3
 [3,]    6    3    6    4    8    3   10    6   10     4
 [4,]    1    4    8   10    9    3    7   10   10     5
 [5,]    5    8    5    7    7    6    5    7    1    10
 [6,]    5    7    2    9    5    3    4    7    6     4
 [7,]    9    3    8    2    8    2    5    9    8     6
 [8,]    4    4    9    7    9    3    5    8    3     2
 [9,]    6    4    6   10    3    6    3    9    4     1
[10,]    2    7    3    2    4    3    7    1    8     8
第一个结果中的“5”是指位置[5:6,1]中的5,而在转置M上完成的结果中的5是指位置[1,5:6]中的4。在第二个结果中,你所询问的相邻的7由35确定

你可能想看看这两个矩阵。如果您希望将结果与原始结果“对齐”,则可以在第二行末尾添加一列FALSE,在第一行下方添加一行oof FALSE:

 t(diff(t(M))==0)
       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9]
 [1,] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE
 [2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [4,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [5,] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8,]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
> diff(M)==0
       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10]
 [1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3,] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [4,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [5,]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7,] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [8,] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

请添加一个可复制的示例。参考