記錄一些R Markdown中與一般的Markdown不同的用法。
1.代碼塊設置
echo=FALSE最終的文檔中不會顯示代碼,只會顯示代碼運行的結果和圖像results="hide"隱藏結果,顯示圖像include=FALSE隱藏代碼和運行的輸出(寫報告時可使用include=FALSE來隱藏所有的代碼,從而突出圖像。)fig.show="hide"隱藏圖像- 對於圖像,可以通過
fig.width和fig.height來設置寬和高,舉例:
```{r scatterplot, fig.width=8, fig.height=6}
plot(x,y)
- 使用
include=FALSE隱藏所有的代碼、結果和圖像,同時使用include=TRUE和results="hide"則會隱藏結果顯示圖像 eval=FALSE顯示代碼而不顯示運行結果- 表格輸出設置:
```{r, results='asis'}
knitr::kable(mtcars)
2.全局代碼塊設置
避免每次使用代碼塊都重復敲代碼來設置代碼塊,可按如下設置初始代碼塊:
```{r global_options, include=FALSE}
knitr::opts_chunk$set(fig.width=12, fig.height=8, fig.path='Figs/',
echo=FALSE, warning=FALSE, message=FALSE)
warning=FALSE 和message=FALSE最終文檔中不會顯示R軟件任何的提示信息, fig.path='Figs/'把圖片保存在Figs子文件夾中(默認情況下圖片不會被保存,注意Figs后面的斜線“/”不可少,否則圖片會以Figs為文件名開頭被保存在主目錄中)。
如果在某個特定代碼塊中需要不一樣的設置,可以單獨設置該代碼塊,如:
```{r a_taller_figure, fig.height=32}
par(mfrow=c(8,2)) for(i in 1:16) plot(x[,i], y[,i])
在給合作者的報告中,可能會使用include=FALSE, echo=FALSE作為全局設置,生成圖像時使用include=TRUE,這樣可以只輸出圖像。
3.行內代碼(In-line code)
在報告中不要寫成“There are 168 individuals.” 可以插入一點代碼,比如:
There are `r nrow(my_data)` individuals.
又比如:
The estimated correlation between x and y was `r cor(x,y)`.
在R Markdown中,行內代碼以 `r 和 `來表示,兩者間的代碼會運行並顯示結果。
注意:要確保行內代碼沒有跨行。
4.YAML header
YAML 是一種用於指定數據的簡潔的文本格式, 與JSON有些類似但可讀性更強。
在R Markdown文檔開頭,編寫如下一段代碼:
--- title: "An example Knitr/R Markdown document"
author: "Karl Broman"
date: "3 Feb 2015"
output: html_document ---
那么,文檔的結尾會包含格式化的標題、作者名和日期。
author: "[Karl Broman](http://kbroman.org)"
甚至是R代碼:
date: "`r Sys.Date()`"
output: html_document將RMD轉化為html,pdf_document 或者word_document分別轉為PDF和Word .docx文件。
5.其他關於代碼塊設置的代碼問題
- 必須寫在一行內,不含空格和句點,可以使用-和_
fig.path="abc"而不是fig.path=abc, andout.width='\\textwidth'而不是out.width=\textwidth- 使用TRUE/FALSE 而不是true/false
[參考文獻]:
1. http://kbroman.org/knitr_knutshell/pages/Rmarkdown.html
2. https://yihui.name/knitr/options/#package_options
3. http://rmarkdown.rstudio.com/authoring_rcodechunks.html
