function
如果它抛出一个错误,它将以一定的延迟重复(在我的示例中只有一次,最好是两次不同的延迟)。如果函数在两次尝试后不起作用,它应该返回
NA
read.csv
只是举例说明,在我的真实数据中,它是一个刮取函数。
这篇文章有些帮助
using tryCatch with Sys.sleep upon encountering an error
muhur <- function(x){if (is.na(try_catch({read.csv(x)},
.w=function(w){message("error1")},
.e=function(e){return(NA_character_)})))
{message("warning, delay 10 s")
Sys.sleep(10)
try_catch({read.csv(x)},
.w=function(w){message("error2")},
.e=function(e){return(NA_character_)})}
else {try_catch({read.csv(x)},
.w=function(w)message("error3"),
.e=function(e)return(NA_character_))}
}
我的问题是:
我的方法相当费劲,没有抛出第一条错误消息。此外,我不知道如何进行第二次尝试。
test<- data.frame(a=c("test1","test"))
test%>% group_by(a) %>% mutate(b=muhur(a))
warning, delay 10 s
warning, delay 10 s
# A tibble: 2 x 2
# Groups: a [2]
a b
<fct> <chr>
1 test1 <NA>
2 test <NA>
我的问题是:
对我的问题有没有更好的解决办法?