我在case_when()
内有一个mutate()
,如果条件TRUE
得到满足,我希望R停止并抛出错误。这是出于调试目的。
例如,mtcars $ cyl的值为4、6或8。在第四行中有了适当的解决方案后,它应该可以正确运行:
mtcars %>%
mutate(test = case_when(
cyl > 3 ~ "ok",
TRUE ~ # code for throwing error here
))
这应该引发错误:
mtcars %>%
mutate(test = case_when(
cyl < 3 ~ "ok",
TRUE ~ # code for throwing error here
))
我尝试了stop
,但这会触发异常,即使从未实现TRUE
。
答案 0 :(得分:1)
据我所知,您无法在case_when
调用中做到这一点,因为所有RHS都将被预先评估以确保它们属于同一类型。
但是您可以这样做:
mtcars %>%
mutate(test = case_when(
cyl > 3 ~ "ok",
TRUE ~ NA_character_
),
test=if (anyNA(test)) stop() else test
)
或
mtcars %>%
mutate(test = case_when(
cyl > 3 ~ "ok",
TRUE ~ "STOP_VALUE"
),
test=if ("STOP_VALUE" %in% test) stop() else test
)