如果可能的话,我想使用purrr
的lambda ~
,而不是像下面这样在tryCatch中写出function(e)
:
tryCatch(suppressWarnings(load("foo.R")),
error = function(e) {
foo <- "a"
save(foo, file = "foo.R")
})
我实际上并没有使用e
作为参数,并且~
比function(e)
短10个字符。仅仅交换~
是行不通的,所以我怀疑我是在误用~
还是tryCatch
无法容纳它。
file.remove("foo.R")
#> [1] TRUE
tryCatch(suppressWarnings(load("foo.R")),
error = ~ {
foo <- "a"
save(foo, file = "foo.R")
})
#> Error in value[[3L]](cond): attempt to apply non-function
(我知道file.exists
可以代替tryCatch
结构用于这种事情,但是正如this线程中的答案指出的那样,还有其他错误尝试加载文件时可能会抛出该错误。)
答案 0 :(得分:2)
一种选择是使用as_mapper
中的purrr
library(purrr)
file.remove("foo.R")
#[1] TRUE
tryCatch(suppressWarnings(load("foo.R")),
error = as_mapper(~ {
foo <- "a"
save(foo, file = "foo.R")
}))
list.files()
#[1] "foo.R"