第 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

inline

inline

位置:global

global

global

  • 常用來控制echo、message丶warning和include。
  • echo: TRUE=「程式碼」要含在文件輸出(文件即cheatsheet中的doc)。
  • message: TRUE = 程式碼執行的「附帶訊息」要含在文件輸出。
  • warning: TRUE = 程式碼執行(若有)「錯誤訊息」要含在文件輸出。 以上三個都允計程式碼的「結果」,如產生的圖表,在文件輸出。
  • include:
    TRUE = 執行程式碼後,「程式碼成果」要含在文件輸出。
    FALSE = 執行程式碼後,「程式碼成果」要含在文件輸出。
    由於程式碼會被執行,若有新物件產生,可以後面的chunk使用或定義輸出。

位置:chunk

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說明。