2017-07-18 10 views
0

同じテキストがすべて含まれていても、異なる人に宛てられ、各人に固有のテキストを持つ複数のRmarkdown文書(つまり、文字)を作成しようとしています。反復Rmarkdown文書に名前を付ける

## 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ファイル:

http://rmarkdown.rstudio.com/articles_mail_merge.html

は基本的に、私はRmarkdownのPDFを作成するRスクリプトを持っている。一つはここにレイアウトされたように私は、同様のアプローチを取ってきました下記のテキストを記入:

--- 
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スクリプトを実行すると、私は名前のファイルで「配布資料」、「handout_1、」「handout_2」などという名前のフォルダを取得し、私はFを希望データセット内の人の名前にileを付け、これを行うために、コードのループ見出しの下で "i"を "name"に変更しました。これは "handout_Ezra Zanders"のような名前のファイルを生成しますが、ファイル名はRmarkdown pdfの人の名前とほとんど変わりません。

スクリプトのループ部分でこれを解決する方法を知っている人、またはこれを行う別の方法は誰でも知っていますか?

+1

が見えます私は地球環境の中で「私」です。より安全なのは、パラメータ化されたレポートを使用することです。http://rmarkdown.rstudio.com/developer_parameterized_reports.htmlを参照してください。多分あなたの問題を解決するだろう。 –

答えて

0

iループに名前を追加する必要があります。ところで、マークダウンを実行するために外部スクリプトを使用しているので、mardownのcsvファイルを再度読み取る必要はありません。

Rmarkdownのpdfファイルを作成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!