查看原文
其他

RStudio|用R Markdown生成你的R语言数据分析报告

2017-07-30 鲁伟 R语言中文社区

作者:鲁伟

一个数据科学践行者的学习日记。数据挖掘与机器学习,R与Python,理论与实践并行。个人公众号:数据科学家养成记 (微信ID:louwill12)

R Markadown 作为一款通过R语言创建动态文档的写作排版工具,为数据科学提供了现成的写作框架。通过 R Markdown 不仅可以运行和保存R代码,还可以生成高质量的数据分析报告并以HTML、PDF或者word的形式分享。

1,get started

很早就对R语言可以制作高质量的报告有所耳闻,但也没有很强的意愿去研究一番。究其缘由在于写公众号时无法不会优雅的插入代码块,便有意去看看R Markdown 的效果如何。首先要说明的是 R Markdown 是基于Rstudio环境的,平时一直在强调R语言和R软件本身,对Rstudio并没有过多提及,其实Rstudio是一款相当优越的R语言GUI,对于像我这样不喜欢MATLAB的人而言,Rstudio简直就是天降神器。R Markdown 的亮点在于其本身的语法环境运行的R代码可以保存并优雅的插入文档中,相应的文档也可以通过knit转化为HTML、PDF和word等规范化的文本格式。

R语言中有rmarkdown包来支持整个报告的生成过程,直接安装即可。

 install.packages("rmarkdown")

首先在Rstudio中创建一个txt文档并将其另存为.Rmd格式:


创建完 .Rmd格式文档后,我们就可以着手写一份基于 R Markdown 的报告啦。

2,create R Markdown

通常而言 .Rmd文档由 txt文本、嵌入式的R代码块以及相应的文档渲染参数YAML组成。当我们在Rstudio中打开一个.Rmd 文档并点击运行时,相应的代码和运行结果会被同时保存,也可自由插入后续代码。之后可以由knit将结果通过pandoc转化为指定的文档格式。R Markdown 的运作流程如下:(图片来自Rstudio官方R Markdown帮助手册)


R Markdown文本处理

R Markdown 有自身文本格式规范,对于标题、列表、超链接以及字体等都有相应的格式约束,先看一例文本:


   相应的HTML输出效果为:

 由图中我们可以看出Pandoc's Markdown  的一些文本格式规范和YAML渲染参数:

●  双虚线里的内容规定了报告的标题、输出格式。

●  单星号*代表斜体字体,双星号**代表加粗字体。

●  #代表标题,单#表示一级标题,双##表示二级标题。

●  相应的我们还可以在报告中按照要求添加列表、图片、链接、LaTeX公式、表格、参考文献等等报告所需的其他元素。

报告中嵌入代码块(code chunks)

R Markdown 中嵌入R代码也是极其方便的。Rstudio有三种方式可以嵌入代码块:

●  快捷键Ctrl + Alt + I 

●  直接在工具栏点击Insert命令

●  手动输入```{r} 和 ```

    展示一下R Markdown 中嵌入代码块的效果:


  相应的knit生成HTML报告的效果:


另外还有一些代码显示的选择项:

 ●  include=false 代码和结果仅显示但均不显示。

●  echo=false 不显示代码仅显示结果

knit渲染输出格式

为了将报告输出为HTML、PDF或者word等规范的文档格式,我们需要点击knit转化功能。


选定相应的文本格式后,knit就生成对应的文本并保存到工作目录中。这样一个简单的R Markdown 报告就做好了,排版简约又美观~

当然了,要想用R Markdown做一份美观完整的数据分析报告就需要花些时间啦,R Markdown也远不止小编写的这些功能,Rstudio官方的R Markdown帮助文档介绍了更多的包括R Notebooks、幻灯片、交互式文档等内容,有兴趣的同学可以自行去参考学习。

参考资料:

1. http://rmarkdown.rstudio.com/

2. https://zhuanlan.zhihu.com/p/24884324


微信回复关键字即可学习

回复 R              R语言快速入门免费视频 
回复 统计          统计方法及其在R中的实现
回复 用户画像   民生银行客户画像搭建与应用 
回复 大数据      大数据系列免费视频教程
回复 可视化      利用R语言做数据可视化
回复 数据挖掘   数据挖掘算法原理解释与应用
回复 机器学习   R&Python机器学习入门 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存