Markdown和富文本編輯器
一般來說,在富文本編輯器輸入一段文本,選擇具體的格式后,能夠直接顯示對應(yīng)的結(jié)果。例如我們常見的 Office Word 就是典型的富文本編輯器。優(yōu)勢在于簡單、直觀,所見即所得。但是缺點(diǎn)是效率低下。
Markdown是一種通過標(biāo)記字符,對內(nèi)容進(jìn)行樣式更改的語法。這樣,使用Markdown編輯器時(shí),只需要專注內(nèi)容的輸出,無需離開鍵盤即可完成:編輯(文本字符)+ 排版(標(biāo)記字符);最后的呈現(xiàn)結(jié)果一致,可預(yù)見,不用擔(dān)心格式錯(cuò)誤或者樣式變化。
RMarkdown
Analyze. Share. Reproduce.
Your data tells a story. Tell it with R Markdown. Turn your analyses into high quality documents, reports, presentations and dashboards.
RMarkdown可以嵌入R代碼,其他語法基本和正常markdown語法相同。
傳統(tǒng)的制作包含圖形的報(bào)告,需要制作圖形,保存為文件,然后copy并粘貼到最終的報(bào)告中,這個(gè)工作嚴(yán)重依賴人力,如果數(shù)據(jù)有變更,那么需要重復(fù)整個(gè)過程來更新圖形。而在R Markdown的模板中,每個(gè)報(bào)告都包含制作圖形、表格、數(shù)字所需的代碼,可通過knit自動(dòng)完成更新。knit會(huì)運(yùn)行所有的R代碼,并將得到的結(jié)果追加到代碼之后,在做一些可重復(fù)性報(bào)告上,能夠提高效率,運(yùn)行代碼,更新數(shù)據(jù)源,報(bào)告就能更新。
RMarkdown的兩大特別之處,一是通過Pandoc將Markdown轉(zhuǎn)化成LaTex,再由強(qiáng)大的LaTex轉(zhuǎn)換成HTML、PDF、Word,理論上來說借助LaTex可以生成學(xué)術(shù)論文、期刊雜志、數(shù)據(jù)報(bào)告等規(guī)范格式的文檔;另一大特點(diǎn)是整合了R語言的環(huán)境,可以在Markdown語法中code block直接執(zhí)行R語言代碼并將結(jié)果插入文檔。
由于我們報(bào)告里有中文,生成pdf和word常常會(huì)有些問題,生成html是最常用的一種格式。

