因此,我试图了解R中tryCatch的范围和功能。
下一行:
arima(rep(1,3), order = c(1,0,0))
生成警告和错误,但是在tryCatch块中,仅警告函数返回值。如何获得警告和错误的返回值?
tryTest = tryCatch(
{
arima(rep(1,3), order = c(1,0,0))
},
warning = function(w) {
print('this is warning')
print(w)
return('return string from warning')
},
error = function(e) {
print('this is error')
print(e)
return('return string from error')
},
finally = {}
)
print(tryTest)
仅产生:
"return string from warning"
最佳答案
R中的tryCatch允许您在出错时为变量分配一个值。这是两个最小的示例:
my_logo <- tryCatch(
{
my_logo <- RCurl::getURLContent("https://invalid.website")
},
error = function(cond){
my_logo <- "there is no image"
},
finally = {
#pass
})
> my_logo
[1] "there is no image"
my_var <- tryCatch(
{
my_var <- "a"/1
},
error = function(cond){
my_var <- "foo"
},
finally = {
#pass
})
> my_var
[1] "foo"
同样,您可以知道一个警告值。您不应编写tryCatch语句,以使其可能同时遇到错误和警告。我什至不确定这是否可行。
编辑:为了完整性,我添加了一个警告示例:
my_var <- tryCatch(
{
warning()
my_var <- "a"/1
},
warning = function(cond){
print("There was a warning")
return("bar")
},
error = function(cond){
my_var <- "foo"
print("This message will not be printed.")
},
finally = {
#pass
})
[1] "There was a warning"
> my_var
[1] "bar"
关于r - R中的tryCatch block ,返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48391287/