html留言框-1.5w字的Rmarkdown入门教程总结

2023-10-02 0 4,529 百度已收录

全文1.5k字,预计阅读时间40分钟。 建议结合b站的视频一起学习。

本文的框架

第 1 章:Rmarkdown 简介

Rmarkdown是R语言环境下提供的Markdown编辑工具。 使用rmarkdown写文章,你可以像普通markdown编辑器一样编辑文本,也可以在rmarkdown中插入代码块,并在markdown中输出代码运行结果。 R Markdown 格式,简称 Rmd 格式,对应的源文件扩展名为 .Rmd。 输出格式可以是HTML、docx、pdf、beamer等。

前面的介绍参考:李东风老师的《R语言教程》[1]。

对于专注于用R语言编写报告的数据分析师来说,rmarkdown不仅增强了数据分析工作的便利性,还提高了数据分析报告的复用性。 Markdown教程和相应的编辑器介绍可以参见:(可跳转)本期主要介绍Rmarkdown。

1.1官网视频介绍

首先我们通过官方视频来看看Rmarkdown的介绍[2]。

注:本视频来自官网,不一定能打开,所以我下载给大家看,以便大家更好的学习。

视频已经很清楚地介绍了如何使用Rmarkdown,它的内部结构,不同的输出类型,以及其他扩展(发布、连接github)等。我们先对此进行一个简单的了解,我会在后面详细介绍接下来的几个问题。 当然,官网也有一套Rmarkdown的入门教程。 欢迎您前来学习。 官网截图如下:

其他参考资料可以在这条推文中找到: 有关knitr 的详细文档,请参阅网站knitr 文档[3]。 有关 R Markdown 的信息,请参阅著作 (Xie, Allaire, and Grolemund 2019[4]) 和 (Xie, Dervieux, and Riederer2020[5])。

RStudio 网站提供 R Markdown 备忘单下载。 您可以在公众号后台回复备忘单,获取包括rmarkdown在内的备忘单。 Pandoc 的文档可以在 pandoc 网站上找到 [6]。

本期内容不多。 主要介绍了Rmarkdown的基本概念,并给出了一些参考资料。 下一期将逐步学习Rmarkdown。

第2章:Rmarkdown流程演示 2.1. 安装

假设您已安装 R[7] (R Core Team 2020) 和 RStudio IDE[8]。

RStudio 不是必需的,但建议使用它,因为它使普通用户更容易使用 R Markdown。 如果未安装 RStudio IDE,则必须安装 Pandoc(),否则无需单独安装 Pandoc,因为 RStudio 已将其捆绑在一起。

接下来,在Rstudio中安装rmarkdown软件包,可以通过以下任意一种方式完成:

# Install from CRAN  
install.packages('rmarkdown')  
  
# Or if you want to test the development version,  
# install from GitHub  
if (!requireNamespace("devtools"))  
  install.packages('devtools')  
devtools::install_github('rstudio/rmarkdown')  

如果你想生成PDF输出,你需要安装LaTeX。 对于没有安装LaTeX的R Markdown用户,建议安装TinyTeX[9]:

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

TinyTeX 是一个轻量级、可移植、跨平台、易于维护的 LaTeX 发行版。 R 配套软件包tinytex 可以帮助您在将LaTeX 或R Markdown 文档编译为PDF 时手动安装缺少的LaTeX 软件包,并确保LaTeX 文档被编译正确的次数以解决所有交叉引用。

注:如果通过前面的代码很难正常安装TinyTex,可以参考张景新老师的知乎文章:搭建Latex环境:TinyTex+RStudio。 如果编译.rmd格式时缺少个别Latex包,可以参考本节。

2.2. 创建一个新的Rmarkdown项目

点击Rstudio左上角的New Project,选择Rmarkdown文件格式,构建rmarkdown编辑文件。

创建新流程

