簡體   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