![](/img/trans.png)
[英]R for loop gives: Error in if (is.na(x)) return(0) else return(sign(x)) : argument is of length zero
[英]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.