如何在R中的数组中查找数字序列?
我想在数组中找到一个特定的数字序列。例如,假设我想找到两个数字7的序列,即c(7,7) 以矩阵M为例,在哪里如何在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上找到了与此主题相关的两个答案。及 问
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
请添加一个可复制的示例。参考