我是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 的参数;返回 Inf2:在 max(x) 中:max 没有不缺少参数;返回 -Inf
数据集没有 NA,并且全是数字。我也用range(testingQ, na.rm = FALSE)
运行range(testingQ, na.rm = TRUE)
只是为了尝试一下,它返回了数据集中的最大值和最小值。我不确定还能尝试什么。期待有人的解决方案!谢谢。
似乎已经解决并在评论中写下的内容:
- 问题与 NLS 或 Max 无关
- 问题是由于对数据帧列的访问错误,要么语法错误,要么您通过定义具有这些名称的变量来掩盖 Q、GR 的定义
- 然后给你一个空向量,这导致 max 返回 Inf/-Inf
- 解决方案是修复列访问,或者不定义有问题的阴影变量
我的提示:总之,max 和 min 在 R 中很痛苦,因为它们不能很好地处理 NA 或完全空的输入。因此,始终要么盯着他们的输入向量仔细检查其合理性,要么将他们的输入分配给一个变量并检查它。
我同意 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
免责声明 自从我编写该软件包以来,我对这个解决方案有偏见。