У меня есть эта матрица:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 0 0 0 0 0 0 0
[2,] 0 1 1 0 0 0 0 0
[3,] 0 0 1 1 0 0 0 0
[4,] 0 0 0 1 1 0 0 0
[5,] 0 0 0 0 1 1 0 0
[6,] 0 0 0 0 0 1 1 0
[7,] 0 0 0 0 0 0 1 1
Что я хочу сделать, это отфильтровать эту матрицу по строкам, где минимальное количество последовательных 0 и 1 равно n.
Например, если n = 2
, ожидаемый результат должен быть следующим:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0 0 1 1 0 0 0 0
[2,] 0 0 0 1 1 0 0 0
[3,] 0 0 0 0 1 1 0 0
[4,] 0 0 0 0 0 0 1 1
Как видите, строки 1, 2 и 6 исходной матрицы имели минимум только один последовательный 1, один последовательный 0 и один последовательный 0 соответственно.
Если n = 3
, ожидаемый вывод должен быть пустой матрицей, поскольку ни одна строка не имеет минимум трех последовательных 0 и трех последовательных 1 одновременно.
Есть ли способ создать функцию, которая принимает в качестве входных данных матрицу и значение n и дает ожидаемый результат в R?
Это матрица примера:
matrix(c(1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0,
0, 0, 1, 1, 0, 0, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0,
0, 0, 0, 0, 1, 1, 0, 0,
0, 0, 0, 0, 0, 1, 1, 0,
0, 0, 0, 0, 0, 0, 1, 1), byrow = T, ncol = 8)