r语言 - 以错误的方式访问 df 列会导致空向量,"no non-missing arguments to min/max, returning Inf/-Inf"



我是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

免责声明 自从我编写该软件包以来,我对这个解决方案有偏见。

相关内容

最新更新