我正在使用德雷克计划拟合一堆模型。其中一些由于初始化问题而失败。我正在运行make(plan,keep_going = T)来完成计划,但是我真正想要的是能够跳过失败的目标并将其视为计划其余部分中的缺失值。
总有没有用一个NA
符号代替失败的目标?
答案 0 :(得分:1)
这里是一个比我最初提供的示例更好的示例。您需要做的就是将模型包装到一个自定义函数中,该函数会将故障转变为NA
s。
library(drake)
fail_na <- function(code) {
tryCatch(code, error = error_na)
}
error_na <- function(e) {
NA
}
plan <- drake_plan(
failure = fail_na(stop()),
success = fail_na("success")
)
make(plan, keep_going = TRUE)
#> In drake, consider r_make() instead of make(). r_make() runs make() in a fresh R session for enhanced robustness and reproducibility.
#> target success
#> target failure
readd(failure)
#> [1] NA
readd(success)
#> [1] "success"
由reprex package(v0.3.0)于2019-11-14创建
可能,但是需要一些自定义代码。在下面,我们需要检查x
是NULL
还是缺失。
library(drake)
`%||%` <- function(x, y) {
if (is.null(x)) {
y
} else {
x
}
}
na_fallback <- function(x) {
out <- tryCatch(
x %||% NA,
error = function(e) {
NA
}
)
out
}
plan <- drake_plan(
x = stop(),
y = na_fallback(x)
)
make(plan, keep_going = TRUE)
#> In drake, consider r_make() instead of make(). r_make() runs make() in a fresh R session for enhanced robustness and reproducibility.
#> target x
#> fail x
#> target y
readd(y)
#> [1] NA
由reprex package(v0.3.0)于2019-11-14创建