我试图创建多个Rmarkdown文档(即字母),这些文档包含所有相同的文本,但是针对不同的人并且每个人都有一些独特的文本。我采取了类似的方法:
http://rmarkdown.rstudio.com/articles_mail_merge.html
基本上,我有一个创建Rmarkdown pdfs的R脚本:
## Packages
library(knitr)
library(rmarkdown)
## Data
personalized_info <- read.csv(file = "meeting_times.csv")
## Loop
for (i in 1:nrow(personalized_info)){
rmarkdown::render(input = "mail_merge_handout.Rmd",
output_format = "pdf_document",
output_file = paste("handout_", i, ".pdf", sep=''),
output_dir = "handouts/")
}
和.Rmd文件填写下面的文字:
---
output: pdf_document
---
```{r echo=FALSE}
personalized_info <- read.csv("meeting_times.csv", stringsAsFactors = FALSE)
name <- personalized_info$name[i]
time <- personalized_info$meeting_time[i]
```
Dear `r name`,
Your meeting time is `r time`.
See you then!
当我运行上面的R脚本时,我得到一个名为&#34; handouts的文件夹,&#34;文件名为&#34; handout_1,&#34; &#34; handout_2,&#34;我希望文件以数据集中的人名命名,为此我改变了#34; i&#34; to&#34; name&#34;在代码的循环标题下。这会生成名为&#34; handout_Ezra Zanders,&#34;但文件名与Rmarkdown pdf中的人名不多。
任何人都知道脚本循环部分的解决方案,或其他方式吗?
答案 0 :(得分:0)
您需要在i
循环中添加名称。顺便说一句,因为您使用外部脚本来运行降价,所以没有必要再次读取mardown中的csv文件。
创建Rmarkdown pdfs的R脚本:
## Packages
library(knitr)
library(rmarkdown)
## Data
personalized_info <- read.csv(file = "meeting_times.csv")
## Loop
for (i in 1:nrow(personalized_info)) {
name <- personalized_info$name[i]
time <- personalized_info$meeting_time[i]
rmarkdown::render(input = "mail_merge_handout.Rmd",
output_format = "pdf_document",
output_file = paste("handout_", name, ".pdf", sep=''),
output_dir = "handouts/")
}
和.Rmd文件填写下面的文字:
---
output: pdf_document
---
Dear `r name`,
Your meeting time is `r time`.
See you then!