第7章 办公
我们不要欺骗自己了:使用最广的统计软件其实是Excel。
— Brian D. Ripley, September 2002
本课,我们停下学习R函数的匆匆脚步,稍事休整,来让R做一件狗拿耗子的事情:把R当办公软件来用。
一说办公软件,我们首先想到的是微软Office办公三剑客Word,Excel,Powerpoint。这套软件售价不菲,安装还颇受限制,但并不影响对我们多年的吸引力。可惜,我们大部分人平时只用到Office不到10%的功能。即便如此,这10%的功能用起来也并不爽快,而要想使用另外90%的功能,并不比学R语言容易。
其实,我们的R就可以当作办公套件来用,计算数据、写文档、做幻灯片样样拿手。而且,作为办公套件,R用起来更方便、安全、高效;用得久了就会感觉到,这是一种顶级享受。若是跟Office搭配使用,相映成趣,相得益彰。
7.1 从Excel到R代码
在RStudio的界面点击菜单 File – New File – R Script,就会新建一个扩展名为 .r 的文件。我们已经对此很熟悉了,是从第一章以来一直接触的文件形式,相信你到现在已对R丰富的函数有了体会。将来,我们会学到R的扩展包,让我们可以对数据随心所欲地处理,在计算上完全可以取代 Excel,功能上有过之而无不及,在编程上更是让 Excel 望尘莫及。Excel当然也可以用宏命令和 VBA 实现很多强大功能,但门槛比较高。写代码是 R 初级用户上来就会的基本功,但 Excel 用户里会用 VBA 的比例寥寥无几。
思考 7.1 审视一下你平时在Excel做的工作,哪些可以完全移植到R里?哪些只能部分移植?哪些工作R无法胜任?反过来呢?R哪些工作是Excel不能胜任的?
从形式上来说,Excel的输入数据、计算方法、计算结果这三个层面的内容是混合在一起的,这就带来很多不便。比如,有时候我们只想把计算方法分享给同事,但并不想分享原始数据,这在Excel很难办,而R很容易,只把代码分享就行了。数据量大的时候,Excel文件的大小可能达到几百MB,别说发送给别人,就是在本地打开都会非常吃力,有时候说不定会死机,而R的灵活性可以让代码与数据分离,也可以合在一起,Excel的难题在R中迎刃而解。
有些熟悉R的人把R描述为微软Excel的增强版。
— Ashlee Vance, January 2009
如果当他是朋友,就别让他用Excel做统计。
— Jonathan D. Cryer, August 2001
7.2 从Word到R文档
我们不仅可以用R来取代Excel,还可以取代Word。
在RStudio的界面点击菜单 File – New File – R Markdown,在对话框选择Document,将默认输出格式勾选Word,填上(也可以不填)文档标题和作者,点OK按钮,一个新文件窗口就打开了。这是个模板,已经填了一些内容,目的是引领我们照葫芦画瓢创建自己的文档。
下面,我们把它改成一份自己的文档。前边的11行不用改,从第12行的两个#号开始改:
## 大气颗粒物 pm2.5
pm2.5最近几年在中国是个研究热点。R自带的英国因肺部疾病而死亡的数据显示:
```{r}
summary(fdeaths)
```
## 作图
```{r}
plot(fdeaths)
```
## 其他污染
但是,老师说,跟大气污染相比,其他环境污染问题更紧迫,只是不容易看出来。
- 土壤污染
- 水污染
- 垃圾污染
- 其他
在这篇文档中,##
表示后面的文字是二级标题(#
越多,标题级别越低);```{r}
和```
两行表示两者之间夹着的是R代码;-
表示后面是列表格式。这就是标记语言,是把格式用一些字符来表示,而不是通过点鼠标来选择格式。
其实,标记语言在前面的章节已经出现过了。我们在expression()
函数里,标明斜体或下标的时候,用的就是标记语言。
现在,把这个文件保存到硬盘里,我们权且起名叫R-sam,再点击工具栏的Knit按钮。立刻,一份图文并茂的Word文档就华丽丽展开在面前了。这个Word文档,就是R生成的。
用R来写Word文档有什么好处呢?
应出版社要求,本书起初是用Word写的。然而,在多次修改过程中,需要在R中反复修改示例代码和导出图片,复制粘贴到Word文档中,极易出错,后续还要调整格式。一旦发现代码和图片需要修改,就得重来一次;如此多次,无聊的过程让人心生绝望,最后索性用R来写书,顿时整个世界清静了。
仔细研究一下这份Word文档,你就会更明白我们的意思。如果是在Word里写一模一样的这样一份文档,一般的步骤是这样的:
写好文字部分;
用鼠标逐个调格式:文字的颜色,大小,对齐方式,列表格式,代码的字体、颜色、浅灰色背景等等。
用数据处理软件来计算数据,作图,再把计算结果和画好的图拷贝粘贴进文档。
对比一下RStudio里的这份文档,一步步对应的话,是这样操作的:
写好文字,同时用一些符号把格式标记出来,格式会自动转换:
在文字中嵌入R代码,计算结果和作图会自动展示。
这至少意味着两点:
省却了鼠标调整格式的繁琐步骤;
不用到别的软件界面拷贝图片了。
在这样的环境里写作,基本上可以避免被其他事情打扰分神,可以保持思维的连贯,只需关注内容,写起来一气呵成。
然而这仅仅是表面的好处。仔细思考,这背后有更丰富的意义。
我们发现,pm2.5的正确写法应该是PM2.5,字母应当大写,数字应当用下标格式。除此之外,我们想把文档里所有的“污染”二字加粗强调。在我们的R-sam里面,由于是标记语言,我们只需按ctrl+f快捷键,查找“pm2.5”,全部替换成PM~2.5~
;查找“污染”,全部替换成**污染**
就行了。然后,保存文件,再按Knit按钮。Bingo!奇迹就这样发生了。看看生成的Word文档里,格式是不是按我们的心意已经调好了?
波浪线表示下标,双星号表示加粗。这就是标记语言的好处,格式容易批量修改。如果文档里有千百处pm2.5要改,在R的文档里改起来太简单了,而在Word里改起来就是个灾难。就算使用Word的高级查找替换功能,也比R麻烦很多。
这里用的这种标记语言叫做Markdown。有了它,我们书写时只管放心写成pm2.5,将来批量改格式就行了。Markdown的标记方法十分简单,花个几分钟学习,就能满足绝大多数日常需求;如果使用它的扩展语法,那么几乎所有需求都可以得到满足(见附录)。
用R写文档的好处,当然不只是方便改格式。由于R代码是嵌入在文档中的,如果发现计算方法需要补充、修改,那么在这个文档里改就是了,输出的Word文档里数据和图片自动更新,不必考来考去,免去了麻烦的操作,大大减少出错的几率。
而且,跟别人交流时,只需这一份文档,就包含了数据处理过程和结果,别人很容易重复验证,只要有同样的输入数据,就会得到跟你一模一样的结果。这就是“可重复研究报告”的概念。当然,如果你想对计算方法保密,或者对一部分文字保密,只需把文档中的代码设定为隐藏,或者用标记符号将文字隐藏,那么输出的文档里就不会出现代码。总之,这是一份订制性很高、个性十足的文档。关于可重复研究报告,我们将在第14章和第15章进一步介绍。
此外,这份文档还可以直接生成幻灯片,其中的数据和图片跟Word里保持高度一致。这意味着,我们只维护这一份文档就够了。
那么,如何把这份R-word文档直接变成幻灯片呢?
7.3 从Powerpoint到R幻灯片
在RStudio的界面点击菜单 File - New File - R Markdown,在对话框选择Presentation,将默认输出格式勾选HTML(ioslides),点OK按钮。跟上面一样,新打开的是个用作示例的模板文件。我们把它保存文件到硬盘里某个文件夹,权且起名叫R-slides。点击Knit按钮,一个幻灯片文件就做好了,保存在同一个文件夹下,名叫R-slides.html,是个网页文件。双击打开看看,是不是跟ppt差不多?
如果把我们这个R-slides文档跟上一节R-sam文档比较一下,就会发现,文档的结构完全相同,只有文件开头output后面的内容不同。现在,让我们把R-slides文件开头的output: ioslides_presentation
拷贝粘贴到R-word文档里,将原来的output: word_document
替换掉,再点Knit按钮,见证一下奇迹的发生。
这份同样内容的Word文档就变成了幻灯片的模样!
这是件激动人心的事情。这意味着,我们以后只需专注这一份R文档就行了。需要Word报告就可以出报告,需要幻灯片就出幻灯片,并且内容都高度一致。
办公世界的纷乱就此平息。
当然,尺有所短,寸有所长,每个软件都有自己的优势。我们暂时无法用R像Excel那样展示绚丽多姿的表格,也无法做出ppt复杂的动画效果。所以,我们没必要厚此薄彼,只需认清他们的长处,为我所用便是了。
事实上,等我们学了第9章之后,这些看似不足的问题也会迎刃而解。我们甚至在将来学会字符和文件操作后,利用循环函数和分支函数,自动批量生成多个Word文档和PPT幻灯片。
7.4 课外活动:丰富多彩的幻灯片
做报告(presentation)时使用幻灯片(slides)早已成为标配24 。幻灯片不等于 Powerpoint, 当然也不等于 Keynote。很多软件都可以用来做幻灯片。例如,跟 Powerpoint 最接近的有免费的 WPS 和 Openoffice,模样接近但原理迥异的有 Beamer 和deck.js ,形式和风格大相径庭的有 Prezi 和 ipresst,也有人用思维导图来演示,甚至有人仅用“记事本”就可以把自己的想法说清楚。
对于幻灯片的制作,R 语言有多种解决方案。上网搜搜看,都有哪些有趣的方法,有哪些 具有独特的优势。
不要被困在 Powerpoint 的牢笼里。打开R的窗户,尽是自由天地。
当然也有例外,拜罗伊特大学微气象学系答辩要求使用的是打印海报,大气化学系则是要求黑板+粉笔。↩