我写了一个简单的函数,但我想知道为什么我得到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)
Run Code Online (Sandbox Code Playgroud)
功能:
跑:
err1(en,en1,en2)
Run Code Online (Sandbox Code Playgroud)
结果:
[1] NaN
Warning message:
In sqrt(mean(((pr - ob) * (ob - ref)), na.rm = na.rm)) : NaNs produced
Run Code Online (Sandbox Code Playgroud)
对此有任何想法
您获得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
Run Code Online (Sandbox Code Playgroud)