初学者的R Markdown教程

这篇文章将探讨一种对每个R用户都很重要且有帮助的数据科学包——R Markdown。我们将了解R Markdown是什么,它提供了哪些好处,它的用途是什么,如何安装它,它在处理代码、叙述和数据图方面提供了哪些功能,它使用的语法是什么,R Markdown文档的输出格式是什么,以及如何渲染这些文档并与合作者共享。

由于R Markdown特别适用于RStudio集成开发环境(IDE),我们将在本文中使用这个IDE。 RStudio教程提供了安装RStudio并开始使用的必要指导。

让我们开始吧!

什么是R Markdown?

R Markdown是一个免费且开源的R包,提供了一个工作空间用于创建数据科学项目。R Markdown的主要优势在于它允许您将代码、文本和数据可视化结合在一个单一的、精美的、可共享的、完全可复制的文档中,可以在各种静态和交互式的输出格式中呈现。

其中一些流行的输出格式包括HTML、PDF、Microsoft Word、演示文稿、应用程序、网站、仪表板、报告、模板、文章、书籍等。

此外,R Markdown还支持易于版本控制跟踪,并且支持许多编程语言,包括Python和SQL。

如果你想深入了解如何使用R Markdown编写动态报告,课程《使用R Markdown进行报告》是一个很好的起点。

安装 R Markdown

当在 RStudio 之外使用 R Markdown 时,我们可以像安装其他 R 包一样,从 Comprehensive R Archive Network (CRAN) 软件库中安装:

install.packages("rmarkdown")

安装完成后,我们需要在R环境中加载这个包:

library(rmarkdown)

相反,在RStudio中使用R Markdown时,我们不需要显式安装和加载rmarkdown包。通过在RStudio的菜单栏中点击FileNew FileR Markdown,将打开一个新的R Markdown文档。在这个阶段,我们可能会收到一个Install Required Packages的通知,如下所示:

image11.png

这段文字的中文翻译如下:在确认所需的软件包安装后,在出现的新弹窗中,我们提供文档标题和作者姓名(两者都是可选但建议的),将其他设置保持不变,然后点击“确定”:

image6.png

这段文字的中文翻译如下:

默认的R Markdown文档

在前一节中,我们在RStudio中打开了一个新的R Markdown文档。它的样子如下:

image16.png

这段文字的中文翻译如下:我们可以看到,它包括标题、作者姓名、当前日期以及我们在打开时弹出窗口中提供的默认输出格式。然后,它还包含了一些R Markdown使用的基本语法示例,例如添加和格式化代码块、添加标题、插入链接、强调文本和生成图表。我们将更详细地了解R Markdown的各种功能及其语法。现在,让我们保存这个默认文件,然后将其渲染为所选的输出格式(在我们的例子中是HTML),看看它的样子。

要保存文件,我们在RStudio的菜单栏中点击FileSave As...

注意:我们之前提供的 R Markdown 文档的名称与文件名不同。我们需要将文件保存在项目目录中,并在使用过程中定期保存(文件保存)。

要以所选的输出格式(HTML)呈现保存的文件,我们需要在文件的工具栏中按下Knit

image8.png

这段文字的中文翻译如下:

这是我们默认的R Markdown文档在HTML格式下的样子:

image3.png

这段文字的中文翻译如下:

R Markdown中的文本格式

通常,文本是数据科学项目的主要部分。因此,了解如何在R Markdown中对其进行格式化以使其易于阅读、高效和引人注目非常重要。

如果你想学习如何使用R进行数据分析和数据科学,并提升你的R编程和数据科学技能,可以考虑以下适合初学者且全面的职业发展方向:

标题

