2013-07-24 3 views
-1

간단한 함수를 작성했지만 결과로 NaN을 얻는 이유가 궁금합니다. 여기 코드입니다 :간단한 함수는 결과를 NaN으로 제공합니까?

데이터

 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 
관련 문제