`knitr_out、`file_out` 和 `vis_drake_graph` 在 R:drake 中的用法

`knitr_out, `file_out` and `vis_drake_graph` usage in R:drake

我正在尝试了解如何在 drake 中正确使用 knitr_outfile_outvis_drake_graph

我有两个问题。

Q1:使用 knitr_outfile_out 创建 markdown 报告

虽然这样的代码适用于我的一个较小的项目:

make_hyp_data_aggregated_report <- function() {
        render(
                input = knitr_in("rmd/hyptest-is-data-being-aggregated.Rmd"),
                output_file = file_out("~/projectname/reports/01-hyp-test.html"),
                quiet = TRUE
        )
}

plan <- drake_plan(
        ...
        ...
        hyp_data_aggregated_report = make_hyp_data_aggregated_report()
        ...
        ...
) 

我的大型项目(包含 ~10 多个报告)中完全相似的代码无法正常工作完全。即,在构建报告时,knitr_in 对象不会在我的大型项目中使用 drake::vis_drake_graph() 显示为图表中的蓝色方块。

两个项目都使用 markdown 中的 drake::loadd(....) 从缓存中获取对象。

vis_drake_graph 中是否有一些代码可以在图形变得繁忙时删除这些方块?

Q2:file_out 个对象在 vis_drake_graph

有没有办法在 vis_drake_graph 中将 file_out 对象本身显示为 circles/squares?

Q3:包出现在 vis_drake_graph

有没有办法避免 vis_drake_graph 显式打印包? (基本上任何带有 :: 的东西)

Q1

每个文字文件路径都需要有自己的 knitr_in()file_out()。如果你有一个函数与一个 knitr_in(),即使你多次使用该函数,那仍然只算作一个文件路径。我建议在计划级别编写这些关键字,例如

plan <- drake_plan(
  r1 = render(knitr_in("report1.Rmd"), output_file = file_out("report1.html")),
  r2 = render(knitr_in("report2.Rmd"), output_file = file_out("report2.html")),
  r3 = render(knitr_in("report3.Rmd"), output_file = file_out("report3.html"))
)

Q2

它们应该出现,除非您在 vis_drake_graph() 中设置 show_output_files = FALSE

Q3

不,但如果有什么安慰的话,我确实对在 drake 中完全跟踪命名空间函数和对象的决定感到遗憾。 drake 的方法对于跟踪包裹来说根本不是最优的,我 plan to get rid of it if there ever comes time for a round of breaking changes。否则,除了 vis_drake_graph(targets_only = TRUE) 之外,没有其他方法可以摆脱它,这也摆脱了图中的所有导入。