R Markdown 的使用|保姆级教程

这篇具有很好参考价值的文章主要介绍了R Markdown 的使用|保姆级教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. R Markdown 简介

1.1 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.  第一点|
| 无序列表    | -   第一点|

效果展示如下:

名称 显示
常规 default
斜体 italics and italics
粗体 bold and bold
上标 superscript2
下标 HO2
代码 code
删除线 strikethrough
链接 Markdown官网
标题 ## H2
短横线 -
长横线
省略号
水平线 ***
图片 rmarkdown,r语言,python
表格 这不就是嘛
有序列表 1. 第一点
无序列表 - 第一点

深入学习Markdown详见:https://markdown.com.cn/

1.2 R Markdown 简介

R Markdown是R语⾔环境中提供的Markdown编辑⼯具,⽤R Markdown撰写⽂章,既可以像⼀般的Markdown编辑器⼀样编辑⽂本,也可以插⼊代码块,并将代码运⾏结果输出在Markdown⾥。这种格式我们称之为R Markdown格式,简称为Rmd格式,相应的源⽂件扩展名为.Rmd。输出格式可以是HTML、docx、pdf等。

对于经常使⽤R语⾔(不止R,也支持其他语言,如Python、SQL、Stan等)的人来说,比如我们,别人偶尔可能会需要复现我们的工作,那么这个时候,R Markdown就可以助我们一臂之力,以便于他人实现工作复现。可以说Rmd是又便捷又实用!

  • R Stidio官网(初步了解)
  • R Markdown Cookbook(相对基础)
  • R Markdown: The Definitive Guide(非常全面)
  • R Markdown Cheat Sheet

如果上述链接失效,可以在这里找到你想要的噢!

2. R Markdown 的使用

2.1 安装

R Markdown不需要R Studio,但建议使⽤R Studio,因为如果没有安装R Studio,就必须安装Pandoc,而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⽤户,建议安装TinyTeX:

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

TinyTex是谢益辉大神专为R Markdown开发的超轻量级的Latex环境,是⼀种轻便、可移植、跨平台、易于维护的LaTeX发⾏版。R中的配套软件包tinytex可以帮助我们在将LaTeX或R Markdown⽂档编译为PDF时⾃动安装缺少的LaTeX软件包,并确保将LaTeX⽂档编译正确的次数以解决所有交叉引⽤。

2.2 新建 R Markdown

  1. 点击Rstudio左上⾓的新建项⽬,选择R markdown⽂件格式,就可以建⽴⼀个R Markdown的编辑⽂件。 像这样:
    rmarkdown,r语言,python

  2. 在弹出的框⾥,可以填写R Markdown的Title、Author以及默认的输出⽂件格式,⼀般可以选择HTML、PDF、Word格式。
    rmarkdown,r语言,python

  3. 在新建的R Markdown⽂件⾥,主要包含三块内容:1.YAML;2.R Markdown⽂本;3.代码块。
    rmarkdown,r语言,python

  • YAML ------ R Markdown的头部⽂件(红),YAML定义了R Markdown的性质,⽐如title、author、date、指定 output⽂件类型等。
  • Markdown文本 ------ Markdown⽂本是R Markdown⾥的主要内容(黄),是使用者按照Markdown语法⾃⾏编写的⽂本内容。
  • 代码块 ------ R Markdown的⼀个主要功能是可以执⾏⽂件内的代码块(蓝),并且将代码执⾏结果展⽰在Markdown⾥。这对撰写分析报告带来了极⼤滴便利。Rmd⽂件中除了R代码段以外, 还可以插⼊Python、SQL等许多编程语⾔的代码段,常⽤编程语⾔还可以与R代码段进⾏信息交换。
  1. R studio 界面简单介绍

详见视频演示

2.3 R Markdown 的导出

导出方法:

  • 手动
  • 命令行

2.3.1 手动导出

⼿动点击Knit按钮,选择导出格式类型即可,Rstudio⽀持导出PDF、html、word三种类型。
rmarkdown,r语言,python

