R2DOCXによるレポート作成
RでMicrosoft Wordのレポートを作成するには,いくつかの方法がある.Markdown+Pandocを使った方法,R2wdパッケージを用いた方法などである.ここでは,David Gohel氏によるR2DOCXパッケージを用いたレポート作成について取り上げる.
インストール
R2DOCXパッケージは,github上で公開されている.R2DOCXとともに,R2DOCパッケージもインストールする.Rのバージョンは3.0.0以降でなければならない模様.
> library(devtools) > install_github('R2DOC', 'davidgohel') > install_github('R2DOCX', 'davidgohel')
R2DOCXパッケージを使用するためには,JavaおよびrJavaパッケージがインストールされている環境が必要.
サンプルプログラム
まずは,チュートリアルのサンプルプログラムを実行してみよう.
library(R2DOCX) # 作成するドキュメント名 docx.file = "document.docx" # ドキュメントの生成(Docx形式) doc = new("Docx", title = "My example") # irisデータセットの先頭10行をドキュメントに追加 doc = addTable(doc, iris[1:10,]) # スタイル名のついたテキストをドキュメントに追加 doc = addParagraph(doc, value="Hello World!", stylename="Normal") # 図をドキュメントに追加 doc = addPlot(doc, function() plot(rnorm(10), rnorm(10)), width=10, height=8) # ドキュメントの出力 writeDoc(doc, docx.file)
この結果,以下の内容のファイルが生成される.
提供する機能
R2DOXパッケージが提供する機能は下表のとおりである.
機能 | 関数 |
---|---|
目次の作成 | addTOC |
図のプロット | addPlot |
外部画像データの挿入 | addImages |
表の出力 | addTable |
テキストの出力 | addParagraph |
章の見出しの作成 | addHeader |
改ページ | pagebreak |
目次の作成
目次を作成するためには,addTOC関数を使用する.
# 作成するドキュメント名 docx.file = "document_toc.docx" # ドキュメントの生成(Docx形式) doc = new("Docx", title="My example") # 目次の作成 doc = addTOC(doc) # 1章の見出しの作成 doc = addHeader(doc, "Title 1", 1) # 1.1章の見出しの作成 doc = addHeader(doc, "Title 1.1", 2) # 改ページ doc = addPageBreak(doc) # 1.2章の見出しの作成 doc = addHeader(doc, "Title 1.2", 2) # 改ページ doc = addPageBreak(doc) # 1.2.1章の見出しの作成 doc = addHeader(doc, "Title 1.2.1", 3) # ドキュメントの出力 writeDoc(doc, docx.file)
図の描画
図を描画するには,addPlot関数を使用する.
doc = addPlot(doc, plot, x=rnorm(10), y=rnorm(10), main="main title", legend="graph example", stylename="PlotReference" )
latticeパッケージやggplot2パッケージを用いて描画する場合は,第2引数にprint関数を指定すれば良い.
doc = addPlot(doc, print, x=qplot(Sepal.Length, Petal.Length, data=iris, color=Species, size=Petal.Width), legend="graph example", stylename="PlotReference" )
両方を組み合わせることも可能.
doc = addPlot(doc, function() { print(qplot(Sepal.Length, Petal.Length, data=iris, color=Species, size=Petal.Width)) plot(x=rnorm(10), y=rnorm(10), main="main title") }, legend = "graph example", stylename="PlotReference" )
外部画像データの挿入
外部の画像データを挿入するには,addImage関数を使用する.
doc = addImage(doc, "D:/img/image.png")
表の出力
表を出力するには,addTable関数を使用する.
ヘッダ名は引数header.labelsにlist型で指定する.
library(R2DOCX) # 新規オブジェクトの作成 doc = new("Docx", title = "My example" ) # irisデータセットの1-5行目の出力 doc = addTable(doc , iris[1:5, ], header.labels = list( "Sepal.Length"="Sepal Length", "Sepal.Width"="Sepal Width", "Petal.Length"="Petal Length", "Petal.Width"="Petal Width", "Species" = "Species" ) ) # ファイルの出力 writeDoc(doc, "document.docx")
ヘッダのラベルをマージするには,grouped.cols引数にマージするヘッダを指定する.以下の例では,"Sepal.Length"と"Sepal.Width"をマージして"Sepal"に,"Petal.Length"と"Petal.Width"をマージして"Petal"にしている.
doc = addTable(doc, iris[1:5,], grouped.cols=list("Sepal"=c("Sepal.Length", "Sepal.Width"), "Petal"=c("Petal.Length", "Petal.Width"), "Species" = c("Species") ) )
同一内容のセルを列方向に結合するには,span.columns引数に結合する列名を指定する.
doc = addTable(doc, iris[46:55, c(5,1:4)], span.columns="Species" )
フォントやセルに色を指定するには,col.fontcolors引数やcol.colors引数を指定すれば良い.
doc = addTable(doc, iris[ 1:5, ] col.fontcolors=list(Species=c("red", "blue", "red", "blue", "red")), col.colors=list(Sepal.Length=c("red", "blue", "red", "blue", "red")) )
テキストの出力
単純なテキストの出力には,addParagraph関数を使用する.
doc = addParagraph(doc, "Hello World!", stylename="Normal")
引数stylenameに使用できるオプションについては,チュートリアルの該当ページを参照のこと.
addParagraph関数を用いて,
# テンプレートのテキスト x = "[animal] eats [food]." # フォーマットのプロパティの定義 textProp=textProperties(color="blue") replacement.styles=list(animal=textProp, food=textProp) # 置換するテキストの定義(animalをdonkeyに,foodをgrassに置換) replacements=list(animal="donkey", food="grass") # テキストの追加(出力は"donkey eats grass",donkeyとgrassが青字) doc = addParagraph(doc, value=x, stylename="Normal", replacements=replacements, replacement.styles=replacement.styles )
ベクトル化も可能.
x = c("text 1", "text 2") doc = addParagraph(doc, value=x, stylename="Normal")