首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用R-markdown在循环中生成pdf?

如何使用R-markdown在循环中生成pdf?
EN

Stack Overflow用户
提问于 2021-02-16 21:13:17
回答 1查看 65关注 0票数 0

假设我有一个这样的data.frame:

代码语言:javascript
复制
Debts <- data.frame(name= c("Julia Fischer", "Arold Hass", "Michael Pfeifer", "Harry Frank"),
                    value= c(145, 136, 0, 100))

我想在循环中生成PDF,而不是像这样打印:

代码语言:javascript
复制
for(i in 1:length(Debts$name)) {
  L <- Debts[i,]
  if(L[2] > 0){
    print(str_c("Hi ", L[1], " you owe me ", L[2], " dollars.")) 
  } else {
    print(str_c("Hi ", L[1], " we are even.")) 
  }
}

使用R-markdown可以做到这一点吗?我该怎么做呢?我想,如果可能的话,我也可以在一个很好的模板中生成pdf。如果不能使用R-markdown,还有其他选择吗?

EN

回答 1

Stack Overflow用户

发布于 2021-02-18 20:01:45

我能够使用参数化的R Markdown报告做到这一点。它有一些限制,但它可以工作。基本上,在.Rmd的YAML头中添加参数时使用:

代码语言:javascript
复制
params:

要使用的参数缩进如下所示。您也可以在参数中插入默认值(使用'3‘只是为了说明如何插入):

代码语言:javascript
复制
---
title: "Our accounting"
output: pdf_document
params:
    n: 3
---

在我们的例子中,我只使用了一个参数"n",因为我将使用它作为我的循环的索引。因此,在控制台中,您可以创建您的循环。在它内部,您可以使用rmarkdown::render()函数来调用.Rmd脚本并运行PDF。您还需要设置要使用"output_file=“创建的pdf的名称。如下所示:

代码语言:javascript
复制
for(i in 1:length(Debts$name)) {
  name <- Debts$name[i]
  rmarkdown::render("debts.Rmd", 
                    params = list(N = i),
                    output_file = paste0(name, "-debts.pdf")
  )
}

在您的.Rmd文件中,您将看到如下内容:

代码语言:javascript
复制
Hi `r Debts$name[params$N]`, you owe me `r Debts$value[params$N]` dollars.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66225016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档