I'm curious if anyone has used this pattern with success?
And are there any pitfalls folks might see here?
Pipeline terminating with %0% stop()
Take an arbitrary dplyr pipeline that might yield zero rows, and in those cases you want to return a special object that's also returned if there are any errors encountered along the pipeline:
tryCatch({
data %>%
f1() %>%
f2() %>%
f3() %0% stop()
}, error = function(e) {
## perhaps warn here.
my_default_sentinel_obj
})
Note that the last step of the pipeline is %0% stop()
(using vctrs's %0%
).
This appears to be a very compact 'last step checker' of a pipeline, which could also be written like so (amongst other ways):
f(3) %>% function(x) if (nrow(x) == 0) stop() else x ## functionally same as above?
Have other folks ever used the compact pattern?
Some light testing suggests it works just fine, but perhaps I'm missing some nuanced pitfalls?