Rmarkdown介绍

Markdown

Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯。它允许人们使用易读易写的纯文本格式编写文档,然后转换成各种文档。

写标题

写标题格式就是#空格加标题,一共可以写六级标题,几级标题就几个#,记得加空格。

文本

斜体:在文字两边加*或者_(斜体斜体)
加粗:在文字两边加**或者__(加粗加粗

引用

链接引用格式:[链接名称](链接地址)
图片引用格式:![图片名称](图片链接)
文本引用格式:段落前加>

白日依山尽

黄河入海流

代码块

直接用`框住写的代码就好。

sin(pi)

或者hello world

列表

无序列表:-空格内容
有序列表:1.空格内容

表格

表格的每列之间用|隔开,第一行后用------隔开,举个例子(不用对齐|

第一列 第二列 第三列
内容一 内容二 内容三

注:可以通过-----调整对齐方式,具体有三种 :------:居中 :-------左对齐 -------:右对齐

第一列 第二列 第三列
内容一 内容二 内容三

公式

写公式可能是写论文最头疼得了,markdown不要太好用了,公式两边用$$框起来,类似于代码块,简单写个积分符号感受下。

\[ \int\ dt. \]

具体其他公式,可以参考这个网站! https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference

软件推荐

Typora下载地址https://www.typora.io/ 。可以自主更换主题,输出各种文档,编译也比较简单。


Rmarkdown

R-markdown的基本语法与markdown基本一致,核心区别在于写入代码区域的代码能在编译的时候同时生成相应的图、表和运算结果,省去了保存和插入的过程。同时能保存为 HTML、 WORD和PDF等格式。注意 PDF需要LaTex的支持。 官方介绍网址

安装与建立

install.packages('rmarkdown')
#install from GitHub
if (!requireNamespace("devtools"))
  install.packages('devtools')
devtools::install_github('rstudio/rmarkdown')

如果需要生产PDF文件输出,建议安装TinyTeX(如果之前未安装过LaTeX)(轻便、可移植、跨平台、易于维护的LaTeX发行版)(全套安装Texlive)

install.packages('tinytex')
tinytex::install_tinytex()

通过以下操作建立Rmarkdown文件:File->New File-->R Markdown,得到以下页面:

可以通过该界面选项更改标题、作者、输出格式等。 之后得到Rmarkdown的默认页面,通过该页面可以看到文件由头部文件、正文以及代码块组成,其中头部文件编码格式为YAML。
简单的介绍一下,界面功能。 Knit是文件的输出选项,下拉可以选择不同的输出类型。 +c可以选择输入代码块的语言类型(快捷键ctrl+alt+I) 设置部分可以选择输出后的展示地点等。

插入代码

  • 快捷键ctrl+alt+I
  • 行内代码1.2246064^{-16},文档结合代码可以采用如下:这里一共有15个人
  • 一般代码块同markdown
print(1:5)
## [1] 1 2 3 4 5

插入表格

外部表格

  • 同markdown
  • 可视化下插入

内部表格

  • 方法一: 这里主要讲运行结果中表格的输出,knitr包中提供了一个kable()函数,可以把数据框或者矩阵转化成有格式的表格,支持HTML、docx、LaTex等格式。 以线性回归为例:
x<-1:10;
y<-x^2;
lmr<-lm(y~x)
co<-summary(lmr)$coefficients
print(co)
##             Estimate Std. Error   t value     Pr(>|t|)
## (Intercept)      -22  5.5497748 -3.964125 4.152962e-03
## x                 11  0.8944272 12.298374 1.777539e-06
knitr::kable(co)
Estimate Std. Error t value Pr(>|t|)
(Intercept) -22 5.5497748 -3.964125 0.0041530
x 11 0.8944272 12.298374 0.0000018

常用参数设置:通过digits=可以控制小数点位数,通过caption=可以对标题进行编辑,通过align=可以对文字对齐方式进行设置,其中l左对齐c居中`r右对齐。其他参数设置可以通过的帮助文档查看(光标kable放置在上,点击 F1)。

knitr::kable(co,digits = 4,caption = "回归",align = 'c')
回归
Estimate Std. Error t value Pr(>|t|)
(Intercept) -22 5.5498 -3.9641 0.0042
x 11 0.8944 12.2984 0.0000
  • 方法二: R拓展包pander提供了更好的表格能力,也能与knitr包很好的合作输出。通过以下方式实现:
pander::pander(lmr)

但表中有中文时可能会出错。

插入图片

代码图片

plot(1:10)

  • fig.show='asis'表示画图在代码后;
  • fig.show='hold'代码产生图片放在一个完整代码块;
  • fig.show='animate'所有生成的图片合成一个动画图片;
  • fig.show='hide'产生图片但不展示;
  • 图片大小可以通过设置调整,设置图片大小还可以通过赋值fig.heightfig.width赋值或者设置百分比(百分比在HTML格式下会自适应页面大小),也可以通过点击设置里面对图片大小进行更改。
plot(1:10)

  • fig.align默认left,可以设置为centerright
plot(1:10)

  • fig.cap设置图片标题
plot(1:10)
散点图

散点图

外部图片

与markdown方法类似

  • 方法一:![]()
  • 方法二:拖入

代码段选项

具体定义参考https://yihui.name/knitr/options

print(1:5)
## [1] 1 2 3 4 5
  • eval决定代码是否运行
print(1:5)#仅显示不运行
  • include决定代码和结果是否写入生成文档

  • echo决定是否显示代码块

## [1] 1 2 3 4 5
  • 多个代码显示在一个框中
print(1:5)
## [1] 1 2 3 4 5
print(1:10)
##  [1]  1  2  3  4  5  6  7  8  9 10
print(1:5)
## [1] 1 2 3 4 5
print(1:10)
##  [1]  1  2  3  4  5  6  7  8  9 10
  • prompt代码用于区别代码和结果
> print(1:5)
## [1] 1 2 3 4 5
> print(1:10)
##  [1]  1  2  3  4  5  6  7  8  9 10
  • comment代码用于去除结果中的##
print(1:5)
[1] 1 2 3 4 5

简单做一个对比

print(1:5)
## [1] 1 2 3 4 5
print(1:10)
##  [1]  1  2  3  4  5  6  7  8  9 10
> print(1:5)
[1] 1 2 3 4 5
> print(1:10)
 [1]  1  2  3  4  5  6  7  8  9 10
  • tidy=TRUE可以自动重新编排代码
s<-0
for(x in 1:5) {s<-s+x^x;print(s)}
## [1] 1
## [1] 5
## [1] 32
## [1] 288
## [1] 3413
  • results选项 markup默认选项,会把文本结果转化成HTML格式,hide运行代码但不显示,hold一个代码块所有代码显示完,才显示结果,asis文本型输入直接进入HTML文件
print(1:5)

[1] 1 2 3 4 5

  • 隐藏信息和警告,通过代码块旁设置实现
print(1:5)
## [1] 1 2 3 4 5

公式输入

常见公式表达: 

  • 下标:$x_1$结果为\(x_1\)
  • 上标:$x^2$结果为\(x^2\),但写一个整体需要括号连接$x^21$结果为\(x^{21}\)
  • 根号:$sqrt{2}$结果为\(\sqrt{2}\)
  • 绝对值:$|x|$ 结果为\(|x|\)
  • 导数:$f'(x)$结果为\(f'(x)\)
  • 修饰符:

$\bar{x}$结果为\(\bar{x}\)
$overline{\text{span}}$结果为\(\overline{\text{span}}\)
$\hat{x}$结果为\(\hat{x}\)
$\tilde{x}$结果为\(\tilde{x}\)
$\vec{x}$结果为\(\vec{x}\)


Rmarkdown输出

PDF中文模板

# Install from CRAN
install.packages("rticles")

# Or install development version from GitHub
devtools::install_github("rstudio/rticles")

使用方式
File->New File-->R Markdown-->Form Template-->CTeX documents,或者复制头部文件到想要的文件中。

HTML模板

rmdformats

install.packages("rmdformats")

使用方式
File->New File-->R Markdown-->Form Template-->CTeX documents,或者复制头部文件到想要的文件中。