可以 rmarkdown return 一个值到一个目标
Can rmarkdown return a value to a target
我发现自己经常使用 rmarkdown/rnotebooks 进行探索性分析,因为我可以结合代码、散文和图表。很多时候,我会在 markdown 中编写我的整个预测建模方法和模型本身。
然而,我最终在 rmarkdown 中嵌入了预测模型,未链接到我的 drake_plan
中的目标。今天,我先将这些保存到磁盘,然后使用 file_in
或其他类似方法将它们读回我的 plan
。
我的问题是 - 我可以有一个降价文档 return 一个直接指向 drake 目标的对象吗?
概念上:
plan = drake_plan(
dat = read_data(),
model = analyze_data(dat)
)
analyse_data = function(dat){
result = render(....)
return(result)
}
这样 - 我可以将我的模型直接放入我的 drake 目标中,但如果我需要研究模型,我可以打开我的 markdown/HTML.
我建议您将这些模型作为目标包括在计划中,但您描述的是可能的。 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 package (v0.3.0)
于 2019-10-10 创建
我发现自己经常使用 rmarkdown/rnotebooks 进行探索性分析,因为我可以结合代码、散文和图表。很多时候,我会在 markdown 中编写我的整个预测建模方法和模型本身。
然而,我最终在 rmarkdown 中嵌入了预测模型,未链接到我的 drake_plan
中的目标。今天,我先将这些保存到磁盘,然后使用 file_in
或其他类似方法将它们读回我的 plan
。
我的问题是 - 我可以有一个降价文档 return 一个直接指向 drake 目标的对象吗?
概念上:
plan = drake_plan(
dat = read_data(),
model = analyze_data(dat)
)
analyse_data = function(dat){
result = render(....)
return(result)
}
这样 - 我可以将我的模型直接放入我的 drake 目标中,但如果我需要研究模型,我可以打开我的 markdown/HTML.
我建议您将这些模型作为目标包括在计划中,但您描述的是可能的。 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 package (v0.3.0)
于 2019-10-10 创建