轻松把r代码变成漂亮文档,往下看吧
首先,
来给你一个最直观的对比
丑陋
文档
V
S
漂亮
文档


对比起来,你是否会感觉后者更加让人赏心悦目呢?
Why
有朋友可能要问了,我们为什么要把 r 代码转换为文档呢?
我来告诉你,本来我们为了得到数据分析报告要做4项工作:首先,码代码跑程序;然后,下载结果图表;之后,在word中写报告;最后插入图表,调格式。
现在的话呢,只要写程序就可以转换为word文档啦,一步搞定。关键是代码和图表都很美观,代码的美观表现在代码是按语法着色的噢。
试想,如果你把这么一串 r 代码在Rstudio中运行之后会是怎样的结果呢?
#' ---
#' title: "我是文档的标题"
#' author: "我是作者"
#' date: "现在是`r Sys.Date()`"
#' ---
#'图形的尺寸的设置
#+ fig.width=5, fig.height=5
# 构建一个调色板
pal=colorRampPalette(c(rgb(1,0,0,0.5),rgb(0,0,1,0.5)), alpha = TRUE)(3)
# 绘制散点图矩阵
plot(iris, pch=19, col=pal[iris$Species])
#'
#'表格格式的设置
library(knitr)
kable(head(mtcars), caption = "我是表格的标题")
# 不显示表格的行名称
kable(head(mtcars),row.names = FALSE)
# 没有内部的补空
kable(head(mtcars), padding = 0)
# 有2个补空
kable(head(mtcars), padding = 2)
x = as.data.frame(matrix(rnorm(60, 1e+06, 10000)/100, 10))
# 使用"."作为小数点,"’"作为千分隔符的数字,规定数字的显示格式
kable(x, format.args = list(decimal.mark = ".", big.mark = "'"))
#给每个列设置不同的小数位数kable(data.frame(matrix(rnorm(20),4,5)), digits=c(1,2,3,4,5))
当当当当,答案就是这样。。。。。。

几个表格都杂乱无章,毫无美感可言,是不是让人看的头皮发麻呢。
那么接下来,就让我来教你如何让它华丽变身吧!
What
有朋友又要问了,要实现这样的变化,我们需要用到什么炫酷的工具呢?
答案就是 R Markdown。
R Markdown是通过R语言制作动态文档的文件格式,它可以将rmd文档转换为docx文档或者html文档。
OK,工具有了,那操作起来会很复杂吗?
这一点你完全不用担心,连小白都能操作哦。
其实,只要在Rstudio中对脚本文件用【Ctrl+Shift+K】就可以进行转换了。(将R脚本编译为word文档)
惊不惊喜,意不意外!就这么简单!
How
好啦,准备好你的 r 代码,让它华丽变身吧!
Step1
在Rstudio中新建一个文件,将 r 代码复制粘贴进去,然后按下快捷键【Ctrl+Shift+K】,就会出现这样一个操作框,选择UTF-8即可,就会将其保存为R文件。


Step2
之后会出现这样一个操作框,在下拉菜单中选择Word,随后,R Markdown就开始工作啦。


Step3
R Markdown 运行完成之后,你的电脑后台就自动打开了Word,而杂乱的 r 代码就转换成了整齐有序的docx文档啦!

你看,是不是整洁又美观了呢。此时,你就可以直接在word里面撰写报告啦,而且可以很好的将文档保存在电脑中哦。
问题
01
如何给转换后的文档加标题和作者?
· 简单来说,就是在行首加 #' 后面跟markdown的内容即可。
· #' 被称为 roxygen2风格的注释。
· 一个特殊格式的 r 注释中包含元数据
#' ---
#' title: "Crop Analysis Q3 2013"
#' author: "John Smith"
#' date: "May 3rd, 2014"
#' ---
· 注意,上面用于添加标题、作者和日期的 r 注释包含一个作为特殊前缀字符的单引号 #'。这是一个 roxygen2 something 风格的注释,实际上可以在一个 r 脚本中包含许多这样的注释,所有这些注释都将被转换为编译报告中的markdown内容。
· 任何 roxygen2 风格的注释都不会在编译报告中显示为 r 注释,而是作为 markdown 处理并相应地显示。
#' A script comment that includes **markdown** formatting.
· 不要烦每行都要输入#',如果连续输入,回车就自动帮你输入了#',开不开心呀!
问题
02
如何设置转换后图的大小尺寸等属性?
· 简单说,只要在该块前的一行行首#+后面跟块的属性设置,如 echo=TRUE,fig.width=5,fig.height=5 等。
· 后台的 knitr::Spin 函数会对你添加的带有特殊注释前缀(# +)的 knitr 块选项进行正确的转换。
例如: #+ fig.width=5, fig.height=5
问题
03
为什么能转换为html,而在转换为docx文档时报错?
可能你正用word打开该文档,这样你就不能在Rstudio中修改该文档了,只要在word中关闭该文档就可以了。

总结
1. 只要记住两个符号组合和一个快捷键就OK了
2. 在#'后跟markdown的内容
3. 在绘图语句前的#+设置绘图程序块的属性
4. 【ctrl+shift+K】,就这么简单

怎么样,你学会了吗?
赶紧动手实践起来吧!
更多便捷又炫酷的操作等你来解锁哦。
参考资料
[1] R Markdown 简介 https://zhuanlan.zhihu.com/p/24884324
[2] 参考网页:Compiling Reports from R Scripts
https://rmarkdown.rstudio.com/articles_report_from_r_script.html
[3] 参考网页:Happy collaboration with Rmd to docx
https://rmarkdown.rstudio.com/articles_docx.html
[4] 参考网页:R Markdown Theme Gallery
https://www.datadreaming.org/post/r-markdown-theme-gallery/


文字/曲亚攀
排版/曲亚攀
指导老师/朱振涛
- END -