在弹出的选项框中,可以声明rmarkdown的标题、作者和默认输出文件格式。 一般来说,您可以选择 HTML、PDF 和 Word 格式。 详细信息请参见右图。

新创建的markdown文件主要包含三部分内容:1).YAML,2).markdown文本,3).code块。

rmd主要包含

1)YAML:是Rmarkdown的肚皮文件(上图中的位置1)。 YAML定义了rmarkdown的属性,例如标题、作者、日期、指定的输出文件类型等。

2)Markdown文本:是rmarkdown中的主要内容(上图中的位置3)。 编辑者根据Markdown句型自行编译文本内容。

3)代码块:rmarkdown的主要功能之一就是执行文件中的代码块(上图中的位置2),并在markdown中显示代码执行结果。 这给数据分析报告的编写带来了极大的方便。 除了 R 代码段之外,Rmd 文件还可以插入 Rcpp、Python、Julia 和 SQL 等多种编程语言的代码段。 常用的编程语言也可以与R代码段交换信息。

这三个部分稍后会详细介绍。

2.3. 导入Rmarkdown

导入rmarkdown有两种方法,一种是使用Rstudio自动导入,另一种是基于命令行的导入方法。

手动导入

手动导入

手动导入方法非常简单。 完成mardown编辑后,手动点击上图红圈处的knit按钮,选择导入格式类型。 Rstudio 支持导入三种类型:PDF、html 和 word。

命令行导入

命令行导入主要通过rmarkdown::render实现。 render函数主要包含以下参数:

rmarkdown::render("test.Rmd")  

2.4. Rstudio界面介绍

此时,Rstudio的界面发生了一些变化。 我们将对界面进行一些介绍,特别是最新版本的新功能。 视频介绍已在b站更新(公众号不能翻倍)。

html留言框-1.5w字的Rmarkdown入门教程总结

演示的Rstudio版本是4.0.3

第 3 章:图、表和代码输出 3.1 代码输出 1. 内联代码

`r sin(pi/2)` 

有趣的案例:

1)自动更新日期

date: "`r Sys.Date()`"
date: "`r format(Sys.time(), '%d %B, %Y')`"
date: "Last compiled on `r format(Sys.time(), '%d %B, %Y')`"

具体详情请参考:

2)文本与代码结合

这里一共有`r sum(x)`个人。

2. 代码块

R代码块通常通过{R}插入,插入代码段的快捷键为:win[Ctrl+Alt+I] / mac[option + cmd + I]。 其他快捷键的介绍请看这条推文:。

默认情况下,代码和结果呈现在输出文件中。 如果使用参数来控制代码块执行结果的输出,可以在{r}中设置。 一般包括代码和运算结果的输出、图表格式定义等。代码片段选项详见。

这里小编给出了一些常用的选项。 如果文字版难以理解,请配合我在b站的视频教程。

```{r echo=FALSE}
print(1:5)
```

结果是:

## [1] 1 2 3 4 5

```{r collapse=TRUE}
sin(pi/2)
cos(pi/2)
```

结果是:

sin(pi/2)
## [1] 1
cos(pi/2)
## [1] 6.123032e-17

代码和结果位于纯文本块中。

结果是:

> sum(1:5)
[1] 15

使用选项 results= 选择文本结果的类型。 值为:

例如: results='hold' 示例:

```{r collapse=TRUE, results='hold'}
sin(pi/2)
cos(pi/2)
```

结果是:

sin(pi/2)
cos(pi/2)
## [1] 1
## [1] 6.123032e-17

选项 warning=FALSE 导致该代码段的警告消息不包含在编译结果中,而是显示在控制台中。 某些扩展包存在加载警告,可以使用这些方法来抑制这些警告。

选项error=FALSE可以使错误信息不进入编译结果,而是停止错误并在控制台上显示错误信息。

选项message=FALSE可以导致消息级信息不包含在编译结果中,而是显示在控制台上。

当然,还有图片的设置,我们下面会讨论。

当然,你也可以通过Rstudio界面设置一些参数(更方便):

