第一次听说R markdown的时候,简单以为Rmarkdown只是一个markdown拓展的一个小工具而已,最近才发现Rmarkdown是一个展示报告的利器!如果你不想用word等老套的报告模式,那么Rmarkdown绝对能满足你的需求,并且其还有其他优势所在(自行搜下就明白了) 下面总结下Rmarkdown的简单使用方法
首先得安装knitr包(R语言大神谢益辉写的)和rmarkdown包
knitr包将RStudio的Rmd格式文件编译为markdown格式,然后再将markdown文件直接渲染成HTML(这步knitr包和markdown包均可完成,最后会提到)
然后RStudio中点击File -> New_File -> R Markdown,先按照默认的设定来(Document,HTML),最后生成一个最简单的默认rmarkdown的模板,如下所示:
代码开头则是YAML header
---
title: "report"
output: html_document
---
title
表示这个文档的主标题
- 常见表示方法:
title: "This is my first report"
这种字符串形式,双引号可加可不加 - 为了将主标题居中可以用html标签,如:
title: <center>This is my first report</center>
(但是输出时会有warning)
output
则表示输出格式,格式有N种,常见的比如:
- html_document 输出html格式
- pdf_document 输出PDF格式
- word_document 输出word格式
每个格式下面有N个参数可供选择,可用?html_document
查看,比如随便挑几种看看:
output:
html_document:
toc: TRUE #目录
toc_float: TRUE #目录的形式
number_sections: TRUE #各个标题的数字标记
theme: readable #文档主题
# css: css/styles.css #加入额外的CSS
# df_print: paged #表格的形式
# fig_caption: TRUE #图片设置
除了上述的参数外,其实还有一个蛮有用的includes
参数可添加在html_document下面,主要用于在输出文档中添加额外的内容(有时还可以包括一些LaTeX语法哦)
includes:
in_header: header.html
before_body: before.html
如果你想将文档既输出html又想输出pdf,那么在output下继续写入pdf_document参数
output:
pdf_document:
toc: TRUE
html_document:
toc: TRUE
接下来是R markdown的正文部分,这里是语法主要是markdown,按照作者谢益辉的说法,准确说是Pandoc's Markdown。如果粗略的简单使用的话,主要去网上搜下markdown语法即可,半小时即可掌握,是一个轻便的标签语法;如果想深入了解Pandoc's Markdown的话,可以看看https://pandoc.org/MANUAL.html
对我来说,也只会简单的用法,但是暂时是够用了,比如有一下几种:
标题:在文字前面几个数1-6个
#
号即可,分别代表1-6级标题# 这是 H1 ## 这是 H2 ###### 这是 H6
引用:即引言,引用别人的话等,在文字前加入
>
号> This is a blockquote.
列表:可以分别有序列表和无序列表,前者用
1.
等数字表示,后者用*
等符号表示#有序列表 1. ONE 2. TWO 3. THREE #无序列表 * Red * Blue * Green
代码块:用于输出一个整块代码,我一般用缩进4个空格,或者前后3个反引号表示
1
This is plain code blocks
图片和超链接:用于链接图片和网页
[myblog](http://www.bioinfo-scrounger.com) #超链接 ![image](path/to/image) #链接图片
编写数学公式:主要用LaTeX语言,如二项式分布概率计算公式(在Rmarkdown里显示的是公式,但这里是无效的)
$$f(k) = C^k_n p^{k} (1-p)^{n-k}$$
还有其他用法可自行搜索,另外如果对html语言熟悉的话,在rmarkdown也中能用哦,代替一些markdown语法(这点在对报告进行一些细节上美化时非常实用)
除了上述的部分外,code chunks则是rmarkdown中核心部分,比如我们在示例中看的到:
echo 1
summary(cars)
我们一些统计分析以及数据处理过程会用到一些R的函数,那么为了使报告有很好的重复性,我们就需要将分析过程写入报告中,并可重复展示结果,这就是rmarkdown的作用所在
{r echo=FALSE}
是设置参数的地方,举一个例子,如:
eval
判断是否执行这个代码echo
选择是否让代码在结果中显示results
是否输出结果(无论TRUE/FALSE,代码均执行,但结果不一定显示)fig.width
/fig.height
用于设定展示图片的长宽
我们还可以在文档开头对全局代码做个全局设定
setup, include 1
knitr::opts_chunk$set(echo = TRUE)
对于输出图片而言,我们选择用R代码产生的图片:
1
plot(cars, pch = 18)
也可以从外界导入图片,则可以这样(knitr作者认为这种方式要比markdown链接图片的方式要更加可控):
out.width 1
knitr::include_graphics('images/hex-rmarkdown.png')
我们可以看到这里的code chunks中的r
表示是用R来处理的,其实knitr还支持其他N种语言,如:Python,Shell,JS/CSS等
> names(knitr::knit_engines$get())
[1] "awk" "bash" "coffee" "gawk" "groovy" "haskell"
[7] "lein" "mysql" "node" "octave" "perl" "psql"
[13] "Rscript" "ruby" "sas" "scala" "sed" "sh"
[19] "stata" "zsh" "highlight" "Rcpp" "tikz" "dot"
[25] "c" "fortran" "fortran95" "asy" "cat" "asis"
[31] "stan" "block" "block2" "js" "css" "sql"
[37] "go" "python" "julia"
以上支持的语言详细说明可看knitr Language Engines
除了文字部分,对一个文档或者报告来说,表格也是非常重要的需求,表格一般可以有代码处理数据后生成的,也可以是读入外部数据所产生的,不管来源哪种,都可以用表格生成器(table generators):knitr包的kable()
函数,使用方式非常简单
echo 1
knitr::kable(iris[1:5, ], caption = 'A caption')
除了用kable()
函数外,有个kableExtra包(也是中国人写的哦)的kable_styling()
函数,配合kable()
从而让表格排版更加美观点,附上中文版使用说明:用kableExtra做牛*的表格,功能只能说非常强大,让我们不在为表格排版美化再设置其他额外参数,用这个函数即可搞定,比如:
library(kableExtra)
kable(mtcars[1:5, 1:6], "html") %>%
kable_styling(bootstrap_options = c("striped", "hover"))
最后我们需要将报告输出,如果是RStudio上书写的话,点击界面上方的Knit
按钮,然后选择输出格式就行,或者用rmarkdown的render
函数输出
rmarkdown::render('report.Rmd', 'html_document')
以上是对knitr和rmarkdown的一个简单的介绍,如果需要更加进一步的了解以及掌握深层的技巧,可以查看以下资料(我也还没完全看完。。。)
https://rmarkdown.rstudio.com/lesson-13.html
R Markdown: The Definitive Guide
本文出自于http://www.bioinfo-scrounger.com转载请注明出处