r - Sweave可以自动产生许多PDF吗?

标签 r sweave knitr

我分析了许多城市(数百个)的测量结果,并且需要为每个城市创建单独的报告(以Adobe pdf格式)。

我的过程是这样的:

  • 首先RStudio准备要显示的数据,保存在X.Rda中。
  • 在X.Rnw(RStudio)中,我阅读X.Rda,选择一个城市,并生成表格和曲线图。
  • 在RStudio中,我按“编译PDF”,然后生成城市报告X.pdf。
  • 我转到步骤2,选择另一个城市,依此类推。

  • 这非常繁琐,并且对于每个城市来说都是很不错的选择,但是如何做到呢?

    谢谢R贡献者!

    /克里斯

    最佳答案

    您可以使用带有更改全局变量的for循环之类的东西来控制要编织到报告中的城市。参见其他文章Run Sweave or knitr with objects from existing R session

    代码类似于(假设cities是字符 vector ,我以 knitr 包为例,因为您可以指定输出的文件名):

    for (city in cities) {
       knit('city_template.Rnw', output = paste('report_', city, '.tex', sep = ''))
    }
    

    city_template.Rnw内部,您有一个类似
    <<do-my-job>>=
    make_plot(city, ...)
    whatever(city, ...)
    @
    

    然后,您将获得一系列以城市命名的tex文件,剩下的工作是将它们编译为PDF(RStudio无法编译多个tex文件AFAIK,但是在命令行或在R中使用texi2dvi())。

    您需要注意一件事-您必须为每个输出文件使用不同的地物前缀(选项fig.path),否则不同的城市可以覆盖彼此的地物输出。在knitr中,可以这样操作:
    <<setup, echo=FALSE>>=
    opts_chunk$set(fig.path = paste('my-prefix-', city, sep = ''))
    @
    

    我相信这样做可以安全地生成许多循环报告。

    顺便说一句,您当然可以使用Sweave达到相同的目标;也许您会知道我以后为什么要开发knitr的原因(这是题外话,因此在此不再赘述)。

    关于r - Sweave可以自动产生许多PDF吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519128/

    相关文章:

    r - 使用 knitr 自动转义字符 ('_' ,'\' 等的方法

    r - 使用grid.arrange时出现错误 "Breaks and labels are different lengths"

    使用 _site.yml 文件时渲染 Xaringan Rmd

    r - 根据其他列设置列的值

    r - 如何使用 knitr/Sweave 中的 R 变量值在 LaTeX 中编写 if-then 语句

    r - ggplot2 绘制横向填充页面 (pdf)

    r - knit 不接受 dev 的 opts_chunk 设置选项

    r-markdown - R Markdown 中 HTML 输出的图形和表格标题的自动编号

    html - 在 html 输出的 Markdown 文本周围 float 图形和标题

    r - 在 R 中模拟数据集以进行模型选择