0

我是 R 的初学者,正在研究水质数据。请原谅我的格式错误。我正在尝试在我的数据集上运行“nls”。运行脚本:

testingQModel<-nls(GR ~ GRm * (1-Kq/Q), data = testingQ, start = list(Kq = min(testingQ$Q), GRm = max(testingQ$GR)))

我收到以下错误:

警告消息:1:在 min(x) 中:min 没有非缺失参数;返回 Inf 2:在 max(x) 中:max 没有非缺失参数;返回-Inf

数据集没有 NA,全是数字。range(testingQ, na.rm = TRUE)我也跑了,range(testingQ, na.rm = FALSE)只是为了试一试,它返回了数据集中的最大值和最小值。我不确定还能尝试什么。期待有人的解决方案!谢谢。

4

2 回答 2

1

总结一下您似乎已经解决并写在评论中的内容:

  • 问题与 nls 或 max 无关
  • 问题是由于对数据框列的访问不正确,要么是语法错误,要么是您通过定义具有这些名称的变量来掩盖 Q、GR 的定义
  • 然后这给了你一个空向量,这导致 max 返回 Inf/-Inf
  • 解决方案是修复列访问,或者不定义有问题的阴影变量

我的提示:summary、max 和 min 在 R 中很痛苦,因为它们不能很好地处理 NA 或完全空的输入。因此,请始终关注他们的输入向量以仔细检查其完整性,或者将他们的输入分配给一个变量并检查它。

于 2014-03-16T02:42:55.620 回答
0

我同意 smci,像 min 这样的汇总函数在 R 中很痛苦。

hablar 包中有一个解决方案,它解决了在给定空向量时 min/max 返回 Inf 的问题。函数 s 将一个空向量 (NULL) 转换为 NA。

问题

min(NULL)

[1] Inf
Warning message:
In min(NULL) : no non-missing arguments to min; returning Inf

解决方案

library(hablar)

min(s(NULL))
[1] NA

免责声明我对这个解决方案有偏见,因为我编写了这个包。

于 2018-10-31T07:41:06.973 回答