R 脚本问题 - is.na 告诉我条件长度 > 1

发布于 2024-12-01 03:24:13 字数 333 浏览 4 评论 0原文

在我的 r 脚本中,我确实执行 nls 来获取合适的值:

fit <- nls(...)

然后,我通过这样做来测试 nls 是否成功:

if(is.na(fit)) {
  print("succeeded")
}

但我收到警告:

the condition has length > 1 and only the first element will be used

我做错了吗?如果是这样,我该怎么办?如果没有,如何删除警告?谢谢!

In my r script, I do perform an nls to get a fit value:

fit <- nls(...)

and then after that, I test if the nls succeeded by doing this:

if(is.na(fit)) {
  print("succeeded")
}

but I get warnings:

the condition has length > 1 and only the first element will be used

am I doing this wrong? if so, what should I do? if not, how do I remove the warning? thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

_畞蕅 2024-12-08 03:24:13

如果拟合失败,nls 会引发错误。因此,在 try(nls(...)) 之后的 is.null 是正确的方法。

这是我在使用 nls 适合不确定数据时使用的一段代码:

fit <- NULL
while (TRUE) {
    start <- list(...) # try somewhat randomized initial parameter
    try(fit <- nls(..., start = start)) # performe nls
    if (!is.null(fit)) break;
}

nls induces an error if the fitting failed. So, is.null after try(nls(...)) is the correct way.

here is a piece of code I used when using nls fit for uncertain data:

fit <- NULL
while (TRUE) {
    start <- list(...) # try somewhat randomized initial parameter
    try(fit <- nls(..., start = start)) # performe nls
    if (!is.null(fit)) break;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文