查看原文
其他

使用R语言制作幻灯片

荷兰心理统计联盟 荷兰心理统计联盟 2021-07-07

1 R 做幻灯片?这是什么操作?


简单来说, 使用R做幻灯片有如下优势:


首先,用R制作幻灯片可以让你的幻灯片变得可再生(reproducible)。报告所用的幻灯片都是用Rmarkdown即时生成的,如果统计结果有修改,那么你的幻灯片会根据你的统计结果自动进行变化,不需要再进行额外的复制粘贴工作,也就不会再有“这是个复制粘贴的错误”的尴尬。


其次,使用R制作幻灯片可以无缝衔接R本身自带的强大画图功能,从而呈现出更好的图片报告效果。比如可以整合plotly 安装包呈现可交互的图片。而这些效果在PPT上很难实现。


另外,可以在幻灯片上直接呈现分析的过程和R代码-- 即直接给观众呈现你数据分析的过程,让你的报告条例更透明和清晰。


最后,各位同学多少都遇到过某些PPT版本不兼容导致PPT无法打开的尴尬,而使用R制作的幻灯片就不会出现这种情况。你甚至可以将生成的文件脱离R语言进行呈现,只要所呈现的电脑有浏览器就行。


当然,它跟PPT相比主要的劣势在于美化和排版。实现平面设计级别的美化和排版可能在PPT上只需要拖动鼠标或者点击即可,而使用R来完成这些工作,你需要懂得html以及懂得编写CSS。但是现在已经有相应的幻灯片主题安装包可供选择,本文也将就如何对R制作出的幻灯片进行美化提供建议。


今天我们就来手把手教大家如何使用R制作幻灯片

 

准备工作


2.1 下载并安装R markdownxaringan


直接在R-studio的命令行中使用install.packages (rmarkdown),以及install.packages(xaringan) 即可。


2.2 调出模板


R-studio的左上角点击File-> New File -> R MarkdownR-studio会弹出如下界面:




在这个界面中选择 from Template, 会呈现如下界面:



可以看到Template中的第一行Ninja Presentation (simplified Chinese,因为这个包的作者就是中国人,谢益辉,所以很友好的提供了中文支持)。如果你选择纯英文报告,点击下方的NinjaPresentation ,再点击OK即可。然后会看到如下界面:


这就是用来生成幻灯片文件的Rmarkdown文件了。以上代码是作者制作幻灯片的示例代码,我们在自己制作幻灯片时,可以将“background-image”之后的内容全部删除,同时修改title, subtitle 和author。接下来我将从头制作一个示例幻灯片。


3 幻灯片的制作


3.1 全局参数


删掉黄线以下内容之后,我们首先要设置一些全局参数(比如小数点保留几位)


我们可以点击右上角的“insert-> “R” 来插入一个R 的代码块。在小写r附近(被称为inline R)输入 include=FALSE,意思是不在幻灯片中呈现本R代码块的运行结果和代码。接下来再下方输入 options(digits= 2) 意为幻灯片呈现的所有数据保留两位小数。


具体代码如下图:



3.2 标题, 正文以及分页符


接下来我们可以输入标题,我们可以通过输入“#的个数来控制标题的级数。


例如

# 一级标题

## 二级标题

### 三级标题


输入标题之后,可在直接标题下方输入正文部分。如果想对正文进行缩进处理,可以输入三个“` ”(主键盘数字1左边的按键),即可用空格键进行缩进。但在输入完文本之后,需要再起一行输入三个“` 表示文本输入结束。


如果我们想完成对当前页的编辑而转向下一页的编辑,可以另起一行加入分页符“---”。


上述代码如下图:


 

3.3 图片的插入


使用如下命令即可插入图片 ![可以随便输入任何内容](文件路径)”,此时被插入的图片和该Rmarkdown文件在一个文件夹之内,所以直接输入文件名即可。


代码如下图:

3.4 居中, 背景颜色以及渐进显示


使用“.center[需要居中的内容]”即可完成居中操作。同理”.left[]” 和“.right[]分别为左对齐和右对齐”。



若要快速修改当前主题的背景颜色,可以在分页符下方输入class 参数,然后输入inverse 即可。


具体代码如下:




若想实现类似PPT中每点击一次鼠标显示部分文本的功能。可以在需要渐进显示的文本之间加入“--”进行间隔,具体代码如下:


 

整合R代码块


4.1 工作空间及inline R code的设置


接下来我们将开始整合数据分析到已有的幻灯片当中,但在进行数据导入和分析之前要注意工作空间的设置。尽量把数据文件和幻灯片生成文件放到一个文件夹下,这样就不需要修改工作空间了,否则在Rmarkdown中修改工作空间地址会造成很多不可预知的后果。由于我们在这里要开始报告R代码的统计结果,我们在inline R code设置中使用echo=FALSE,即只报告代码结果而不显示代码。


具体代码如下:


 

4.2 引用R的输出结果


接下来我们来计算不同性别在变量”before”上的平均数并报告出来。首先我们使用前两期提到的ddply功能进行分组统计,求每个性别的人数和在“before”变量上的平均数并赋值给数据框result。然后在文本中使用`r result$mrt[1]`来显示女性的平均数。具体代码如下:


 

4.3 输出可交互的图片


在前两期的栏目中,我们介绍了如何使用RError bar图,这次我们将在图中加入可交互的效果,即鼠标停留在图上可显示具体数值,这一功能通过plotly包中的ggploty实现。具体代码和效果如下:

 

这样一个幻灯片示例就编写完成了,各位同学可以根据自己的需要进行修改,然后点击下图中的knit 即可生成一个网页版的幻灯片。当幻灯片自动弹出后,可点击open in browser,然后把网页最大化,接着按一下键盘上的F键,就可以开始进行报告啦(进入幻灯片状态之后的操作同PPT一样)

最后放上这次demo的动图:



最后,关于幻灯片的美化,有兴趣的同学可以使用xaringan自带的主题(目前仍在不断扩充之中),Github链接如下

https://github.com/yihui/xaringan/wiki/Themes


或者使用另一个安装包xaringan themer进行主题定制。该安装包的Github链接如下:

https://github.com/gadenbuie/xaringanthemer


有兴趣的同学也可以关注谢益辉大神本人的官方网页:

https://yihui.name/cn/


后台回复slides 获取本期示例代码

如果有对R作图(特别是error bar)相关的知识感兴趣的同学也可以移步: 常用R作图代码示例


参考文献:

Xie, Y., Allaire, J. J., & Grolemund, G.(2018). R markdown: The definitive guide. CRC Press.


 



----

欢迎关注我们

一个专注于心理学及管理学领域统计方法(复杂模型Mplus及R软件的应用)及英文写作的公众号

----

另如果涉及统计及代码问题,请在文章下方留言或邮寄。公众号回复48小时就无法回复了。




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存