Я хочу получить индекс, который ссылается на позиции значений NA в матрице, где индекс равен true, если заданная ячейка является NA, и в столбце есть по крайней мере одно значение, отличное от NA. Например, с учетом следующей матрицы
[,1] [,2] [,3] [,4]
[1,] NA 1 NA 1
[2,] 1 NA NA 2
[3,] NA 2 NA 3
единственное значение индекса, которое возвращает TRUE, должно быть [2,2].
Есть ли компактное выражение для того, что я хочу сделать? Если бы мне пришлось, я мог бы пройтись по столбцам и использовать что-то вроде min(which(!is.na(x[,i])))
, чтобы найти первое не-NA значение в каждом столбце, а затем установить все значения до этого в FALSE (и то же самое для всех значений после max). Таким образом, я бы не стал выбирать начальные и конечные значения NA. Но это выглядит немного грязно, поэтому мне интересно, есть ли более чистое выражение, которое делает это без циклов.
РЕДАКТИРОВАТЬ Чтобы быть действительным, значение NA должно иметь значение, отличное от NA, до и после него где-то внутри столбца, но не обязательно рядом с ним. Например, если столбец был определен c (NA, 3, NA, NA, NA, 4, NA), то я хочу найти те NA, которые находятся в позициях 3, 4 и 5, поскольку они заключены в не-NA значения.