Вчера я запускал некоторый код, который включал разбиение матрицы на интервалы столбцов. То есть, учитывая nxp матрицу A и последовательность точек разрыва, я нарезал A, используя a для l oop. Первая часть была A [, 1: break_points [1]]. Второй кусок был A [, break_points [1] +1: break_points [2]]. Третий кусок был A [, break_points [2] +1: break_points [3]], et c.
К сожалению, выполнение завершилось ошибкой. Немного покопавшись, я обнаружил root проблемы: один из интервалов столбца был длиной 1. Как оказалось, A [, 3679: 3679] не работает должным образом. В частности,
A0 <- A[,3679:3680]
ncol(A0)
> 2
, но
A0 <- A[,3679:3679]
ncol(A0)
> NULL
Я знаю, как это исправить: просто создайте исключение if-else для случая, когда break_points [i + 1] - break_points [i ] = 1. Но мне любопытно, почему R по-разному относится к срезам столбцов длины 1.