The ordering of items in a matrix or array is "column-major" so you would need to test both the original matrix and its transpose if you wanted sequences that occurred in both columns and rows.
> 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
The '5' in the first which result is referring to the 5's in positions [5:6,1] while the 5 in the which done on transposed M is referring to the 4's at position [1, 5:6]. The adjacent 7's you were asking about are identified by the 35 in the second result.
You might want to look at these two matrices. You could add acolumn a FALSE at the end of second and row oof FALSE below the first if you wnated to get the results to "line-up" with the original:
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