R Markdown是R语⾔环境中提供的Markdown编辑⼯具,⽤R Markdown撰写⽂章,既可以像⼀般的Markdown编辑器⼀样编辑⽂本,也可以插⼊代码块,并将代码运⾏结果输出在Markdown⾥。这种格式我们称之为R Markdown格式,...
Markdown是⼀种轻量级标记语⾔,它允许我们可以通过简单的⽂本格式编写⽂档,语法简单、上⼿容易,所以越来越多的人都在使用它,而且现在还有有很多可以⽀持Markdown编辑的应⽤软件,例如Typora、Notion等,通过这些⼯具可以便捷地完成Markdown编辑,并且⽀持导出PDF、HTML等多种格式。是不是觉得好像也不太常见,实则不然呐!其实我们平常经常使用的简书、知乎、CSDN也都支持Markdown呢!
常用语法展示:
| 名称 | 显示|
|:-----------|:----------|
| 常规 | default|
| 斜体 | *italics* and _italics_|
| 粗体 | **bold** and __bold__|
| 上标 | superscript^2^|
| 下标 | HO~2~|
| 代码 | `code`|
| 删除线 | ~~strikethrough~~|
| 链接 | [Markdown官网](https://markdown.com.cn/)|
| 标题 | ## H2 |
| 短横线 | - |
| 长横线 | ---|
| 省略号 | ...|
| 水平线 | ***|
| 图片 | ![caption](pictures/mua.jpg)|
| 表格 | 这不就是嘛|
| 有序列表 | 1. 第一点|
| 无序列表 | - 第一点|
效果展示如下:
<table> <thead> <tr> <th align="left">名称</th> <th align="left">显示</th> </tr> </thead> <tbody> <tr> <td align="left">常规</td> <td align="left">default</td> </tr> <tr> <td align="left">斜体</td> <td align="left">italics and italics</td> </tr> <tr> <td align="left">粗体</td> <td align="left">bold and bold</td> </tr> <tr> <td align="left">上标</td> <td align="left">superscript<sup>2</sup></td> </tr> <tr> <td align="left">下标</td> <td align="left">HO<sub>2</sub></td> </tr> <tr> <td align="left">代码</td> <td align="left">code</td> </tr> <tr> <td align="left">删除线</td> <td align="left"><s>strikethrough</s></td> </tr> <tr> <td align="left">链接</td> <td align="left"><a href="https://markdown.com.cn/">Markdown官网</a></td> </tr> <tr> <td align="left">标题</td> <td align="left">## H2</td> </tr> <tr> <td align="left">短横线</td> <td align="left">-</td> </tr> <tr> <td align="left">长横线</td> <td align="left">—</td> </tr> <tr> <td align="left">省略号</td> <td align="left">…</td> </tr> <tr> <td align="left">水平线</td> <td align="left">***</td> </tr> <tr> <td align="left">图片</td> <td align="left"> </td> </tr> <tr> <td align="left">表格</td> <td align="left">这不就是嘛</td> </tr> <tr> <td align="left">有序列表</td> <td align="left">1. 第一点</td> </tr> <tr> <td align="left">无序列表</td> <td align="left">- 第一点</td> </tr> </tbody> </table>nn 深入学习Markdown详见:<a href="https://markdown.com.cn/">https://markdown.com.cn/</a>
R Markdown是R语⾔环境中提供的Markdown编辑⼯具,⽤R Markdown撰写⽂章,既可以像⼀般的Markdown编辑器⼀样编辑⽂本,也可以插⼊代码块,并将代码运⾏结果输出在Markdown⾥。这种格式我们称之为R Markdown格式,简称为Rmd格式,相应的源⽂件扩展名为.Rmd。输出格式可以是HTML、docx、pdf等。
对于经常使⽤R语⾔(不止R,也支持其他语言,如Python、SQL、Stan等)的人来说,比如我们,别人偶尔可能会需要复现我们的工作,那么这个时候,R Markdown就可以助我们一臂之力,以便于他人实现工作复现。可以说Rmd是又便捷又实用!
<a href="https://rmarkdown.rstudio.com/lesson-1.html">R Stidio官网</a>(初步了解) <a href="https://www.bookstack.cn/read/rmarkdown-cookbook-1.0-en/5d40b1b09165871a.md">R Markdown Cookbook</a>(相对基础) <a href="https://bookdown.org/yihui/rmarkdown/">R Markdown: The Definitive Guide</a>(非常全面) <a href="https://s3.us-west-2.amazonaws.com/secure.notion-static.com/a7655e00-26c3-4168-b137-721b2a75a165/rmarkdown-cheatsheet-2.0.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20221125%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221125T135609Z&X-Amz-Expires=86400&X-Amz-Signature=76479d57e7a104cdf7e877cb8be10c9a67b69a2d6f94688fc1b8a5cdddd6562e&X-Amz-SignedHeaders=host&response-content-disposition=filename%3D%22rmarkdown-cheatsheet-2.0.pdf%22&x-id=GetObject">R Markdown Cheat Sheet</a>
如果上述链接失效,可以在<a href="https://hickory-run-1ad.notion.site/R-R-Markdown-a598eab65b0e4977a73d1172995ef266">这里</a>找到你想要的噢!
R Markdown不需要R Studio,但建议使⽤R Studio,因为如果没有安装R Studio,就必须安装<a href="http://pandoc.org">Pandoc</a>,而R Studio已和它捆绑在⼀起,所以无需对其进行单独安装。
Rstudio中安装R Markdown软件包,可以通过下⾯任意⼀种⽅式:
# from CRAN
install.packages('rmarkdown')
# install from GitHub
devtools::install_github('rstudio/rmarkdown')
library(rmarkdown)
如果要⽣成PDF输出,则需要安装LaTeX。对于从未安装过LaTeX的R Markdown⽤户,建议安装<a href="https://yihui.name/tinytex/">TinyTeX</a>:
install.packages('tinytex')
tinytex::install_tinytex()
TinyTex是谢益辉大神专为R Markdown开发的超轻量级的Latex环境,是⼀种轻便、可移植、跨平台、易于维护的LaTeX发⾏版。R中的配套软件包tinytex可以帮助我们在将LaTeX或R Markdown⽂档编译为PDF时⾃动安装缺少的LaTeX软件包,并确保将LaTeX⽂档编译正确的次数以解决所有交叉引⽤。
点击Rstudio左上⾓的新建项⽬,选择R markdown⽂件格式,就可以建⽴⼀个R Markdown的编辑⽂件。 像这样:
在弹出的框⾥,可以填写R Markdown的Title、Author以及默认的输出⽂件格式,⼀般可以选择HTML、PDF、Word格式。
在新建的R Markdown⽂件⾥,主要包含三块内容:1.YAML;2.R Markdown⽂本;3.代码块。
YAML ------ R Markdown的头部⽂件(红),YAML定义了R Markdown的性质,⽐如title、author、date、指定 output⽂件类型等。 Markdown文本 ------ Markdown⽂本是R Markdown⾥的主要内容(黄),是使用者按照Markdown语法⾃⾏编写的⽂本内容。 代码块 ------ R Markdown的⼀个主要功能是可以执⾏⽂件内的代码块(蓝),并且将代码执⾏结果展⽰在Markdown⾥。这对撰写分析报告带来了极⼤滴便利。Rmd⽂件中除了R代码段以外, 还可以插⼊Python、SQL等许多编程语⾔的代码段,常⽤编程语⾔还可以与R代码段进⾏信息交换。
R studio 界面简单介绍
详见视频演示
导出方法:
手动 命令行
⼿动点击Knit按钮,选择导出格式类型即可,Rstudio⽀持导出PDF、html、word三种类型。
界面如下:
命令⾏导出主要依靠render实现,render函数主要包含下面两个参数:
input:指定需要导出的Rmd⽂件地址 output_format:指定需要导出的⽂件类型,同样⽀持pdf、word、html等多种⽂件格式。若未指定output_format格式,则输出Rmd⽂件中output指定的格式类型。
render("FileName.Rmd")
render(input = "./save/path/FileName.Rmd", output_format = "html_document")
详见视频演示
我们如果希望输出行内代码,只需要将需要输出的代码用一对反引号``包括起来即可,像这样:
r sum(1:5)`
也可以文本结合代码,如下:
数据之和为x <- rnorm(5)
更高阶的还有,比如:
date: `r Sys.Date()`
date: 最近更新日期为`r format(Sys.time(), '%d %B, %Y')`
这样我们就可以随着我们编辑文档的时间动态生成日期。除了上面的写法,还可以这样:
%B %Y: November 2022 %d/%m/%y: 07/11/22 %a/%d/%b: Mon 07 Nov
R代码块⼀般通过{r}来插⼊,也可以使用快捷键:Ctrl+Alt+I / option + cmd + I,也可以直接点击右上方绿色的+C。
详见视频演示
默认情况下代码和结果会在输出⽂件中呈现。如果通过参数来控制代码块运⾏结果的输出情况可以在{r}中设置。⼀般包括代码及运⾏结果的输出、图⽚表格格式定义等。
eval: 加选项eval=FALSE,可以使得代码仅显⽰⽽不实际运⾏。这样的代码段如果有标签,可以在后续代码段中被引⽤。
include: 加选项include=FALSE,则本代码段仅运⾏,但是代码和结果都不写⼊到⽣成的⽂档中。
echo: echo参数控制了Markdown是否显⽰代码块。若echo=TRUE,则表⽰代码块显⽰在markdown⽂档显⽰代码块;反之,代码块不出现在输出结果中。
collapse: ⼀个代码块的代码、输出通常被分解为多个原样⽂本块中,如果⼀个代码块希望所有的代码、输出都写到同⼀个原样⽂本块中,加选项collapse=TRUE。
prompt: prompt=TRUE代码⽤R的>提⽰符开始。
comment:如果希望结果不⽤#号保护,使⽤选项comment=''。
results: ⽤选项results=选择⽂本型结果的类型。取值有:
markup,这是缺省选项,会把⽂本型结果变成HTML的原样⽂本格式; hide,运⾏了代码后不显⽰运⾏结果; hold,⼀个代码块所有的代码都显⽰完,才显⽰所有的结果。 asis,⽂本型输出直接进⼊到HTML⽂件中,这需要R代码直接⽣成HTML标签,knitr包的kable()函数可以把数据框转换为HTML代码的表格。
warning,选项warning=FALSE使得代码段的警告信息不进⼊编译结果,⽽是在控制台中显⽰。有⼀些扩展包的载⼊警告可以⽤这种办法屏蔽。
error,选项error=FALSE可以使得错误信息不进⼊编译结果,⽽是出错停⽌并将错误信息在控制台中显⽰。
message,选项message=FALSE可以使得message级别的信息不进⼊编译结果,⽽是在控制台中显⽰。
若R Markdown内的代码块存在⼀样的参数设置,则可以提前设计好全局的代码块参数。全局代码块通过knitr::opts_chunk$set函数进⾏设置,⼀般设置在YAML⽂件下⽅。注:局部参数设置优先级大于全局参数设置。
knitr::opts_chunk$set(echo = TRUE)
详见视频演示
fig.show:设置了图⽚输出⽅式
fig.show=‘asis’:表⽰plot在产⽣他们的代码后⾯ fig.show=‘hold’:所有代码产⽣的图⽚都放在⼀个完整的代码块之后 fig.show=‘animate’:表⽰将所有⽣成的图⽚合成⼀个动画图⽚
需要进行一些设置,详见<a href="https://bookdown.org/yihui/rmarkdown-cookbook/animation.html">https://bookdown.org/yihui/rmarkdown-cookbook/animation.html</a> fig.show=‘hide’:表⽰产⽣所有图⽚,但是并不展⽰ fig.width:设置图⽚输出的宽度 fig.height:设置图⽚输出的⾼度
也可直接在R studio界面进行设置 fig.align:设置图⽚位置排版格式,默认为left,可以为right或者center fig.cap :设置图⽚的标题 fig.subcap:设置图⽚的副标题 out.width和out.height选项指定在输出中实际显⽰的宽和⾼,如果使⽤如"90%"这样的百分数单位则可以⾃适应输出的⼤⼩。
图片不是由R代码生成,有两种方法插入:
使⽤Markdown语法,你可以使⽤width和height属性来设置图像的⼤⼩。
![caption](xxx.png){width=50%}
注意:图⽚⽂件放的位置(如果和Rmd同⼀⽬录,可以直接xxx.png;如果在其他位置要加上相对路径)。
在visual状态下,直接外部拉⼊图形即可,会⾃动保存在相对⽂件夹的images文件夹中,或者点击图形按钮导⼊。
在代码块中使⽤knitr函数knitr::include_graphics()。图⽚尺⼨更改与插⼊R代码⽣成的图形的情况相同。
knitr::include_graphics("./pictures/inputfig.png")
详见视频演示
采用Markdown形式即可,如下:
|表头|第二列|第三列|
|:--|:--|:--|
|第一行|1|2|
|第二行|4|3|
|第三行|5|6|
效果展示:
<table> <thead> <tr> <th align="left">表头</th> <th align="left">第二列</th> <th align="left">第三列</th> </tr> </thead> <tbody> <tr> <td align="left">第一行</td> <td align="left">1</td> <td align="left">2</td> </tr> <tr> <td align="left">第二行</td> <td align="left">4</td> <td align="left">3</td> </tr> <tr> <td align="left">第三行</td> <td align="left">5</td> <td align="left">6</td> </tr> </tbody> </table>nn >
表格前面加回车,不然无法展示(项目符号同)。
如果在表格中插入一个|,表格就会混乱,因为它无法正确区别这个|是属于表格的一部分还是仅仅只是表示|。如下:
|表头|第二列|第三列|
|:--|:--|:--|
|第一行|a|b|2|
|第二行|4|3|
|第三行|5|6|
错误效果展示:
<table> <thead> <tr> <th align="left">表头</th> <th align="left">第二列</th> <th align="left">第三列</th> </tr> </thead> <tbody> <tr> <td align="left">第一行</td> <td align="left">a</td> <td align="left">b</td> </tr> <tr> <td align="left">第二行</td> <td align="left">4</td> <td align="left">3</td> </tr> <tr> <td align="left">第三行</td> <td align="left">5</td> <td align="left">6</td> </tr> </tbody> </table>nn 在表格中可以使用|(|结尾要加个分号;)来表示|。
|表头|第二列|第三列|
|:--|:--|:--|
|第一行|a&#124;b|2|
|第二行|4|3|
|第三行|5|6|
正确效果展示:
<table> <thead> <tr> <th align="left">表头</th> <th align="left">第二列</th> <th align="left">第三列</th> </tr> </thead> <tbody> <tr> <td align="left">第一行</td> <td align="left">a|b</td> <td align="left">2</td> </tr> <tr> <td align="left">第二行</td> <td align="left">4</td> <td align="left">3</td> </tr> <tr> <td align="left">第三行</td> <td align="left">5</td> <td align="left">6</td> </tr> </tbody> </table>nn 在visual状态下,可直接操作R Studio界面进行表格插入与设置,如下:
详见视频演示
我们可以使用knitr包的kable函数,可以⽤来把数据框或矩阵转化成有格式的表格,⽀持HTML、docx、LaTeX等格式。
knitr::kable(exp_table)
格式调整详见参数,比如:digits设置小数点后位数,align设置排列方式。
pander包的pander函数也可以将多种R输出格式转换成knitr需要的表格形式。
pander::pander(exp_table)
pander包在表中有中文时会出错。
其他包:tables,tangram,ztable,condformat等等…
通过前⾯可以看到:⽤knitr::kable()输出表格结果其实不是⾮常美观,并且很多功能都不能实现。这时我们可以⽤kableExtra、huxtable等扩展包来美化表格,对字体大小、对齐方式、边框底纹、选择高亮等等进行设置。
kableExtra包的使用,详见:
帮助文档 or <a href="https://bookdown.org/yihui/rmarkdown-cookbook/kableextra.html">https://bookdown.org/yihui/rmarkdown-cookbook/kableextra.html</a> or <a href="https://haozhu233.github.io/kableExtra/">https://haozhu233.github.io/kableExtra/</a>。
更多包尽见:<a href="https://bookdown.org/yihui/rmarkdown-cookbook/table-other.html">https://bookdown.org/yihui/rmarkdown-cookbook/table-other.html</a>
R Markdowm作为制作可重复性报告的优秀⼯具,除了提供⽂档编辑、图表输出外,还有许多主题格式供我们选择。除了默认主题外,还可以通过加载rticles、prettydoc、rmdformats、tufte、cerulean等包获取更多主题格式。下⾯我们看看⼏类扩展包⾥的主题样式。
记得先安装!
详见视频演示
rticles可以更好地进行PDF及其他格式导出,其他包更适用于HTML格式导出。
官网:<a href="https://github.com/rstudio/rticles">https://github.com/rstudio/rticles</a> 教程:<a href="https://bookdown.org/yihui/rmarkdown/rticles-templates.html">https://bookdown.org/yihui/rmarkdown/rticles-templates.html</a>
<a href="https://www.bilibili.com/video/BV1ib4y1X7r9">https://www.bilibili.com/video/BV1ib4y1X7r9</a> <a href="https://rmarkdown.rstudio.com/lesson-1.html">https://rmarkdown.rstudio.com/lesson-1.html</a> <a href="https://www.bookstack.cn/read/rmarkdown-cookbook-1.0-en/5d40b1b09165871a.md">https://www.bookstack.cn/read/rmarkdown-cookbook-1.0-en/5d40b1b09165871a.md</a> <a href="https://bookdown.org/yihui/rmarkdown/">https://bookdown.org/yihui/rmarkdown/</a> <a href="https://www.jianshu.com/p/4705a1dc8e5a">https://www.jianshu.com/p/4705a1dc8e5a</a> <a href="https://www.jianshu.com/p/f71fac797a6c">https://www.jianshu.com/p/f71fac797a6c</a> <a href="https://markdown.com.cn/cheat-sheet.html">https://markdown.com.cn/cheat-sheet.html</a>
本站主要用于日常笔记的记录和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题,请联系我立即删除:“abcdsjx@126.com”。
QQ: 1164453243
邮箱: abcdsjx@126.com