R 简单函数给出的结果是NaN?

R 简单函数给出的结果是NaN?,r,R,我写了一个简单的函数,但我想知道为什么我会得到NaN作为结果。 代码如下: 资料 功能: 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 运行: 结果: [1] NaN Warning message: In sqrt(mea

我写了一个简单的函数,但我想知道为什么我会得到NaN作为结果。 代码如下:

资料

功能:

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
运行:

结果:

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

有什么想法吗?请

因为负数的平方根是未定义的(对于实数)

您可能希望在功能中使用
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
err1
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