2015-05-05 3 views
2

Я работаю с многомерными массивами и делаю сравнения для каждого элемента. До сих пор я использовал циклы, но мне было интересно, как я могу использовать приложение (или другую лучшую функцию, чтобы избежать циклов). Я не уверен. Я пробовал несколько способов, но он не работает нормально.замена циклов при сравнении многомерных массивов

Скажем, следующий пример, где я вычислить 95-процентиль для элементов 3-размерности, а потом сделать сравнение:

 m <- array(1:30, c(5,4,3)) 
     mp <- apply(m,1:2,quantile,probs=c(.95),na.rm=TRUE) 
     temp  <- array(dim=dim(m)) 

     for(i in 1:5){ 
     for(j in 1:4){ 
      temp[i,j,] <- m[i,j,]>mp[i,j] 
     } 
     } 

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

Заранее благодарен!

ответ

2

Вы можете использовать векторизации и назначая размеры после оценки вашего состояния:

array(as.vector(m)>as.vector(mp),dim(m)) 
+1

Я видел ваш ответ только после отправки. Это был бы путь. Вы можете сделать его компактным с 'c'' array (c (m)> c (mp), dim (m))' – akrun

+0

Прохладный! большое спасибо :) простой способ сделать это! – user3231352

Смежные вопросы