RMarkdown的使用
(1)創(chuàng)建一個(gè)rmarkdown.Rmd
(這里就不排版了)
---
title: "my first rmarkdown"
author: "me"
date: "2020/5/9"
output: html_document
---
### 安裝rmarkdown
```
install.package(“rmarkdown”)
library(rmarkdown)
```
# 一、人類語言——markdown語法
RMarkdown中默認(rèn)的輸入方式是文字語言。在某段文字后雙擊回車鍵(enter)即另起新一段,單擊enter不會(huì)另起一段。隔開多行和隔開一行效果相同。
### 1.字體
**加粗**
*斜體*
***加粗斜體***
~~刪除線~~
<font face="微軟雅黑">我是微軟雅黑</font>
<font color=#0099ff size=12 face="黑體">黑體</font>
### 2.引用
>引用
>???? 加5個(gè)空格
>>第二層引用
### 3.分級列表
\* \+ \- 都可以表示無序列表,需要在符號后打一個(gè)空格。序號前打一個(gè)空格表示下一級列表。跳脫符\\可以顯示符號而不顯示格式。
* 無序列表1
+ 無序列表2
- 無序列表3
1. 有序列表1
2. 有序列表2
i) 有序列表3
i) 有序列表4
### 4.表格
| 表頭1 | 表頭2 | 表頭3 |
| :--: | -- | ---: |
| 中心對齊 | 左對齊 | 右對齊 |
### 5.分隔線
- - -
***
### 6.代碼
`代碼片`
```
代碼塊
```
# 二、機(jī)器語言——R代碼
insert可以在光標(biāo)處插入編碼框。插入的代碼框與正文背景顏色不同,并與正文以\`\`\`{r}和\`\`\`隔開。不加{r}的代碼塊不會(huì)運(yùn)行。
### 1.插入R代碼
默認(rèn)狀態(tài)下生成的代碼框會(huì)在輸出的文檔中顯示代碼框中的全部內(nèi)容,連同結(jié)果一起顯示出來。
```{r}
a <- c(1,2,3,4,5)
b <- c(6,7,8,9,10)
d <- a+b
a;b;d
```
### 2.行內(nèi)代碼
`r a`
### 3.隱藏結(jié)果
results="hide"可以將運(yùn)行結(jié)果隱藏,但圖像是顯示的。 eval=FALSE顯示代碼而不顯示運(yùn)行結(jié)果
```{r,results='hide'}
a
```
### 4.不顯示代碼
echo=FALSE不在報(bào)告正文中顯示某個(gè)框中的代碼,只顯示結(jié)果和圖像。 include=FALSE隱藏所有的代碼、輸出和圖像。
```{r,echo=FALSE}
e <- b-a
e
```
### 5.作圖
在需要做圖的情況下,我們可以在代碼框中運(yùn)行plot()命令。 同時(shí)使用include=TRUE和results="hide"會(huì)隱藏結(jié)果顯示圖像。 fig.show="hide"可隱藏圖像。
```{r}
plot(d)
```
### 6.表格
```{r}
fr <- data.frame(a,b,d,e)
fr
```
### 7.得到有表格線的表格
```{r}
knitr::kable(fr)
```
# 三、保存knit
### 1.保存為網(wǎng)頁
```
output:
? html_document:
? toc: true theme: united
```
### 2.保存為word
```
output: word_document
```
### 3.保存為pdf
(保存失敗了)
```
outputs:
? pdf_document:
? ? includes:
? ? ? in_header: header.tex
? ? latex_engine: xelatex
```
(2)保存成html
效果如圖
(3)保存成word
補(bǔ)充內(nèi)容
eval:(TRUE; 邏輯):是否執(zhí)行代碼
tidy:(TRUE; 邏輯):是否整理代碼
prompt:(FALSE; 邏輯):是否添加引導(dǎo)符>
highlight:(TRUE; 字符):是否高亮代碼
size:(normalsize; 字符):大小
background:(#F7F7F7; 字符或數(shù)值):背景顏色
comment:(##; 字符):結(jié)果輸出前綴符號
echo:(TRUE; 邏輯或數(shù)值):是否輸出代碼或輸出哪些行
results:(markup; 字符):裝裱輸出(markup)、原樣輸出(asis)、隱藏(hide)
warning, error, message:(TRUE; 邏輯):是否顯示相應(yīng)信息
split:(FALSE; 邏輯):是否剝離代碼和文本到外部文件
include:(TRUE; 邏輯):是否保留代碼或結(jié)果到最終文檔
fig.path:(figure/; 字符):圖片路徑,支持前綴模式(figure/prefix-)
fig.keep:(high; 字符):保存圖形類型,高級圖形(high)、不保存(none)、所有圖形(all)、第一張(first)、最后一張(last)
fig.show:(asis; 字符):展示方式,緊隨代碼輸出(asis)、最后統(tǒng)一輸出(hold)、動(dòng)畫輸出(animate)
dev:(LaTeX 為pdf, HTML/markdown 為png; 字符):輸出設(shè)備,knitr 支持很多種設(shè)備
fig.width, fig.height:(7; 數(shù)值):圖片文件的寬、高(英寸2.54cm 為單位)
out.width, out.height:(NULL; 字符):圖片在輸出文檔中的寬、高
fig.align:(default; 字符):對齊方式,不做調(diào)節(jié)(default)、左(left)、右(right)、居中(center)
interval:(1; 數(shù)值):動(dòng)畫參數(shù),切換畫面時(shí)間,單位為秒
文本前格式:
---
title: "題目"
output:
html_document:
toc: TRUE #目錄
fig_width: 7
fig_height: 4.5
author: "作者"
date: "2020年6月15日"
---
全局代碼塊:
避免每次使用代碼塊都重復(fù)敲代碼來設(shè)置代碼塊,可按如下設(shè)置初始代碼塊:
```{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最終文檔中不會(huì)顯示R軟件任何的提示信息, fig.path='Figs/'把圖片保存在Figs子文件夾中(默認(rèn)情況下圖片不會(huì)被保存,注意Figs后面的斜線“/”不可少,否則圖片會(huì)以Figs為文件名開頭被保存在主目錄中)。如果在某個(gè)特定代碼塊中需要不一樣的設(shè)置,可以單獨(dú)設(shè)置該代碼塊。