1

我发现自己经常使用 rmarkdown/rnotebooks 进行探索性分析,因为我可以结合代码、散文和图表。很多时候,我会在 Markdown 中编写我的整个预测建模方法和模型本身。

然而,我最终得到了嵌入在 rmarkdown 中的预测模型,与我的drake_plan. 今天,我先将它们保存到磁盘,然后将它们读回我的planusingfile_in或其他类似方法。

我的问题是 - 我可以让降价文档将对象直接返回给德雷克目标吗?

从概念上讲:

plan = drake_plan(
    dat = read_data(),
    model = analyze_data(dat)
)

analyse_data = function(dat){
    result = render(....)
    return(result)
}

这样 - 我可以将我的模型直接放入我的 drake 目标,但如果我需要研究模型,我可以打开我的 markdown/HTML。

4

1 回答 1

1

我建议您将这些模型作为目标包含在计划中,但您所描述的都是可能的。R Markdown 并knitr在调用环境中自动运行代码块,因此您在报告中所做的变量分配可用。

library(drake)
library(tibble)

simulate <- function(n){
  tibble(x = rnorm(n), y = rnorm(n))
}

render_and_return <- function(input, output) {
  rmarkdown::render(input, output_file = output, quiet = TRUE)
  return_value # Assigned in the report.
}

lines <- c(
  "---",
  "output: html_document",
  "---",
  "",
  "```{r show_data}",
  "return_value <- head(readd(large))", # return_value gets assigned here.
  "```"
)

writeLines(lines, "report.Rmd")

plan <- drake_plan(
  large = simulate(1000),
  subset = render_and_return(knitr_in("report.Rmd"), file_out("report.html")),
)

make(plan)
#> target large
#> target subset

readd(subset)
#> # A tibble: 6 x 2
#>        x       y
#>    <dbl>   <dbl>
#> 1  1.30  -0.912 
#> 2 -0.327  0.0622
#> 3  1.29   1.18  
#> 4 -1.52   1.06  
#> 5 -1.18   0.0295
#> 6 -0.985 -0.0475

reprex 包(v0.3.0)于 2019 年 10 月 10 日创建

于 2019-10-10T12:16:24.957 回答