文章目录
  1. 1. 参考资料

用R实现自动化报告

word的整理简单而繁琐,简单的是:我只要将书上的例题用R实现就可以了,繁琐的是我需要将运行无误的代码和图片复制粘贴到word文档中。尤其在复制代码时,不可避免地要将提示符>也复制进来,而这个无疑对以后看这篇文档,进而复制运行代码的人是一个大麻烦,要不停地去除提示符。

近来,翻看网上文档,发现对于这个问题:整理R代码进而展示,别人已经解决了,而且解决的很漂亮,解决这个问题的大神就是谢益辉。

大神发明了一个包:knitr,用来展示代码及运行结果,而且展示结果非常直接美观。同时,查看文档的人可以直接复制运行代码,而不必一个一个地去掉提示符了,这简直不能更赞了……

knitr包可以生成MarkDown、html、pdf、word格式的文件,每一种文件都有相应的语法格式,我比较倾向于使用MarkDown,简单而实用。参考资料1中详细说明了语法格式:

以三个反引号和一对大括号开始R代码,以三个反引号开始正文,上面的hello world例子已经显示了代码段的基本结构。行内代码放在`r `之中,全局选项在`ro or`中(R options)。

简单的示例:

hello, the value of 2 * pi is `r 2*pi`

foo-label}
rnorm(5)

我们也可以在文件中生成图片,并进行展示。如果要生成的图片是通过R语言代码来实现的,那么就可以通过添加echo = FALSE来进行显示统计图形。

示例:

= FALSE}
plot(cars,xlab = "速度")

如果要添加本地图片就可以通过Markdown语法来实现,[]是对图片的定义,()里面是图片的路径,建议采用相对路径。center指定图片居中。

示例:

<center>
![i](i.jpg)

当然这个报告里面可以添加交互式图形,利用rCharts包就可以实现。

对于文本输出,knitr设计的也很人性化。参考资料1中的说明如下:

  • 代码高亮(highlight=TRUE),增强可读性,有无数的高亮主题可选,仅适用于LaTeX和HTML输出,MD文档在转为HTML文档之后可以用专门的JavaScript库去高亮代码

  • 代码重排(tidy=TRUE),对那些不注意代码格式的人来说很有用,再乱的代码,到了这里也会变得相对整齐,本功能由formatR包支持

  • 执行或不执行代码(eval=TRUE/FALSE),不执行的代码段将被跳过,原样输出源代码

  • 显示/隐藏源代码(echo=TRUE/FALSE),甚至精确控制显示哪几段代码(echo取数值)

  • 显示/隐藏普通文本输出或将文本输出以原样形式输出(results=’markup’, ‘hide’, ‘asis’)

  • 显示/隐藏警告文本(warning=TRUE/FALSE)、错误消息(error)和普通消息(message)

  • 显示/隐藏整个代码段的输出(include=TRUE/FALSE),比如我们可能想运行代码,但不把结果写入输出中

示例:

, eval = TRUE ,highlight=TRUE,tidy=TRUE,echo=1:2}
k = 0 ;for ( i in 1:5){k = i+k } ;return(k)

输出结果为:

k = 0
for (i in 1:5) {
    k = i + k
}

## [1] 15

对于表格文件,可以采用xtable来实现,但是这个包将表格转为latex格式,使用print函数将其以html格式显示,不过显示结果保留着原始HTML表格的风格。

示例:

library(xtable)
print(xtable(head(mtcars[, 1:5])),type = "html")

到这里,大多数的需求基本都满足了,剩下的就是写了。

参考资料

【1】knitr中文文档

文章目录
  1. 1. 参考资料