界面如下:
rmarkdown,r语言,python

2.3.2 命令行导出

命令⾏导出主要依靠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")

2.4 代码输出

2.4.1 行内代码

详见视频演示

  1. 我们如果希望输出行内代码,只需要将需要输出的代码用一对反引号``包括起来即可,像这样:
r sum(1:5)`
  1. 也可以文本结合代码,如下:
数据之和为x <- rnorm(5)
  1. 更高阶的还有,比如:
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

2.4.2 代码块

R代码块⼀般通过{r}来插⼊,也可以使用快捷键:Ctrl+Alt+I / option + cmd + I,也可以直接点击右上方绿色的+C

详见视频演示

默认情况下代码和结果会在输出⽂件中呈现。如果通过参数来控制代码块运⾏结果的输出情况可以在{r}中设置。⼀般包括代码及运⾏结果的输出、图⽚表格格式定义等。

2.4.2.1 通过选项设置参数

输出信息选项
  • 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)

2.4.2.2 R studio 界面直接设置参数(部分但便捷)

rmarkdown,r语言,python

2.5 图片输出

详见视频演示

2.5.1 插⼊内部代码⽣成的图形

  • fig.show:设置了图⽚输出⽅式
    • fig.show=‘asis’:表⽰plot在产⽣他们的代码后⾯
    • fig.show=‘hold’:所有代码产⽣的图⽚都放在⼀个完整的代码块之后
    • fig.show=‘animate’:表⽰将所有⽣成的图⽚合成⼀个动画图⽚
      • 需要进行一些设置,详见https://bookdown.org/yihui/rmarkdown-cookbook/animation.html
    • fig.show=‘hide’:表⽰产⽣所有图⽚,但是并不展⽰
  • fig.width:设置图⽚输出的宽度
  • fig.height:设置图⽚输出的⾼度
    • 也可直接在R studio界面进行设置
  • fig.align:设置图⽚位置排版格式,默认为left,可以为right或者center
  • fig.cap :设置图⽚的标题
  • fig.subcap:设置图⽚的副标题
  • out.widthout.height选项指定在输出中实际显⽰的宽和⾼,如果使⽤如"90%"这样的百分数单位则可以⾃适应输出的⼤⼩。

2.5.2 插⼊外部图形

图片不是由R代码生成,有两种方法插入:

  1. 使⽤Markdown语法![caption](path/to/image),你可以使⽤width和height属性来设置图像的⼤⼩。
![caption](xxx.png){width=50%}

注意:图⽚⽂件放的位置(如果和Rmd同⼀⽬录,可以直接xxx.png;如果在其他位置要加上相对路径)。

  1. visual状态下,直接外部拉⼊图形即可,会⾃动保存在相对⽂件夹的images文件夹中,或者点击图形按钮导⼊。
    rmarkdown,r语言,python

  2. 在代码块中使⽤knitr函数knitr::include_graphics()。图⽚尺⼨更改与插⼊R代码⽣成的图形的情况相同。

knitr::include_graphics("./pictures/inputfig.png")

2.6 表格输出

详见视频演示

2.6.1 插入外部表格

  1. 采用Markdown形式即可,如下:
    |表头|第二列|第三列|
    |:--|:--|:--|
    |第一行|1|2|
    |第二行|4|3|
    |第三行|5|6|

效果展示:

表头 第二列 第三列
第一行 1 2
第二行 4 3
第三行 5 6

表格前面加回车,不然无法展示(项目符号同)。

如果在表格中插入一个|,表格就会混乱,因为它无法正确区别这个|是属于表格的一部分还是仅仅只是表示|。如下:

    |表头|第二列|第三列|
    |:--|:--|:--|
    |第一行|a|b|2|
    |第二行|4|3|
    |第三行|5|6|

错误效果展示:

表头 第二列 第三列
第一行 a b
第二行 4 3
第三行 5 6

在表格中可以使用&#124(&#124结尾要加个分号;)来表示|

    |表头|第二列|第三列|
    |:--|:--|:--|
    |第一行|a&#124;b|2|
    |第二行|4|3|
    |第三行|5|6|

正确效果展示:

表头 第二列 第三列
第一行 a|b 2
第二行 4 3
第三行 5 6
  1. visual状态下,可直接操作R Studio界面进行表格插入与设置,如下:

rmarkdown,r语言,python
rmarkdown,r语言,python
rmarkdown,r语言,python

2.6.2 插入内部代码生成的表格

详见视频演示

  1. 我们可以使用knitr包的kable函数,可以⽤来把数据框或矩阵转化成有格式的表格,⽀持HTML、docx、LaTeX等格式。
knitr::kable(exp_table)

格式调整详见参数,比如:digits设置小数点后位数,align设置排列方式。

  1. pander包的pander函数也可以将多种R输出格式转换成knitr需要的表格形式。
pander::pander(exp_table)

pander包在表中有中文时会出错。

  1. 其他包:tablestangramztablecondformat等等…

2.6.3 表格渲染

通过前⾯可以看到:⽤knitr::kable()输出表格结果其实不是⾮常美观,并且很多功能都不能实现。这时我们可以⽤kableExtrahuxtable等扩展包来美化表格,对字体大小、对齐方式、边框底纹、选择高亮等等进行设置。

kableExtra包的使用,详见:

  • 帮助文档
  • or https://bookdown.org/yihui/rmarkdown-cookbook/kableextra.html
  • or https://haozhu233.github.io/kableExtra/。

更多包尽见:https://bookdown.org/yihui/rmarkdown-cookbook/table-other.html

3. R Markdown 的主题

R Markdowm作为制作可重复性报告的优秀⼯具,除了提供⽂档编辑、图表输出外,还有许多主题格式供我们选择。除了默认主题外,还可以通过加载rticlesprettydocrmdformatstuftecerulean等包获取更多主题格式。下⾯我们看看⼏类扩展包⾥的主题样式。

记得先安装!

详见视频演示

rticles可以更好地进行PDF及其他格式导出,其他包更适用于HTML格式导出。文章来源地址https://www.toymoban.com/news/detail-790258.html

  • 官网:https://github.com/rstudio/rticles
  • 教程:https://bookdown.org/yihui/rmarkdown/rticles-templates.html

参考资料

  1. https://www.bilibili.com/video/BV1ib4y1X7r9
  2. https://rmarkdown.rstudio.com/lesson-1.html
  3. https://www.bookstack.cn/read/rmarkdown-cookbook-1.0-en/5d40b1b09165871a.md
  4. https://bookdown.org/yihui/rmarkdown/
  5. https://www.jianshu.com/p/4705a1dc8e5a
  6. https://www.jianshu.com/p/f71fac797a6c
  7. https://markdown.com.cn/cheat-sheet.html

到了这里,关于R Markdown 的使用|保姆级教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】通讯录系统实现 (保姆级教程,附源码)

    目录 1、通讯录系统介绍 2、代码分装 3、代码实现步骤 3.1、制作菜单menu函数以及游戏运行逻辑流程 3.2、封装人的信息PeoInfo以及通讯录Contact结构体类型 3.3、初始化通讯录InitContact函数 3.4、增加联系人AddContact函数 3.5、显示所有联系人ShowContact函数 3.6、删除联系人DelContact函数

    2024年02月08日
    浏览(34)
  • 【R模型】R语言二元logistic回归 (保姆级教程)

    💂 个人信息 :酷在前行 👍 版权 : 博文由【酷在前行】原创、需要转载请联系博主 👀 如果博文对您有帮助,欢迎点赞、关注、收藏 + 订阅专栏 🔖 本文收录于【R模型】,该专栏主要介绍R语言各类型机器学习,如线性回归模型、广义线性模型、混合线性模型、随机森林模

    2024年02月04日
    浏览(55)
  • 【C语言】通讯录管理系统(保姆级教程+内含源码)

    目录 C系列文章目录 前言 一,模块化编程 二,系统框架构建 1.成员信息的创建 2.菜单实现 3.系统功能声明 三、系统功能实现 1.初始化通讯录 2.增加联系人 3.显示所有联系人 4.根据姓名查找位置 5.删除指定联系人 6.查找指定联系人 7.修改指定联系人 8.清空所有联系人 9.按照名

    2024年02月08日
    浏览(39)
  • 【R语言】——基因GO/KEGG富集分析!超级简单的保姆级教程!

    上期“ 干货预警——原来基因功能富集分析这么简单! ”和“ 【R语言】——基因GO/KEGG功能富集结果可视化(保姆级教程) ”介绍如何使用DAVID在线分析工具对基因进行GO/KEGG功能富集分析和使用R ggplot包对获得的基因GO/KEGG功能富集结果进行可视化。本期介绍使用R clusterPro

    2024年02月02日
    浏览(35)
  • 【R语言】——基因GO/KEGG功能富集结果可视化(保姆级教程)

    上期“原来基因功能富集分析这么简单”介绍如何使用DAVID在线分析工具对基因进行GO/KEGG功能富集分析。本期则介绍使用R语言ggplot包对DAVID在线分析工具所获得的基因GO/KEGG功能富集结果进行可视化。 1 数据准备 数据输入格式(xlsx格式): 注:DAVID导出来的“%”这列为“Ge

    2024年02月13日
    浏览(40)
  • 【Go语言】Golang保姆级入门教程 Go初学者chapter3

    下划线“_”本身在Go中一个特殊的标识符,成为空标识符。可以代表任何其他的标识符,但是他对应的值就会被忽略 仅仅被作为站维度使用, 不能作为标识符使用 因为Go语言中没有private public 所以标记变量首字母大写代表其他包可以使用 小写就是不可使用的 注意:Go语言中

    2024年02月13日
    浏览(61)
  • C语言基础入门——配置C/C++环境及多种运行方式(保姆级教程)

    本文章主要讲解新手在运行C 程序的源文件.c中的一些简单操作。 其主要的编辑器有:VSCode、CodeBlocks、VC++ 6.0、CodeLite、Notepad、eclipse、 dev-C++、 C-Free,vim/vi(Linux/UNIX 操作系统)等。 其主要的编译器有:Gcc、Clang(苹果公司开发的C语言编译器前端)、MSVC、Turbo C等。 文章中所

    2024年04月15日
    浏览(74)
  • 【Go语言】Golang保姆级入门教程 Go初学者chapter2

    setting的首选项 一个程序就是一个世界 变量是程序的基本组成单位 变量的使用步骤 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zuxG8imp-1691479164956)(https://cdn.staticaly.com/gh/hudiework/img@main/image-20230726152905139.png)] 变量表示内存中的一个存储区 注意:

    2024年02月14日
    浏览(128)
  • python如何安装各种库(保姆级教程)

    使用Python爬虫时需要安装各种依赖库。安装一共有四种方法: 一、使用pip命令在线安装 二、在pycharm中在线安装 三、使用库的安装包本地安装 四、安装anaconda—anaconda中包含一般使用的所有库 一:pip安装 此步骤需要提前安装好python环境和pip。 1.按windows+R键输入cmd后打开cmd

    2024年02月06日
    浏览(40)
  • 【Go语言】Golang保姆级入门教程 Go初学者介绍chapter1

    Golang的学习方向 区块链研发工程师: 去中心化 虚拟货币 金融 Go服务器端、游戏软件工程师 : C C++ 处理日志 数据打包 文件系统 数据处理 很厉害 处理大并发 Golang分布式、云计算软件工程师:盛大云 cdn 京东 消息推送 分布式文件系统 2、Golang的应用领域 区块链应用:区块链

    2024年02月15日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包