r语言 - 如何将 .nb.html 笔记本文件保存在另一个目录中,而不是包含 .rmd 文件的目录?



上下文:我有一个R项目,其中包含用于脚本,输出和数据的不同文件夹。为了匹配此逻辑,我希望在./scripts/文件夹中.rmd文件,同时将.nb.html文件保存在./outputs/文件夹中。

问题:如何在RStudio IDE中单击"保存"按钮时./output/使knit将.nd.html文件保存在文件夹中?

我试图使用knitr::opts_knit$set()更改针织选项,但没有成功。我知道可以在单独的 R 脚本中使用rmarkdown::render(input = "./scripts/test.Rmd", output_dir = "./outputs/")来执行此操作,但我正在寻找一种不需要制作此类单独 R 脚本的解决方案。

这个SO帖子非常接近,适用于HTML输出。但是,对于笔记本,它似乎没有考虑到 YAML 中的自定义编织功能。

这是当前的文件夹文件树:

C:.
|   testR.Rproj
|   
+---outputs
---scripts
test.Rmd

如果我渲染test.Rmd,我会得到以下内容:

C:.
|   testR.Rproj
|   
+---outputs
---scripts
test.nb.html
test.Rmd

预期输出为:

C:.
|   testR.Rproj
|   
+---outputs
|       test.nb.html
|       
---scripts
test.Rmd

用于重现此结构的代码.Rmd 文件为空,我不知道如何制作与 R 笔记本>文件>新文件完全相同的输出

library(usethis)
library(rmarkdown)
# set up the folder and files
usethis::create_project(path = paste0(getwd(),"/testR"), open = FALSE, rstudio = TRUE)
dir.create(paste0(getwd(),"/testR/outputs"))
dir.create(paste0(getwd(),"/testR/scripts"))
file.edit(paste0(getwd(),"/testR/scripts/test.Rmd"))

您可以尝试以下内容,在 yaml 标头中,您可以将函数传递给knit参数:

---
title: "Some Report"
knit: (function(input, ...) {rmarkdown::render(input, output_file="path/to/output/location/filename.html")})
output: html_document
---

您可以在此处阅读更多内容。请注意,虽然在链接中提到您可以传递多行函数,但我在传递多行函数时遇到了麻烦。将函数作为单行传递有效。由于您正在传递一个函数,因此您可以进一步参数化(做更多事情),例如 这里

最新更新