我正在进行一些涉及大量试验和错误的科学实验。我基本上做的是沿着一系列数值方法传递一些对象,每个阶段都有一堆参数,如下所示:
x <- define_object(param1, param2) %>%
run_method(param3, param4) %>%
process_results(param5) %>%
save_plot(param6)
当一切顺利时,我很高兴。但是,每个阶段都可能失败(例如,我修改了源代码并留下了语法错误或方法与我提供的参数集不兼容),因此无论成功的步骤如何,整个链都会停止并且对象会丢失。在这种情况下,我希望将对象保持在其最新的有效状态(我称之为“安全状态”)。我需要它,因为每个阶段都需要相当长的时间来执行。
好吧,自然地,简单的答案是放弃管道范式并采用传统方法:
x <- define_object(param1, param2)
x <- run_method(x, param3, param4)
x <- process_results(x, param5)
x <- save_plot(x, param6)
所以我可以在修复它后立即恢复链条。
但也许有一个选择仍然有管道并保持安全状态?我不是管道的头号粉丝,但我为这项任务所拥有的流程要求它,尽管我描述的不便是一个交易破坏者。