1.2 Rmarkdown
1.2.1 什么是Rmarkdown?
Rmarkdown是由谢益辉开发的在R语⾔环境中的markdown编辑⼯具,运⽤rmarkdown撰写文章,既可以像⼀般的markdown编辑器⼀样编辑文本,也可以在rmarkdown中插入代码块,并将代码运行结果输出在markdown里。
Rmarkdown格式文件以.Rmd为扩展名,R的rmarkdown扩展包和knitr包一起为生成Rmd格式提供了支持。Rmarkdown可实现文学化编程,即文档书写+编程,Rmarkdown将代码插入文档,在写研究报告或者论文时,这种方式集分析、思考、论述等过程于一体,形成的报告格式严谨,易复现,易共享。
Rmarkdown主要功能:
- 撰写数据分析报告
- 用交互笔记本记录学习过程
- 发表电子书和长篇文档
- 设计数据驱动的个人简历
- 建立个人网站和博客
- 创作演示文档和交互报表- 用动态文档自动化报告发布
1.2.2 创建Rmarkdown文档
Rmarkdown工作环境构建:首先当然要保证安装R和Rstudio。其次在Rstudio中安装rmarkdown包。安装命令为install.packages(‘rmarkdown’)。
在 Rstudio,依次点 File–New File–R Markdown…
title(标题)、author(作者)、dates(写作日期)可进行自定义,Default Output Format可自定义报告输出的格式。点击ok,新文档创建成功,文档以.Rmd为后缀。
Rmarkdown提供了一个简单的示例文档,示例文档包括3部分:
1.YAML、2.markdown⽂本、3.代码块。
我们可以在示例文档的基础上进行修改以满足自己对输出文档的需求。
1、YAML
1到6行由一对三个减号(—)包裹的部分为YAML,这部分通过若干“键:值”,对rmarkdown文档的性质进行定义,包括title、author、date、输出文档类型、文档主题、是否添加目录等。定义方式为在 : 后指定对应的值即可,如:title:Rmarkdown学习笔记,表示定义文档题目为“Rmarkdown学习笔记”。
常见键值设置
date: “r Sys.Date()”:可以设置日期返回为今天;我的日期设置:date: “2022年1月1日至r format(Sys.time(),‘%Y年%m月%d日’),表示从之前某一时间点到今日。
除过标题、作者、日期外,最重要的是指定输出格式,设定方法为:
output:html_document、pdf_document、word_document,分别表示输出html、或者pdf、或者word文档。
可以在output下设置二级选项,常见设置包括目录、主题等。
output:
html_document:
toc: true
toc_float: true
theme: united
这里toc: true 设置了输出显示目录,toc_float: true 设置目录的显示方式为浮动侧边栏 (默认标题会固定在正式文字内容之前),theme: united设置了主题类型。
其他二级选项:
• toc: true:显示目录
• toc_float: true:浮动目录
• number_sections: true:添加标题编号
• code_folding: hide:代码折叠
• fig_width: 7, fig_height: 6:固定图片宽高
• fig_caption: true:添加图片标题
• df_print: kable:数据框输出表格样式
• highlight: tango:设置语法高亮
• theme: united:设置主题
• keep_md: true:保存中间.md 文档
• citation_package: natbib:Latex 参考文献格式用 natbib宏包
• reference_docx: “template.docx”:自定义 word 模板
2、markdown文本
这部分构成了报告或论文的主体。文本里面大部分语法都遵循Markdown语法,少部分语法是 Rmarkdown 专用语法。
3、代码块
位于一对反引号(```)之间的部分即为代码块(chunk),包含了报告可执行的代码。大括号后面的r指定了代码块语言类型,r代表是R语言,也可以替换为python等语言类型;语言名称的后面还可以附上代码块选项。代码块选项与代码块的关系就如同YAML元数据之于整个文档一样,用于指定该代码块的运行和输出设置。在自带文档中,setup是代码块的标签,include=FALSE指定了这个代码块的内容不会显示在输出中。
创建代码块快捷键:[Win]Ctrl + Alt + I。
一些代码块设置参数:
• eval = FALSE:只显示代码,不运行代码
• echo = FALSE:不显示代码,只显示运行结果
• include = FALSE:运行代码,不显示代码和运行结果
• tidy = TRUE:整洁代码格式
• message = FALSE:不输出提示信息,比如包的载入信息
• warning = FALSE:不输出警告
• error = TRUE:忽略错误,继续编译文档
• collapse = TRUE:代码块结果放在一个文本块• cache = TRUE:缓存运行结果,能加速后续再编译
1.2.3 输出文档
新建的Rmarkdown文档系统命名为untitled.Rmd(当你点击Rstudio左上角的保存按钮时可以自定义文档名称,并指定保存路径进行保存),.Rmd文件是Rmarkdown的源文档,点击Rstudio右上角的Knit按钮或调用 rmarkdown::render()函数后可进行文档编译并输出,Knit 按钮本质上就是对 rmarkdown 包中 render() 函数的封装。点击Knit按钮后会跳出编译好的文档untitled.html,即为输出结果,HTML是Rmarkdown文档的默认输出格式,要输出其他格式,可在Rmarkdown文档YAML中进行设置。
要想使用Rmarkdown输出PDF格式的文档,必须事先安装LaTeX。LaTeX有很多发行版,如MiKTex,MacTeX,TeX Live等,建议Rmarkdown的用户使用TinyTeX。TinyTex是谢益辉专为Rmarkdown开发的,超轻量级的 Latex 环境。
安装TinyTeX命令:
install.packages("tinytex")
tinytex::install_tinytex()
下面是自行练习的一个简单的示例:
实际上,我的推文都是Rmarkdown写的,但写的还不够规范,有待提高。
参考资料
本文使用 文章同步助手 同步