2016年8月28日 星期日

[方法筆記] 用RStudio把文字和統計output以Latex形式輸出成pdf的方法:knitr

研究很久終於成功,所以在此做個筆記,以免日後有需要時遺忘。

RStudio把文字和統計output以Latex形式輸出成pdf的方法:knitr

最終目標就是用RStudio做出如下圖,包含內文跟統計結果的pdf文件

工具

首先,工欲善其事必先利其器,所以該抓的軟體都不可以落。

Latex:我安裝了Miktex2.9,順帶一提我在寫論文過程中使用的編輯器是Texmaker 4.5Texmaker 4.5可以即時預覽pdf我覺得很方便,不過不知道哪裡設定出問題,Texmaker每次要幫我安裝package的時候都失敗,我得特地開Miktex的package manager自己手動安裝特定的package。

R\RStudio:反正安裝當下的最新版本就對了,值得注意的是要安裝在沒有中文的路徑裡,我安裝時沒有改,就跑去了有中文的資料夾裡面,平常使用沒有問題,但是在抓取編寫pdf文件所需的knitr package時一直卡住。


RStudio設定

RStudio上方選單裡選Tool→Global Options以後找到Sweave,把第一個Weave Rnw files改成knitr(如下圖)。

原理我還沒研究,反正先有產出在說QWQ

測試

接著新增檔案 R Sweave檔如下圖

成功的話會跑出一個空的script,裡面已經寫了
\documentclass{article}
\begin{document}
\end{document}

如果上面有一行灰底的系統提示告訴你還沒裝knitr,那就去用你安裝的latex的typesetting system(如Miktex 2.9)的package manager安裝knitr package吧。

如果安裝好以後重開新檔沒顯示提示訊息,那就可以像寫latex文件一樣在\begin{document}和\end{document}之間隨便寫幾行字,接著按右上角的 Compile PDF,系統會問你要存在哪裡,選好以後應該就可以用RStudio已經生成一個很普通的pdf文件了。


加入R-code

如果想要說明文字和R的指令+R的output table交錯顯示,只要記住凡是要切到R的指令時就如以下把code用<<>>=@包起來,這不需要自己打,按Compile PDF右邊的綠色圖示 Insert a new code chunk即可。

----------------------
這是測試耶耶
<<>>=
data <- read.csv(choose.files(), header = TRUE, sep = "\t")
attach(data)
@
測試測試
--------------------

這樣結果就會如最上面的第一張圖那樣了。

相關實用資訊

改邊界:根據實驗,這產出的pdf檔的邊界實在太寬了,很多table的內文都會斷行,所以可以在\documentclass{article}下面加 \usepackage[a4paper, total={6in, 8in}]{geometry},這樣邊界的結果會比較像正常的文件。其實就把他當成寫latex就對了。

移除消去頁碼:此文件會在下方中央自動生成頁數,但因為我想把此pdf檔加到論文最後的附錄,我不想要他有自己的頁數所以就可以把\pagenumbering{gobble}放在\begin{document}的後面,這樣就移除全部的頁碼了

把pdf檔接在主要的文件後面而且接續前方頁碼:這就不是在RStudio裡面編輯了,必須切回Texmaker。首先要安裝pdfpages這個package,並載入\usepackage{pdfpages},接著在希望插入此pdf文件(假設叫Routput.pdf)的地方寫\includepdf[pages=-,pagecommand={}]{Routput.pdf},這樣就會無縫接軌了!


說到這裡總算結束了,希望有幫上忙~