R中的tryCatch:返回出现警告时在try块中计算的内容 y
如果希望显示警告消息,只需将警告函数参数跳过到tryCatch即可R中的tryCatch:返回出现警告时在try块中计算的内容 y,r,try-catch,R,Try Catch,如果希望显示警告消息,只需将警告函数参数跳过到tryCatch即可 x <- 1:10000000 x2 <- seq_len(length(x)/17) y <- tryCatch({ sum(x/x2) }, error=function(err){ return(NULL) }, warning=function(warn){
x <- 1:10000000
x2 <- seq_len(length(x)/17)
y <- tryCatch({ sum(x/x2) },
error=function(err){
return(NULL)
},
warning=function(warn){
# how can I return the value of long_calculation(x)
# without recomputing?
return(sum(x/x2))
})
x如果希望显示警告消息,只需将警告函数参数跳过到tryCatch即可
x <- 1:10000000
x2 <- seq_len(length(x)/17)
y <- tryCatch({ sum(x/x2) },
error=function(err){
return(NULL)
},
warning=function(warn){
# how can I return the value of long_calculation(x)
# without recomputing?
return(sum(x/x2))
})
x这不就是通过删除对警告的引用来简化代码的问题吗
x <- c(1:10000000)
y <- tryCatch(suppressWarnings({
warning("Warning!")
sum(x)
}), error = function(err) return(NULL))
long\u calculation这不就是通过删除任何警告来简化代码的问题吗
x <- c(1:10000000)
y <- tryCatch(suppressWarnings({
warning("Warning!")
sum(x)
}), error = function(err) return(NULL))
long\u计算嗡嗡声。你能让你的例子重现吗?@RomanLuštrik我补充了一些东西。我不确定它是否是可复制的,因为我无法想象sum会发出警告的任何情况。我已经做了sum(x/x2)
发出警告。(发出警告的是/
,而不是sum
)。我认为您必须使用函数,而不是tryCatch
,才能返回部分结果(假设我理解正确)。哼。你能让你的例子重现吗?@RomanLuštrik我补充了一些东西。我不确定它是否是可复制的,因为我无法想象sum会发出警告的任何情况。我已经做了sum(x/x2)
发出警告。(给出警告的是/
,而不是sum
)。我认为您必须使用函数,而不是tryCatch
,才能返回部分结果(假设我理解正确)。实际上,我想做的是能够捕获警告消息。这就是为什么我需要给警告参数赋值。然后我仍然想返回计算的结果。。。实际上,我想做的是能够捕获警告消息。这就是为什么我需要给警告参数赋值。然后我仍然想返回计算的结果。。。实际上,我想做的是能够捕获警告消息。这就是为什么我需要给警告参数赋值。然后我仍然想返回计算的结果。。。实际上,我想做的是能够捕获警告消息。这就是为什么我需要给警告参数赋值。然后我仍然想返回计算的结果。。。没有重新计算它。
long_calculation <- function(x){
x2 <- seq_len(length(x)/17)
sum(x/x2)
}
x <- 1:10000000
y <- tryCatch({ long_calculation(x) },
error = function(err) NULL
)
#Warning message:
#In x/x2 :
# longer object length is not a multiple of shorter object length
y
#[1] 1141800633