第 4 章 Markdown與R的橋樑: knitr
R Markdown不同於Markdown在於多了一層執行R程式且直接使用程式產生的數字、圖表及程式碼的彈性,它靠的是knitr這個套件。原則上,你在安裝RStudio時,此套件應該已經存在,如果沒有請安裝此套件。
knitr功能依出現的位置分成inline、global及chunk,使用狀況如下。
參考資料:
knitr by Yihui Xie
位置:inline
使用語法如下:
跟據資料計算,平均起飛延遲時間為`r mean_dep_delay`分鐘
若在該行之前, RStudio environment已有mean_dep_delay這個物件,則這部份會被此物作的值所取代。比例,mean_dep_delay=12,則我們會看到結果為:
跟據資料計算,平均起飛延遲時間為12分鐘。
參考資料:
RStudio inline code
位置:global
- 常用來控制echo、message丶warning和include。
- echo: TRUE=「程式碼」要含在文件輸出(文件即cheatsheet中的doc)。
- message: TRUE = 程式碼執行的「附帶訊息」要含在文件輸出。
- warning: TRUE = 程式碼執行(若有)「錯誤訊息」要含在文件輸出。 以上三個都允計程式碼的「結果」,如產生的圖表,在文件輸出。
- include:
TRUE = 執行程式碼後,「程式碼成果」要含在文件輸出。
FALSE = 執行程式碼後,「程式碼成果」要含在文件輸出。
由於程式碼會被執行,若有新物件產生,可以後面的chunk使用或定義輸出。
位置:chunk
- 常用來調整單一一個chunk的echo、message、warning、eval和results。
- eval: TRUE = 「程式碼」執行。
除了TRUE/FALSE,也可指定那幾個expression要輸出,expression不是程式行,而是一個完整的程式表達。如:eval=c(1,5)是指第1和第5個程式表達要輸出。 - result: 用來細部控制程式碼「產生的文字成果」輸出
“markup” = 輸出符合LaTeX格式(內定)。
“asis” = 維持螢幕所見輸出。
“hide” = 不輸出。
- 當chunk設定與global打架時,以chunk為主。
- 使用
```{r 區塊名稱}...
,則區塊名稱會出現在RStudio console視窗的左下選單。
參考資料:
Knitr chunk options
圖
指程式產生的圖,常用控制輸出的設定有:
- fig.align: 圖形位置
- fig.height 與 fig.width: 圖形高與寬,內定大小是7
- fig.cap: 圖標
- fig.show:
“asis”: 照程式結果輸出
“hide”: 不輸出結果
參考資料: Knitr plot options
圖型中的中文
圖形帶有中文字時,建議
- 安裝showtext套件
然後在一開始的chunk設定:
knitr::opts_chunk$set(fig.showtext=TRUE)
library(showtext)
showtext_auto()
凡遇到有中文字型的圖可指定family=“wqy-microhei”。
若想使用自己電腦字體,可先執行如下指令:
font_add(family="yuan",regular="/Users/martin/Library/Fonts/cwTeXQYuan-Medium.ttf")
其中regular後面是你電腦的字型檔,而family用來設定此字型檔在你程式中的名稱。
上例引入cwTeXQYuan-Medium.ttf字型檔,並稱它為“yuan”。
若要做更多字型設定,請見Showtext github說明。