在 R 中写入函数时出错:产生 NaN

Error in function writing in R: NaNs produced

提问人:user19745561 提问时间:6/13/2023 最后编辑:user19745561 更新时间:6/13/2023 访问量:143

问:

这是我第一次写一个函数,很抱歉这个愚蠢的问题。

formula <- function(x,y){
  z <- x*(1-x)
  t <- y*(1-y)
  k <- sum(z,t)
  l <- k/2
  
return((x-y)/sqrt(l))
  
  }

formula(60.5,40.3)

有一个错误:

[1] NaN
Warning message:
In sqrt(l) : NaNs produced

错误是什么?我正在尝试复制这个公式:

enter image description here

编辑2:enter image description here

R 函数 错误处理 语法错误

评论

1赞 G. Grothendieck 6/13/2023
Z、T、K 和 L 都是负数,当你尝试取负数的平方根时,这就是你得到的。
0赞 Ricardo Semião e Castro 6/13/2023
您的函数是正确的,但您拥有的公式仅在数学上定义为 0<=x<=1、0<=y<=1,并且 x 和 y 不能同时等于 1 或 0)。否则,你最终会得到 0 在分母上 ou 负平方根。
0赞 user19745561 6/13/2023
@RicardoSemiaoeCastro 谢谢,我该如何解决问题?
0赞 Ricardo Semião e Castro 6/13/2023
这本身不是问题。您为其创建函数的计算仅在该域中才有意义。函数的用户必须知道这一点,并且不能使用未定义的值。作为函数开发人员,你能做的最好的事情就是添加一个调用,以警告用户在这些情况下的错误。stop()
2赞 Allan Cameron 6/13/2023
当您应该使用比例时,您是否可能使用百分比作为输入?尝试 ,或让函数在运行计算之前将输入除以 100。formula(0.605 0.,403)

答: 暂无答案