具体演示可以参见【b站】视频。

如果markdown中的代码块参数设置相同,则可以提前设计全局代码块参数。 全局代码块是通过`knitr::opts_chunk$set函数设置的。 一般设置在YAML文件下面。 详细信息请参见右图。

3.2. 图片输出 1.插入R代码生成的图形

```{r, fig.height = 8,fig.with = 6}
plot(1:10)
```

Fig.show:设置图像输出格式

```{r, fig.show='animate'}
for (i in 1:2) {
  pie(c(i %% 2, 6), col = c('red''yellow'), labels = NA)
}

Fig.width:设置图像输出的长度

Fig.height:设置图像输出的高度

Fig.align 设置图像位置布局格式。 默认为左,可以是右,也可以是居中。

Fig.cap:设置图片标题

Fig.subcap:设置图片的副标题

out.width 和 out.height 选项指定输出中显示的实际宽度和高度。 如果您使用“90%”等百分比单位,您可以手动调整输出的大小。

2.插入外部图形文件

如果绘图不是由 R 代码块生成的,您可以通过两种方式包含它:

使用Markdown句型!(path/to/image)html留言框,可以使用width和height属性来设置图像的大小,例如:

![图的标题](xxx.png){width=50%}

注:图片文件放置的位置(如果和rmd在同一个目录,可以直接xxx.png;如果在其他位置,记得加上相对路径)。

在源码编辑器中,可以直接从外部拉入图形,并手动保存到相应文件夹的images文件中,或者点击图形按钮导出。

在代码块中使用knitr函数knitr::include_graphics()。 图像规格修改与插入R代码生成的图形相同。

```{r, echo=FALSE , out.width="50%"}
knitr::include_graphics("xxx.png")
```

3.3. 表单输出 1.外部表单输入

2、内码输出表

示例:计算线性回归后,summary()函数的输出有一个系数项,它是一个矩阵。 直接将其显示为文本会很难看:

x <- 1:10; y <- x^2; lmr <- lm(y ~ x)
co <- summary(lmr)$coefficients
print(co)

knit 包提供了 kable() 函数,可用于将数据框或矩阵转换为格式化表格,支持 HTML、docx、LaTeX 等格式。

可以使用knitr包的kable函数来显示:

knitr::kable(co)

kable()函数的digits=选项可以控制小数点后的位数,caption=选项可以指定表格的标题内容。

其pander()函数可以将各种R输出格式转换为knitr.like所需的表格格式

pander::pander(lmr)

但经过实验,发现pander包在表格中有英文时会出错。 这里参考公众号【R Youshe】

其他软件包:tables (Murdoch 2020[10])、pander (Daróczi and Tsegelskyi 2018[11])、tangram (Garbett 2020[12])、ztable (Moon 2020[13]) 和 condformat (Oller Moreno 2020[14]) )。等待

3.4.表格渲染

从上面可以看出:虽然使用knitr::kable()输出的表格结果不是很漂亮,但是很多功能都无法实现。 这时,我们可以使用kableExtra(Zhu 2020[15])和huxtable(Hugh-Jones 2020[16])等扩展包来美化表格。

其他扩展包请参考:

本文以kableExtra包为例,介绍rmarkdown中渲染表格的相关功能。 它有大量关于 的文档,其中提供了许多如何为 HTML 或 LaTeX 输出自定义 kable() 输出的示例。 建议阅读其文档,本节仅介绍一些示例。

kableExtra 包可以使用管道符号 %>% 操作,例如

library(knitr)
library(kableExtra)
kable(iris) %>%
  kable_styling(latex_options = "striped")

安装

# install from CRAN
install.packages("kableExtra")

# install the development version
remotes::install_github("haozhu233/kableExtra")

1. 桌框设置

bootstrap_options = "bordered" 构建一个有边框的表。 其他可调整的名称可以从帮助文档中获得。

