У меня большой массив в R, скажем,
A = array(rnorm(100*100*30*30*100),dim=c(100,100,30,30,100))
Я бы хотел найти первую запись в 4-м измерении, которая меньше 1:
first_entry = apply(A,c(1,2,3,5),function(x) min(which(x < 1)))
Поскольку массив такой большой, на моем компьютере это займет некоторое время, около 20 секунд, и я собираюсь сделать это для большого количества массивов в будущем. Цикл for примерно такой же скорости. Я также пытался использовать parApply, но это занимает примерно то же время, если не дольше. Возможно, моя функция недостаточно сложна для распараллеливания, чтобы реализовать увеличение скорости. Есть ли более быстрый способ сделать это? И на самом деле, то, что я хотел бы сделать в идеале, это установить значения в другом массиве B (который имеет те же размеры, что и A) в 0. Итак, что-то вроде
B[first_entry] = 0
Обратите внимание, что это не работает, учитывая текущий вывод команды «apply» (см. Выше), поскольку размер first_entry равен 100x100x30x100.