2012-07-29 71 views
0

說,我想要一個例程在數組中找到NA時停止。我怎樣才能做到這一點?在數組中找到NA

「if(array(i).eq。NA)...」似乎不起作用。謝謝,

UPDATE:

陣列是浮點數的數組,例如,

REAL :: arrya(35)

回答

6

如果你真正需要的NaN S和你有一個最新的編譯器,則ieee_is_nan()功能應該做的伎倆。我認爲你需要use ieee_arithmetic或其他固有IEEE模塊之一。

如果你的編譯器不是那麼新,它可能有通用的但非標準的isnan()函數。

2

您的問題沒有很好的約束。 array是一串字符串嗎?例如

character(len=20) :: array(40) 

如果是這樣的話,你應該能夠只是做:

do i=1,40 
    if(array(i).eq."NA")then 
     exit 
    else 
     !do something else 
    endif 
enddo 

如果是浮點數的數組(和NA被定義爲某些浮點常量),您可能需要小心,因爲浮點運算很少精確,並且舍入誤差可能會導致計算結果在數學上等同於實際評估不同值。換句話說,解決這個問題實際上取決於如何NAarray聲明...

+0

對不起,我應該更具體。 「數組」應該是一個浮點數的數組。感謝您的回覆。 – 2012-07-29 04:19:42

+0

@Lagrange - 但什麼是NA?它是一個定義的值嗎?它是NaN嗎? – mgilson 2012-07-29 10:27:43

+0

是的,它是NaN。 – 2012-07-30 01:17:42