【6.1】Rmarkdown

knitr::opts_chunk$set(echo = TRUE)

一、简介

RStudio 是 R 语言的一款开源的 GUI 软件,可以让“用不起Matlab只好用R”的用户体验到很像 Matlab 一样的开发环境,包括变量的显示、package 的基本操作、帮助文档等一系列图形界面。RStudio 另一个隐藏功能是可以当做 Markdown 编辑器来用(R Markdown),可以根据数据处理结果快速生成报告文档,这一功能主要通过 Package Knit 及相关组件完成。R Markdown 的两大特别之处:

  1. 是通过 Pandoc 将 Markdown 转化成 LaTex,再由强大的 LaTex 转换成 HTML、PDF、Word,理论上来说借助 LaTex 可以生成学术论文、期刊杂志、数据报告等规范格式的文档;
  2. 整合了 R 语言的环境,可以在 Markdown 语法中 code block 直接执行 R 语言代码并将结果插入文档。

更多用法参见http://rmarkdown.rstudio.com

二、安装

可以通过 RStudio 中的新建按钮创建 R Markdown 文件,此时可能提示安装 rmarkdown 包:

install.packages(rmarkdown)

三、使用

1. 创建文件

file – new file – R markdown file 编辑好内容以后,然后点击Kint进行渲染

2.渲染(knit)

第一次按 Kint PDF(或 Kint HTML)时可能出现错误:

Knit PDF : pandoc document conversion failed with error 43

可以通过安装 github 上最新的版本解决:

install.packages("devtools")
devtools::install_github("rstudio/rmarkdown")

第二个问题当是文档中有中文的情况,可能提示:

! Package inputenc Error: Unicode char \u8:年 not set up for use with LaTeX.
Try running pandoc with --latex-engine=xelatex.

如果有中文,LaTex 引擎需要选择为 xelatex,可以通过下图的方式进行更改: 设置(knit旁)–output options – pdf – xelatex

或者直接在文档开头加上:

output:
  pdf_document:
    latex_engine: xelatex

这样就可以正常输出为 PDF 文档了,但是会发现所有的中文全部都是空白,这个主要是 LaTex 的配置问题,中文需要中文字体来渲染,可以通过在文件头中引入 LaTex 文件进行配置:

outputs:
  pdf_document:
    includes:
      in_header: header.tex
    latex_engine: xelatex

点击 Knit 就能够进行渲染。

例子

如果是其中嵌入R代码运行可以通过这种形式

#```{r }
x = seq(from = -5, to = 5, by = 0.01)
y = dnorm(x)
plot(x, y)
```

为了避免代码渲染出来,所以在最开始加了#,
如果只想运行,不想显示代码,则{r }改成{r echo=FALSE}

结果

x = seq(from = -5, to = 5, by = 0.01)
y = dnorm(x)
plot(x, y)

参考资料:

http://www.jianshu.com/p/

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

http://dapengde.com/archives/19122

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn