Найти индекс последнего появления выполненных критериев в матрице в r

#r #arrays #find #match

#r #массивы #Найти #совпадение

Вопрос:

У меня есть array ( x ) в R размером 30x11x10.

 x=array(-2:20, c(30,11,10))
 

Каждая «сетка» или матрица представляет день данных за месяц (здесь представлено 30 дней). Я хочу найти индекс ( i,j,k ) того, когда происходит последнее вхождение числа меньше 2. В идеале я бы также хотел, чтобы возвращаемое значение тоже возвращалось. Если бы это было в Matlab, я мог бы просто использовать [i,j,k]=find(x(x<2)) , но я не вижу точного эквивалента для этого в R.

Я просмотрел « match как предлагалось в других сообщениях здесь, но, похоже, он находит элементы, когда они указаны, но не тогда, когда задан критерий ( x<2 )? Я попробовал это: xxx<-match(x,x<2,0) но он возвращает длинный вектор целых чисел, которые, похоже, не показывают то, что я ищу. Затем я попробовал: xxx<-match(x,x[x<2],0) который выглядит немного более многообещающим, но все же это не то, что я хочу (честно говоря, я не уверен, какой результат индексируется).

Я думаю, что я, вероятно, задаю здесь глупый вопрос, потому что, если я хочу 3 индекса и возвращаемое значение, тогда я должен присваивать им что-то преимущественное право (чего я не делаю)? Кто-нибудь может дать какой-либо совет?

Комментарии:

1. Вы проверили пакет pracma ? Он имеет несколько удобных функций, которые напоминают стиль Matlab. Вот ссылка на CRAN . Функция, которую вы хотите найти, это find() .

2. @FrancescoGrossetti Спасибо. Функция находится finds в этом пакете. Это ближе к тому, что я хочу, но не совсем. Он возвращает линейные индексы значений меньше 2 (которые я могу использовать для индексации самого значения), но он не сообщает мне, в какой «день» это произошло (т. Е. «сетка» или «i» в моем i,j,k случае, где данные имеют размер 30x11x10)