我们可以使用井号符号(#)在R Markdown文档中添加不同级别的标题。以下是语法:

# 标题1(主标题)

## 标题2(章节)

### 标题3(子标题)

等等。

‘当渲染时,上述标题将如下所示:

image20.png

 

 

 

 

 

文本强调

R Markdown允许对文本添加不同类型的强调,例如斜体、粗体、删除线、上标或下标,如下所示:

  • *斜体* 或 _斜体_
  • **粗体** 或 __粗体__
  • ~~删除线~~
  • 文本^上标^
  • 文本~下标~

以下是这些强调类型在渲染形式中的显示效果:

image19.png

这段文字的中文翻译如下:

image19.png

列表

要创建一个无序列表,我们可以使用以下三种语法之一:

* 项目1* 项目2* 项目3

或者:

– 项目1- 项目2- 项目3

或者:

+ 项目1+ 项目2+ 项目3

在所有情况下,渲染结果都将相同:

image10.png

要创建有序列表,我们使用以下语法:

1. 项目 12. 项目 23. 项目 3

渲染结果看起来基本相同,只是在每个数字前面添加了缩进。

请注意,如果我们从有序列表中删除一个项目,向其添加一个新项目,或者在其中的一个数字上出现错误(例如,在上面的示例中,我们将20.写成2.),数字将自动纠正并显示为预期的样式:

image14.png

块引用

对于块引用,我们在要引用的文本的第一个字符之前使用>符号:

> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam hendrerit nisi sed sollicitudin pellentesque. Nunc posuere purus rhoncus pulvinar aliquam. Ut aliquet tristique nisl vitae volutpat. Nulla aliquet porttitor venenatis. Donec a dui et dui fringilla consectetur id nec massa. Aliquam erat volutpat. Sed ut dui ut lacus dictum fermentum vel tincidunt neque.

这将被渲染为:

image12.png

这段文字的中文翻译如下:

我们在引用块后面添加一个空行来转义它。无序列表包含3个项目

如果我们想要将链接作为直接路径包含在内,我们需要将链接路径放在<和>符号之间。例如,以下结构:

<https://www.google.com/>

这段文字的中文翻译如下:

将被渲染为:

https://www.google.com/

相反,要将链接锚定到一个单词或一个短文本片段,我们需要使用以下语法(以谷歌网站为例):

[Google](https://www.google.com/)

这将被渲染为:

Google

图片

要将图片插入到我们的叙述中,我们可以使用以下方法之一:

  1. 如果我们想要添加来自互联网的图片:

![替代文本](图片链接)

  1. 如果图像文件保存在我们的R Markdown文档所在的项目文件夹中:

![Alt_text](image_file_name.extension)

  1. 如果图像文件保存在我们的计算机上,但不在项目文件夹中:

![Alt_text](image_file_full_path)

Alt文本提供关于图片内容的简短信息,并在用户无法看到页面上的图片时起作用,无论出于何种原因。

让我们来看看第一种方法在Pixabay图片上的实际效果,图片的URL为https://cdn.pixabay.com/photo/2018/12/02/10/07/web-3850917_1280.jpg

![网络](https://cdn.pixabay.com/photo/2018/12/02/10/07/web-3850917_1280.jpg)

当我们渲染文档时,图片会显示出来:

When we render the document, the picture is displayed:

image5.png

这段文字的中文翻译如下:

断点

在R Markdown中有各种类型的断点:

  1. 换行 – 开始新的一行。通过在上一行结尾加上反斜杠(\)来实现。
  2. 段落分隔 – 开始新的段落。通过在上一段落结尾处加上两个空格来实现。
  3. 幻灯片分隔 – 在基于幻灯片的输出格式(演示文稿)中开始新的幻灯片,或在其他所有格式中开始新的部分。通过在文档中插入水平线(***)来实现。
  4. 分页符 – 在适用的输出格式中开始新的一页,例如在Microsoft Word中。通过在文档中插入命令\newpage来实现。

让我们将前三种分隔符应用到实际操作中。下面是一段带有一些R Markdown分隔符格式的Lorem ipsum文本:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.\Nam hendrerit nisi sed sollicitudin pellentesque.

Nunc posuere purus rhoncus pulvinar aliquam.

的中文翻译为:’

现在,位置纯净的鼻塞脉搏。

***

‘ 的中文翻译为:’

***

‘。

Ut aliquet tristique nisl vitae volutpat.

的中文翻译为:’

Ut aliquet tristique nisl vitae volutpat.

这是在HTML文档中的渲染方式:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.Nam hendrerit nisi sed sollicitudin pellentesque.

Nunc posuere purus rhoncus pulvinar aliquam.

的中文翻译为:’

现在,位置纯净的鼻塞脉搏。


Ut aliquet tristique nisl vitae volutpat.

R Markdown中的代码格式化和执行

代码是任何数据科学项目的另一个重要组成部分。在R Markdown中,我们可以运行代码(不仅限于R编程语言),显示代码及其输出,仅显示代码并隐藏其输出,仅显示输出并隐藏源代码等。

初学者友好的职业路径R程序员和技能路径R编程是学习、练习和提高你的R编码技能的有用资源。

代码块

要在R Markdown中格式化和运行一段R代码,我们需要用一对三个反引号括起来,第一个三个反引号后面跟着一个带大括号的r。例如:

```{r}
print("你好,世界!")
```

如果我们在不运行代码的情况下渲染文档,我们的代码块将如下所示:

image9.png

这段文字的中文翻译如下:

代码语言

在使用R Markdown时,我们不仅限于使用R语言,因为该软件包还支持许多其他编程语言。要在另一种编程语言中运行一段代码,我们需要在大括号中提供该语言的名称,而不是R。此外,我们可能还需要在工作的R环境中安装和加载一些额外的软件包。

例如,要在R Markdown中使用Python,我们需要安装和加载reticulate包,该包允许在同一个R Markdown文档中的Python和R之间进行双向通信(如创建和访问变量)。

让我们在安装和加载reticulate包之后,用Python重新编写上一节的代码:

```{python}
print("你好,世界!")
```

image9.png

代码块执行

在RStudio中使用R Markdown时,要执行代码块或其选定的行,我们可以点击文档工具栏上的运行按钮,并从下拉列表中选择所需的选项:

image21.png

这段文字的中文翻译如下:在上面的图片中,我们可以看到每个运行选项都有自己的快捷方式,我们可以使用它们而不是每次打开下拉列表。

代码块命名

虽然不是强制要求,但给代码块命名是一个好的实践。在许多情况下都很有用:用于在整个文档中引用代码块、代码调试、在代码块之间切换等等。如果我们在一个包含大量代码块的长文档中工作,给代码块命名尤为重要。

我们在语言名称后面用大括号添加代码块的名称,并用空格分隔。代码块的名称不能包含空格。

在下面的示例中,我们将名称hello_world添加到代码块中:

```{r hello_world}
print("Hello, World!")
```

代码块选项

代码块选项允许我们控制代码的评估、输出、装饰、缓存、动画(如果适用)和图表(如果适用)等,对于每个单独的代码块都可以进行设置。我们可以在同一个代码块中添加多个选项。在语法上,我们将选项放在代码名称(如果有的话)之后的大括号中,用逗号分隔。

在R Markdown中有许多可用的代码块选项。每个选项都有一个默认值,但当我们决定使用它们时,我们很可能希望使用与默认值不同的值。让我们来看看最受欢迎的代码块选项及其对我们可能感兴趣的值:

  • echo=FALSE—代码本身不会在最终文档中显示,只会显示其输出结果。
  • eval=FALSE—代码块中的代码不会被运行。
  • include=FALSE—代码块会被运行,但不会包含在最终文档中。
  • results—默认值为”markup”;其他值包括:
    • “hide”——代码输出结果将在最终文档中隐藏
    • “hold”——代码输出结果将在整个代码块执行完毕后显示
    • “asis”——代码输出结果将原样传递,不进行重新格式化。
  • message=FALSE—代码产生的消息不会显示。
  • error=FALSE—代码产生的错误不会显示。
  • warning=FALSE—代码产生的警告不会显示。
  • highlight=FALSE—代码在最终文档中不会被高亮显示。
  • prompt=TRUE—在最终文档中每行代码的开头会添加>符号。

以下是一些代码块的示例,这些代码块首先在RStudio中以R Markdown格式运行,然后在最终文档中呈现:

R Markdown中的代码:

image15.png

这段文字的中文翻译如下:

最终文档中的输出:

image17.png

这段文字的中文翻译如下:

内联代码

使用内联代码,我们可以直接将短代码片段插入到R Markdown文档的文本中 – 它们将被执行,并且它们的输出将嵌入到文本中显示。内联代码的语法是r <code>

下面是一个包含内联代码的简单示例:

彩虹有 `r 1+6` 种颜色。

以及它在最终文档中的呈现方式:

彩虹有7种颜色。

在实践中,内联代码用于汇总有关数据的信息,并帮助避免手动插入数字或数据更改时可能发生的错误。

在R Markdown中绘图

在R Markdown中绘图意味着运行生成图形的代码。因此,到目前为止我们讨论的关于代码格式和在R Markdown中执行的内容,除了内联代码外,也适用于绘图。主要的区别在于这些代码的输出将是图形而不仅仅是文本和数字。

这个技能路径 使用R进行数据可视化 将帮助您开发在R中分析和绘制数据的技能,从而讲述更好的数据驱动故事。

在R Markdown中自定义图表,就像在普通的R中一样,我们使用R数据可视化包的工具,以及基本R的plot()函数。

然而,在R Markdown文档中控制绘图行为时,我们可以利用与绘图相关的代码块选项。其中大部分选项都非常具体,因此超出了这个“入门”教程的范围。因此,让我们来看一些在R Markdown中绘图时有用的基本代码块选项:

  • fig.show—默认值为”asis”;其他值包括:
    • “hide”——生成图形,但不包含在最终文档中
    • “hold”——在整个代码块执行后,延迟显示图形
    • “animate”——将代码块中的所有图形组合成动画。
  • fig.width—图形宽度(以英寸为单位),默认为7。
  • fig.height—图形高度(以英寸为单位),默认为7。
  • fig.align—在最终文档中对齐图形的方式,可以是”left”、”center”或”right”。
  • fig.cap—由字符字符串表示的图形标题。
  • fig.path—代码块创建的图形文件应存储的目录路径。
  • fig.ext—代码块创建的图形文件的扩展名。

以下是在R Markdown中使用绘图特定代码块的一些示例,包括源代码和渲染输出:

R Markdown中的代码:

image1.png

这段文字的中文翻译如下:

最终文档中的输出:

image4.png

这段文字的中文翻译如下:

输出格式

到目前为止,我们只考虑了HTML文档(html_document)作为最终文档的输出格式。然而,R Markdown提供了许多其他输出格式,包括Microsoft Word、Microsoft PowerPoint、PDF、交互式R笔记本、仪表板等。

例如,在R Markdown中创建文档时可用的输出格式包括html_documentpdf_documentword_documentgithub_documenthtml_notebookhtml_vignette等。而对于创建演示文稿,我们可以使用以下输出格式:powerpoint_presentationioslides_presentationslidy_presentationbeamer_presentation。为了为我们的R Markdown文档设置输出格式,我们将相应的值分配给文档头部的output设置(也称为YAML头部,其中YAML代表yet another markup language)。例如,对于我们的工作中的R Markdown文档,输出格式设置为html_document,这也是R Markdown的默认输出格式:

image2.png

这段文字的中文翻译如下:

要更改它,我们将html_document替换为所需的输出格式(pdf_documentword_documentpowerpoint_presentation等)。现在,当我们在文件的工具栏中按下Knit,我们将以所选的输出格式呈现我们的文档。

发布 R Markdown 文档

要发布一个 R Markdown 文档,我们在 RStudio 的菜单栏中点击 文件发布,然后选择我们想要发布的位置:

image18.png

这段文字的中文翻译如下:

然后,我们按照之前的选择继续遵循进一步的指示,然后点击发布。现在,我们的文档已经准备好与协作者共享。

结论

总结一下,在本文中,我们学习了如何开始使用R Markdown。首先,我们定义了R Markdown是什么以及它的用途。然后我们讨论了如何安装R Markdown,如何使用它来格式化文本及其各个组件,如何格式化和运行代码,如何生成图表,R Markdown提供了哪些输出格式,如何将工作文档渲染为其中一种格式,以及如何发布最终文档以与同事进行进一步共享。

为了获得一些实践使用R Markdown的经验,请查看我们的使用R Markdown进行报告的课程,该课程将帮助您从数据中揭示见解,并将您的发现作为PDF、HTML文件或Shiny应用程序进行编写。抱歉,我无法翻译视频和图片标签,也无法保留代码块。以下是我对文本的翻译:

“你是一个翻译员。”