簡介
??markdown是一種純文本格式的標記語言,只需要簡單的標記語言就可將文本格式的內容具有一定的格式。核心是將文字與排版分開,從而將注意力集中于文字本身。但其本質,Markdown 還是 HTML 的簡化版。因此缺點就是當需要 PDF 和 Word 等的文檔格式的排版時不能很好解決。相較于 Markdown,LaTeX 是專門為 PDF 排版而生的,但其復雜程度就要比 Markdown 高得多。有沒有什么辦法把Markdown 的書寫便利性和 LaTeX 豐富的排版能力結合到一起呢?于是R-markdown應運而生,這還多虧了國人益輝大神,在他的新作R包knitr中,提供了Markdown支持。并說服R社區主流編輯器廠家,開源軟件RStudio 提供 Markdown支持,從而使得Rmd這種新格式開始流行。
??官方指導說明介紹
優點
- 具備markdown簡單的文本標記語言;
- 相較于markdown有更豐富的文檔排版能力;
- 可以在生成文檔時直接運行插入的代碼塊,并將運行結果輸出在最終文檔中。
基本語法
??R-markdown的基本語法與markdown基本一致,核心區別在于寫入代碼區域的代碼能在編譯的時候同時生成相應的圖、表和運算結果,省去了保存和插入的過程。同時能保存為 HTML、 WORD和PDF等格式。注意 PDF需要LaTex的支持。
標題
??一個#是一級標題,二個#是二級標題,以此類推。支持六級標題。
# 這是一級標題
## 這是二級標題
### 這是三級標題
#### 這是四級標題
##### 這是五級標題
###### 這是六級標題
字體格式
**這是加粗的文字**
*這是傾斜的文字*`
***這是斜體加粗的文字***
~~這是加刪除線的文字~~
字體、字號和顏色
??Markdown本身不支持修改字體、字號和顏色,要實現字體顏色、字號的設置,需要使用內嵌的HTML。實現如下所示:
<font face="宋體">宋體</font>
<font face="宋體" color=red>紅色宋體</font>
<font face="宋體" color=red size=5>5號紅色宋體</font>
引用
>這是引用的內容
分割線
---這是分割線
***這也是分割線
圖片

說明:
圖片alt就是顯示在圖片下面的文字,相當于對圖片內容的解釋。
圖片title是圖片的標題,當鼠標移到圖片上時顯示的內容。title可加可不加
超鏈接
[超鏈接名](超鏈接地址 "超鏈接title")
title可加可不加
列表
無序列表
- 列表內容
+ 列表內容
* 列表內容
注意:- + * 任何一種都可以,跟內容之間都要有一個空格
有序列表
語法:數字加點
1.列表內容
2.列表內容
3.列表內容
列表嵌套
語法:
上一級和下一級之間敲三個空格即可
表格
表頭|表頭|表頭
---|:--:|---:
內容|內容|內容
內容|內容|內容
第二行分割表頭和內容。
- 有一個就行,為了對齊,多加了幾個
文字默認居左
-兩邊加:表示文字居中
-右邊加:表示文字居右
注:原生的語法兩邊都要用 | 包起來。此處省略
代碼
單行代碼
`代碼內容`
多行代碼
(```)
代碼...
代碼...
代碼...
(```)
注:前后三個反引號處加了小括號,為了防止轉譯,實際是沒有的。
r-markdown基本使用方法
??在RStudio新建一個rmarkdown文件后,會出現如下一個最簡單的rmarkdown的模板。
設置YAML
??除了熟悉的 Markdown 語法,你會發現在文檔的最開始多了一部分用--- 括起來的段落。這一部分是用來設置文檔輸出格式的屬性的,語法類型為 YAML,類似于json格式。最常用的參數包括 title 即文檔標題、author 即作者、date 即日期。output則表示輸出格式,常見格式的如下:
html_document 輸出html格式
pdf_document 輸出PDF格式
word_document 輸出word格式
??每種格式又有很多參數,詳細參數見html_document,這里列舉html_document的一些參數介紹。
---
title: "Habits"
output:
html_document:
toc: ture #是否展示目錄
toc_float: true #目錄的形式,是否浮動
number_sections: true #各個標題的數字標記是否展示
df_print: paged #表格的形式,paged創建可分頁的表
theme: cerulean #文檔主題,來源于Bootswatch(https://bootswatch.com/)
highlight: tango #指定語法高亮樣式
#css: css/styles.css #加入額外的CSS,如果想從自己的css為文檔提供所有樣式,theme和highlight可設置為null
#fig_width: 7 #圖片寬度
#fig_height: 6 #圖片高度
#fig_caption: TRUE #圖片設置,控制圖形是否帶有標題
#code_folding: hide #是否隱藏代碼塊
#self_contained: false #在外部文件中保留依賴關系
#keep_md: true #是否在knitr處理,pandoc渲染之后保存一份markdown文件的副本
#template: quarterly_report.html #可以使用模板選項替換基礎pandoc模板
---
??除了上述的參數外,其實還有一個蠻有用的includes參數可添加在html_document下面,主要用于在輸出文檔中添加額外的內容(在文檔標題中或文檔正文之前/之后包含內容)。
---
title: "Habits"
output:
html_document:
includes:
in_header: header.html
before_body: doc_prefix.html
after_body: doc_suffix.html
---
??以上所有參數,都是在 YAML 部分完成的,而沒有涉及文檔主體的 Markdown 部分。當進入 Markdown 寫作部分時,可以只專心于文字,不必擔心將格式和內容攪在一起。
編輯 Rmd 文檔主體
??設置好YAML后,接下來按照markdown基本語法編寫內容就行,這里需要注意的是,添加的是代碼方法與markdown有略微差異。
(```){r example label, echo = FALSE, warning = FALSE}
coding
(```)
注意:這里的代碼即為使用R語言的代碼,設置了代碼塊的名稱為 example label,使代碼塊不包括在文檔中,同時不輸出警告信息。為了防止轉譯添加的小括號,正式代碼中沒有
??對于表格,尤其是讀入外部數據時,可以用表格生成器:knitr包的kable()函數,除了用kable()函數外,有個kableExtra包(國人朱昊寫的)的kable_styling()函數,配合kable()可以讓表格排版更加美觀點。此外還有益輝大神寫的DT包對于動態展示表格非常好用。
文件導出
??從Rmd格式可以導出為三種格式(HTML、PDF、WORD),用Pandoc實現。其中PDF需要LaTex支持,并且對中文的支持需要額外的設定。
??在RStudio中直接點擊knit,選擇輸出格式輸出,或者用rmarkdown的render函數輸出。
knitr包將RStudio的Rmd格式文件編譯為markdown格式,然后pandoc再將markdown文件直接渲染成HTML。
rmarkdown::render('report.Rmd', 'html_document')