简单的函数给出NaNs的结果?

时间:2013-07-24 11:36:21

标签: r

我写了一个简单的函数,但我想知道为什么我得到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

请关注此事

1 个答案:

答案 0 :(得分: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