2013-07-22 3 views
0

Я написал код для вычисления количества второго набора данных, когда количество первого набора данных является максимальным, но в конце для некоторой широты и долготы я получил очень большое число, которое не находится в первый набор данных. Вот ядро ​​кода:команда which.max в R

PW.storm <- array(NA,dim=c(length(lon1),length(lat1))) 
for (i in 1:length(lon1)){ 
    for (j in 1:length(lat1)){ 
     for (k in 1:length(time)){ 
      t <- time.when.dat1.max <- which.max(abs(dat1[i,j,])) 
      PW.storm[i,j] <- abs(dat2[i,j,t]) 
     } 
    } 
} 
+7

Возникли вопросы здесь? (Я слышал, что они обычно заканчиваются вопросительным знаком.) – A5C1D2H2I1M1N2O1R2T1

+0

Обратите внимание на свойства привязки 'which.max' - read'? Which.max' и попробуйте 'which (x == max (x)' в качестве альтернативы если у вас есть связи. –

ответ

1

Вы код предполагает, что Вы не понимаете, что возвращается на which.max. У вас есть:

time.when.dat1.max <- which.max(abs(dat1[i,j,])) 

Это не «время, когда dat1 max». Это индекс в третьем измерении dat1 в условиях i и j. Если разы были значениями в этом третьем измерении, то вам нужно будет использовать это, чтобы получить значение времени:

time.when.dat1.max <- dat1[i,j, which.max(abs(dat1[i,j,]))] 

Если я угадал о том, что держит объект DAT1, то вы должны сделать лучшую работу описывая настройку данных, редактируя свой вопрос.

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