繁体   English   中英

如果 R 循环中有错误,则返回 NA 或零并继续循环

[英]If there's an error in an R loop, return NA or zero and continue with the loop

我正在构建一个 R Shiny 应用程序,当引入错误时它会变得非常麻烦。 我有一个 dataframe 并且我正在使用 NLS function 循环遍历行并返回 EC50 值。 然后将 EC50 添加到原始 dataframe 中进行显示。 并非每个观察都适合,因此它会返回错误并且应用程序会中断。

我想要的是一种在出现错误时返回 NA 或 0 并让循环继续进行其他观察的方法。 代码的一个简单示例是

df <- data.frame(x = c(1,2,3), y = rep('hi',3))

addition <- function(a,b){
  result <- a+b
  return(result)
}

df$z <- 1
for (i in 1:length(df$x)){
  df$z[i] <- addition(df$x[i], df[i,i])
}

我想要的结果如下:

X 是的 z
1 你好 2
2 你好 不适用
3 你好 6

这只是一个示例。 我正在做的事情更复杂,但我想返回 NA/0 任何类型的错误,并且由于它是用户上传的文件,我无法知道错误将出现在哪个索引中。

你可以在这里使用tryCatch 当捕获到错误时,它可以简单地返回一个NA 否则返回计算结果:

df <- data.frame(x = c(1,2,3), y = rep('hi',3))
df$z <- 1

for (i in 1:length(df$x)){
   df$z[i] <- tryCatch(
    addition(df$x[i], df[i,i]), 
    error = function(e) return(NA)
    )
}

df
#>   x  y  z
#> 1 1 hi  2
#> 2 2 hi NA
#> 3 3 hi  4

代表 package (v2.0.1) 于 2022 年 8 月 10 日创建

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM