从 R 脚本渲染时如何将值传递给 Rmd 文件?

How to pass a value to Rmd file while rendering from a R script?

我有一个 Rmd 文件,我通过从数据库服务器检索数据来生成一些 ggplot。我试图通过循环调用此 Rmd 文件并生成单独的 pdf 文件。为此,我需要在循环的每次迭代中向 Rmd 文件传递​​一个唯一值,需要此值才能从 Rmd 文件中的 DB 访问数据。也想用我想传递的值来命名生成的pdf文件。

我在 R 脚本中尝试过类似于此资源的操作: https://bookdown.org/yihui/rmarkdown-cookbook/rmarkdown-render.html

for (state in state.name) {
  rmarkdown::render(
    'input.Rmd', output_file = paste0(state, '.pdf')
  )
}

但这不能正常工作。

命令 render 接受参数 output_fileparams。输出文件是要保存到的文件,参数是您传递给 Markdown 代码的内容。

library(rmarkdown)
render("File.rmd", 
       output_file="file.pdf", 
       params=list(text="print this"))

然后在您的 RMarkdown 文件中,您可以访问通过 params$parametername 传递的参数。

---
params:
  text: "what"
---

print(params$text)

对于您的代码,您将分别在 R 代码和 Rmarkdown 代码中执行如下操作:

for (state in state.name) {
  rmarkdown::render(
    'input.Rmd', output_file = paste0(state, '.pdf'), params=list(state=state)
  )
}
---
params:
  state: "what"
---

params$state