2013-07-24 81 views
-1

我寫了一個簡單的函數,但我想知道爲什麼我會將NaN作爲結果。 下面是代碼:簡單函數給出結果爲NaNs?

數據

 en1=c(1,9,5,9,8,7) 
     en=c(1,5,4,9,3,7) 
     en2=c(1,4,5,4,8,7) 

功能:

運行:

 err1(en,en1,en2) 

結果:

  [1] NaN 
      Warning message: 
     In sqrt(mean(((pr - ob) * (ob - ref)), na.rm = na.rm)) : NaNs produced 

任何想法,這個請

回答

5

由於負數的平方根未定義(對於實數),因此您獲得NaN

你可能希望在你的函數中使用abs

err1 <- function(pr,ob,ref,na.rm=TRUE){ 
    sqrt(mean(abs((pr-ob)*(ob-ref)), na.rm = na.rm))}  

err1(en,en1,en2) 
[1] 1.825742 
相關問題