x_html <- knitr:: kable(head(rock), "html")
kableExtra::kable_styling(x_html,bootstrap_options = "bordered")

2.设置表格长度

使用 full_width = F 可以防止表格垂直填满整个页面。 默认情况下 full_width = T

x_html <- knitr:: kable(head(rock), "html")
kableExtra::kable_styling(x_html,bootstrap_options = "striped",
                          full_width = F)

注意:在上面的示例 knitr::kable 中,kable 函数来自 knit 包。 目的是该方法与其他包中的同名函数冲突。

另一种写法,如果要使用管道功能,则需要加载kableExtra。 其他代码大同小异,大家要学会举一反三!

library(knitr)
library(kableExtra)
kable(head(rock), "html") %>% 
  kable_styling(x_html,bootstrap_options = "striped",
                          full_width = F)

3.设置表格对齐方式

使用position = "left" 使整个表格向左对齐。 当然也可以居中或右对齐,视情况而定。

x_html <- knitr:: kable(head(rock), "html")
kableExtra::kable_styling(x_html,bootstrap_options = "striped",
                          full_width = F,
                          position = "left")

4.设置表格的字体大小

html留言框-1.5w字的Rmarkdown入门教程总结

使用 font_size=20 将字体大小更改为 20。

x_html <- knitr:: kable(head(rock), "html")
kableExtra::kable_styling(x_html,bootstrap_options = "striped",
                          full_width = T,
                          font_size = 20

5.设置表格的行和列

这里使用的函数是column_spec(),其中下面代码的含义是:制定前两列数据,字体加粗,颜色为蓝色,表格填充“#D7261E”。 行的设置与列类似,使用名为 row_spec() 的函数。

x_html <- knitr:: kable(head(rock), "html")
x_html <- kableExtra::kable_styling(x_html,
                                    bootstrap_options = "striped",
                                    full_width = T)
kableExtra::column_spec(x_html,1:2,
                        bold = T,
                        color = "white",
                        background = "#D7261E")

x_html <- knitr:: kable(head(rock), "html")
x_html <- kableExtra::kable_styling(x_html,
                                    bootstrap_options = "striped",
                                    full_width = T)
kableExtra::row_spec(x_html,1:2,
                        bold = T,
                        color = "white",
                        background = "#D7261E")

6.其他表格渲染

这是一个有趣的例子。 里面的细节我就不做过多解释了。 b站视频给出了解释。 真的很难用言语来解释哈哈。

library(kableExtra)
data =  plyr::mutate(rock[1:10, ],
                   perm = cell_spec(perm,"html",
                   color = "white",
                   bold = T,
                   background = spec_color(1:10,
                   end = 0.9,
                   option = "A",
                   direction = -1)),
  shape = ifelse(shape > 0.15,
                 cell_spec(shape,
                           "html",
                           color = "white",
                           background = "#D7261E",
                           bold = T),
                 cell_spec(shape, "html",
                          color = "green",
                           bold = T)))
x_html <-knitr::kable(data,"html", escape = F, align = "c")
x_html <-row_spec(x_html,0, color = "white", background = "#696969" )
kable_styling(x_html,"striped")

第4章:Rmarkdown主题格式

作为可重用报表的优秀工具,Rmarkdowm不仅提供文档编辑和图表输出,还拥有多种主题格式供用户选择。 除了默认主题外,还可以通过加载articles、prettydoc、rmdformats、tufte等包来获取更多主题格式。 我们来看看几种类型的扩展包中的主题。

注意:我已经在下面的教程中安装了这个包。 如果你还没有安装的话,记得提前安装哦! 否则,操作就会出错。

4.1.ricles包

官方网站:;

具体教程:

文章包为各种期刊和出版商提供了模板:

这里仅演示以下模板。 其他模板的操作类似,但通常模板不能包含英文字体!

下载对应的包后,找到对应的模板并打开即可。 输出pdf需要配置tex环境! 建议安装Tinytex。 详细安装教程请参见上面。

编译后得到的结果,这就是他的模板的原貌。 如果你想调整页面线宽、字体颜色等,请看上一条推文(公众号:庄兴山的R语言指南),我会用这个小细节进行总结。

4.2.rmdformats包

以下包内包含许多模板。 以下 yaml 文件只是其中之一。 如果你想尝试包内的其他模板,请按照上面的操作,选择模板,编译看看是不是你想要的。 所需的模板。

接下来我会展示一些比较好的模板。 您可以直接将我的脸部文件复制为.rmd格式,或者打开模板窗口进行选择(操作如下)。

---
title: "Rmarkdown入门教程"
author: "庄闪闪的R语言手册"
date: "2/18/2021"
output:
  rmdformats::readthedown:
    self_contained: true
    thumbnails: true
    lightbox: true
    gallery: false
    highlight: tango
---

方法二:

安装完包后,就可以使用按钮来创建模板了(其实他有很多类似的模板,我这里只重点介绍了一个):

通过这些方法也可以创建以下模板,前提是您已经安装了这个包,这样您就可以在From Template中找到该包对应的模板。

4.3.prettydoc包

---
title: "Rmarkdown入门教程"
author: "庄闪闪的R语言手册"
date: "2/18/2021"
output:
  prettydoc::html_pretty:
    theme: cayman
    highlight: github
---

4.4.簇绒封装

---
title: "Rmarkdown入门教程"
author: "庄闪闪的R语言手册"
date: "2/18/2021"
output:
  tufte::tufte_html: default
---

4.5.cerulean包

---
title: "Rmarkdown入门教程"
author: "庄闪闪的R语言手册"
date: "2/18/2021"
output:
  html_document:
    theme: cerulean
    highlight: tango
---

第五章:一些常用方法总结

关于RMarkdown的使用,我会分享一些我日常使用的有用方法。 当然,我也学习了谢大大的Rmarkdown-cookbook[17],并在网上搜索了日常使用需求的解决方案。 我想在这里与大家分享。 如果您还有其他需求,可以在留言板上留言。 如果你还有其他实用的方法,欢迎分享!

5.1. 修改个别字体颜色

Markdown句型没有外部修改文本颜色的方式。我们可以使用HTML和LaTeX句型来修改短语的格式

** 以修改PDF文本颜色为例:**

我是textcolor{blue}{庄闪闪}呀!欢迎关注我的textcolor{red}{公众号}:textcolor{blue}{庄闪闪的R语言手册}。

在前面的示例中,第一组大括号包含所需的文本颜色,第二组大括号包含应应用此颜色的文本。

5.2. 更改全文页边距等。

例如,将几何命令添加到顶层

---
title: "RMarkdown常用技巧"
author:
  - 庄闪闪
documentclass: ctexart
geometry: "left=2cm,right=2cm,top=2cm,bottom=2cm"
output:
  rticles::ctex:
    keep_tex: true
    includes:
      in_header: columns.tex
    fig_caption: yes
    number_sections: yes
    toc: yes
---

此时的页边距会是这样的:

当然全文字体大小等操作也是这样操作的。 您可以在几何中操作它:

5.3. 缩进文本

默认情况下,Markdown 也会忽略用于缩进的空格。 然而,在个别情况下,例如在经文和地址中,我们可能希望保留缩进。 在这种情况下,我们可以通过以竖线(|)开始行来使用行块。 换行符和所有前导空格将保留在输出中。 例如:

| When dollars appear it's a sign
|   that your code does not quite align  
| Ensure that your math  
|   in xaringan hath  
|   been placed on a single long line

输出是:

5.4. 分页

如果想要分页,可以使用newpage。例如:如果想要将目录和正文分开,可以在正文后面添加这段代码

此时的输出结果是目录的界面和文本的新页面。

5.5. 控制文本输出的长度

有时,R 代码输出的文本可能太宽。 如果输出文档具有固定的页长(例如 PDF 文档),则文本输出可能会超出页边距。

R 全局选项 length 可用于控制 R 函数输出文本的长度。 如果默认值太大,您可以尝试使用较小的值。 该选项通常表示每行的缩写字符数。 例如:

```{r}
options(width = 300)
matrix(runif(100), ncol = 20)
```

```{r}
options(width = 60)
matrix(runif(100), ncol = 20)
```

然而,这些方法不一定适用于所有功能。 您可以使用其他方法。 对于Html(这里不解释html留言框,主要是pdf),可以参考教程[18]。

对于 PDF 输出,换行更加困难。 一种解决方案是使用 LaTeX 包清单,可以通过 Pandoc 参数 --listings 启用它。 然后,您必须为此包设置一个选项,并且可以包含来自外部 LaTeX 文件的设置代码(有关详细信息,请参阅第 6.1[19] 节),例如,

---
output:
  pdf_document:
    pandoc_args: --listings
    includes:
      in_header: preamble.tex
---

在 preamble.tex 中(建议与 rmd 放在同一文件夹中),我们设置 Listings 包的一个选项:

lstset{
  breaklines=true
}

这是输出结果,但毕竟不是很美观。

5.6. 控制图像输出尺寸

我在手稿和教程中已经说得很清楚了。 有两种形式:

方法一:

```{r, echo=FALSE, out.width="50%", fig.cap="A nice image."}
knitr::include_graphics("foo/bar.png")
```

方法二:

![A nice image.](foo/bar.png){width=50%}

5.7. 图像对齐

这句话我也说过了! 只需要在R块中添加fig.align = 'center'即可使其居中。无需在markdown中输入外部数据。 您可以在 R 代码块中使用它。

knitr::include_graphics()

详情请看:以及我在b站的视频。

5.8. 代码块的行号

通过块选项 attr.source=".​​numberLines" 将行号添加到源代码块,或通过 attr.output=".numberLines" 将文本输出块添加到文本,例如

```{r, attr.source='.numberLines'}
if (TRUE) {
  x = 1:10
  x + 1
}
```

输出是:

5.9.多列输出

这非常有用! 虽然学起来有点困难,但我会再发一条推文来解释清楚。 有关详细信息,请参阅此处的教程 [20]。 类似于以下方式格式化:

5.10. 小编有话要说

参考

[1]

《R语言教程》:

[2]

官方视频:

[3]

针织文档:

[4]

谢、阿莱尔和格罗蒙德:#ref-Xie2019:rmarkdown

[5]

谢、Dervieux 和 Riederer:#ref-Xie2020:rmd-cook

[6]

潘多克网站:

[7]

回复:

[8]

RStudio 集成开发环境:

[9]

小特克斯:

[10]

默多克 2020:#ref-R-tables

[11]

Daróczi 和 Tsegelskyi 2018:#ref-R-pander

[12]

加贝特 2020:#ref-R-七巧板

[13]

2020 年月球:#ref-R-ztable

[14]

奥勒·莫雷诺 2020:#ref-R-condformat

[15]

朱 2020:#ref-R-kableExtra

[16]

休-琼斯 2020:#ref-R-huxtable

[17]

Rmarkdown 食谱:

[18]

教程:

[19]

6.1LaTeX包列表:#latex-preamble

[20]

多列输出教程:

注:如果你觉得文字太难,上面提到的一切都可以在我的b站视频中学习。 您可以将以下照片保存并扫描b站二维码,或者在b站搜索【庄兴山】观看Rmarkdown系列视频教程。 Rmarkdown 视频中添加了两个新视频(Sharingan 幻灯片制作)。 如果需要视频中的文档,可以在公众号回复【rmarkdown】

文末的相关推荐提供了一些关于Rmarkdown的扩展教程,包括制作幻灯片、beamer等,如果你喜欢,可以阅读。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 html html留言框-1.5w字的Rmarkdown入门教程总结 https://www.wkzy.net/game/198386.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务