2017-08-23 6 views
1

私はcsvファイルからデータを読み込み、これらのデータを次のコードを使って別のWord Doc(docx)ファイルに出力するRスクリプトを作成しました。これは予期したとおりに動作しています。しかし、私が達成しなければならないことは、代わりにPDFファイルを出力するために 'knitr'や 'sweave'を使うことです。 docxの代わりにpdfファイルを出力するスクリプトを作成する方法を教えてもらえますか?forループを使ってpdfを生成するためのKnitrの使い方は?

library(ggplot2) 
library(reshape) 
lff <- list.files(path = "./data/", pattern = paste('*.csv*',sep=""), 
full.names = TRUE, recursive = TRUE, include.dirs = TRUE) 
for (i in 1:length(lff)) { 
.... 

    writeDoc(doc, filename) 
} 
+0

http://rmarkdown.rstudio.com/ – r2evans

+0

ループにput ...の代わりに複製可能な例を提供する必要があります。それはあなたを助けることをより容易にするでしょう。 –

答えて

0

あなたはgridExtraパッケージを使用することができます:あなたは何か、iを言って、あなたのScript.Rnwは異なる結果をもたらすことになる上でベースの上にループする必要があるため、ここで

library(gridExtra) 
library(stringr) 

lff <- list.files(path = "./data/", pattern = paste('*.csv*',sep=""), 
        full.names = TRUE, recursive = TRUE, include.dirs = TRUE) 

for (i in lff) { 
    dt <- read.csv(i, header=TRUE) 
    pdf(paste0(str_replace(i, '.csv', ''),'.pdf'), height=11, width=8.5) 
    grid.table(dt) 
    dev.off() 
} 
0

は、のSweaveでknitrのためのソリューションです他の賢明なループは役に立たないでしょう。以下を参照してくださいコード:あなたはシヴァの場合は「first.pdf」、「second.pdf」、「third.pdf」 を持っています最後に

## elements in `names` could also be parameters in your `Script.Rnw` 
names<-c('first','second','third') 
for (i in names) { 
    output.name<-paste0(i,'.tex') 
    knit2pdf('Script.Rnw',output = output.name) 
} 

は、名前の要素は、彼女のCSVファイルの名前かもしれません。 @giac_manのコメントに基づいて、.Rnwファイルのcsvファイルの読み方を書くことができます.CSVファイルなので、xtable.Rnwファイルにも使用でき、LateXも必要ですそれらのPDFを入手して、私は現在MikTexを使用しています。

+0

私はこれが質問に答えるとは思わない。 @shivaにScript.Rnwファイルがあると仮定していますが、入力はcsvファイルです。 –

関連する問題