作者: 陈波 ( 深圳大学 )
邮箱: 1900123011@email.szu.edu.cn
目录
在学习一门新工具的时候,我们都会问到一个拷问灵魂的问题:这个工具跟已有工具有什么区别?同样地,既然微软的 Power Point 可以做 PPT ,我们为什么还要用 Rmarkdown ?
就我个人而言,使用 Rmd 主要是出于以下两点:
功能简单
先问一个简单的问题:PPT 好用吗?好用,它实在是太好用了。只要你足够熟练,它几乎能实现你任何想要的功能,各种酷炫的功能让人目不暇接,我甚至还见过用 PPT 做逐帧动画的。但也正是因为它太好用了,繁复的功能使我们难以专注于内容的表达,总想手痒加点特效什么的。
与之相比,Rmd 的功能却很单薄,只需要掌握一些基础语法即可使用。但也正是如此,它受到了诸多研究者的青睐。对于日常沉浸在文献中研究者而言,我们只需要一款简单的文本记录工具,简单到只需输入文字与字符即可。
学术范儿
相比于 PPT 自带的商务风,Rmd 输出的 Beamer 则有着天然的学术范儿。如果日常生活有留意的话,可以发现,越是严肃的学术会议, Beamer 出现的频率通常也越高,这一点在国外尤其明显。
因为 Beamer 有个极为突出的优点,那就是它支持
首先,本文所讲的是 Rmd,自然要在 R 语言中运行。因此,假设各位读者已经安装好了 R 和 RStudio。如果没安装的话,可以参考这篇推文:R 语言和 RStudio 的安装、R Profile 的配置 。该文有详细介绍 Windows 和 Mac 环境下的安装与设置操作。
安装好 RStudio 之后,再安装 rmarkdown
和 tinytex
两个包 :
install.packages('rmarkdown')
install.packages('tinytex')
tinytex::install_tinytex()
tinytex
是一个瘦身版的 TexLive ,只要一百来兆。正是因为这个包的存在,我们可以摆脱庞大的 TexLive 或 MacTex 而使用 LaTeX。这也是 Rmd 的一大亮点,毕竟对于笔记本来讲,能节约几个 G 的内存真是善莫大焉。
该包的开发者是 R 语言大神谢益辉,他也是 Rmd 的主要作者。关于 TinyTex 的更多内容,可以访问谢益辉的个人网站:https://yihui.org/tinytex/cn/ 。
我们先点击左上角的 New file --> Presentation --> PDF(Beamer) -->save as demo, 新建一个名为 demo 的 Rmd 文档, 并将其存储在桌面上 Rmd 文件夹中。
在新建的 demo 文档中,系统自带了一个简单的模板,里面有一些基础性的语法,我们可以点击右上方的 knit ( Mac 中的快捷键为 shift+command+k ),查看一下结果。结果出来后,Rmd 文件夹中也会生成一个 demo.pdf 。
但是多数情况下,系统自带的“丐版”并不能满足我们的需求。我们得手动添加一些基本信息。
代码如下:
---
title: "菠萝菠萝哒的 Rmarkdown 教程"
subtitle: "以 Beamer 为例"
author:
- 菠萝菠萝哒$^1$
- 路人甲$^2$
institute:
- $^1$克莱登大学经济学系
- $^2$xxxx大学
date: "`r Sys.Date()`"
mainfont: Times New Roman
fontsize: 10pt
output:
beamer_presentation:
fonttheme: structurebold
theme: Ilmenau
colortheme: beaver
latex_engine: xelatex
header-includes:
- \usepackage{ctex}
---
:分页符,表示新建一个空白页title
:标题subtitle
:副标题author
:作者,可有多位作者institute
: 作者单位,可有多个单位data
:日期,可手动设定,也可以使用系统日期 r Sys.Date()
mainfont
:正文字体fontsize
:正文字体大小output
:输出格式,beamer_presentation
意为输出 Beamer 格式的 PDF 文档。
fonttheme
:主题字体theme
:Beamer 主题colortheme
:颜色主题latex_engine
:编译引擎,一般设定为 xelatex
header-includes
:调用 packages ,需要特别注意的是,如果是中文写作,一定要调用 ctex
包,不然会不显示或乱码。关于 Beamer 的主题设置,可以参考网站:https://hartwork.org/beamer-theme-matrix/ 。其中竖列为主题 theme
,横行为颜色主题 colorthem
。
点击工具栏中的齿轮--> output options,也可以通交互框来实现部分输出功能。
最终效果如下所示:
一份合格的学术 PPT ,除了文字之外,图片、表格和公式也是不可或缺的内容。那么我们该怎么实现这些功能呢?
插入图片有两种方法,一种较为简单,但是可设定的参数较少。具体如下所示:
{width=50%}
方括号内的为图片名称 (图片名称可以为空) ,圆括号的为图片的存储路径和图片名称,花括号内设定图片的长宽,本文将其设定为原始尺寸的 50% 。
第二种方法则需要引入 knitr
包中的 include_graphics
组件。下列代码中,r
表示下列运行的是 R 代码,echo=TRUE
为显示下列运行代码,也可以设定为 FALSE
,fig.cap
为图片标题,fig.align='center'
为图片位置,设置为居中,out.width='50%'
为设置图片输出宽度为原始尺寸的 50% 。同理,也可以根据 out.height
设定输出高度。
```{r, echo=TRUE, fig.cap="阔阔爱爱,没有脑袋",fig.align='center', out.width='50%'}
knitr::include_graphics("pictures/dog.JPG")
```
下图为效果图,两种效果是一样的。
作为 LaTeX 和 markdown 的混血儿,Rmd 同时支持这两种格式的表格。
首先我们以 markdown 为例,输入一个回归表格。
| | Yvar | Yvar | Yvar | Yvar |
| -------- | :-------: | :-------: | :-------: | :-------: |
| | (1) | (2) | (3) | (4) |
| AQI | 0.0142*** | 0.0222*** | 0.0391*** | 0.0423*** |
| | (0.0011) | (0.001) | (0.0012) | (0.001) |
| Controls | No | Yes | No | Yes |
| N | 100 | 100 | 100 | 100 |
| R2 | 0.001 | 0.175 | 0.005 | 0.334 |
可以发现,如果纯手动输入的话,还是比较麻烦的。因此我们可以先在 Excel 中把表格编辑好,粘贴到 typora 中,typora 会自动生成转为 markdown 格式的表格,我们将源代码粘贴至 Rmd 中即可。
另一种方法则是直接输入
关于EXCEL2LATEX的更多内容,可以访问该网站:https://ctan.org/pkg/excel2latex
将
\begin{table}[htbp]
\centering
\begin{tabular}{ccccc}
\toprule
& \textit{Yvar} & \textit{Yvar} & \textit{Yvar} & \textit{Yvar} \\
& (1) & (2) & (3) & (4) \\
\midrule
\textit{AQI} & 0.0142*** & 0.0222*** & 0.0391*** & 0.0423*** \\
& (0.0011) & (0.001) & (0.0012) & (0.001) \\
\textit{Controls} & \textit{No} & \textit{Yes} & \textit{No} & \textit{Yes} \\
\midrule
\textit{N} & 100 & 100 & 100 & 100 \\
\textit{R2} & 0.001 & 0.175 & 0.005 & 0.334 \\
\bottomrule
\end{tabular}
\label{tab:addlabel}
\end{table}
下面是 markdown 和
当然,还有一种更简单粗暴的做法,就是直接将表格截图,然后以图片形式插入 Rmd 中,直接绕开这个问题。
Rmd 继承了
我们以单个公式为例。如果是行间公式的话,需要在公式首尾加入两个美元符号 $$
。如果是行内公式的话,插入一个美元符号 $
即可。
$$
Y=d \tilde{X}+b \tilde{M}+e_{3}
$$
其中 $\tilde{X} = X - \bar{X}$
如果懒得敲公式的话,可以借助 Mathpix Snip 这个软件,将公式扫描一下,即可生成
有时候我们需要插入公式组,也可以通过 Mathpix Snip 来实现:
$$
\begin{aligned}
\operatorname{plim}[\hat{b}] &=b+\operatorname{plim}\left[\frac{\sum e_{1 i} e_{3 i} \sum \tilde{X}_{i}^{2}-\sum e_{1 i} \tilde{X}_{i} \sum \tilde{X}_{i} e_{3 i}}{\sum e_{1_{i}^{2}} \sum \tilde{X}_{i}^{2}-\Sigma^{2} e_{1 i} \tilde{X}_{i}}\right] \\
&=b+\frac{\operatorname{cov}\left(e_{1}, e_{3}\right)}{\operatorname{var}\left(e_{1}\right)}
\end{aligned}
$$
具体结果如下所示:
因为 Rmd 内嵌于 R 语言中,我们可以直接通过代码块来调用 R 里面的一系列功能。
最常见的,就是用代码块来绘制各种图形。
例如,我们写一个 function,然后用 R 把它画出来。这里我们用的是 R 中的 curve 函数。
```{r , echo=F, fig.width=10/2.54, fig.height=10/2.54,out.width="70%"}
curve(exp(-0.1*x)*sin(x), 0, 4*pi)
abline(h=0, lty=3)
```
既然可以画一个,那我们自然也可以画两个:
```{r, echo=F, fig.width=10/2.54, fig.height=10/2.54, out.width="45%"}
curve(exp(-0.1*x)*sin(x), 0, 2*pi)
abline(h=0, lty=3)
curve(exp(-0.1*x)*cos(x), 0, 2*pi)
abline(h=0, lty=3)
```
下面是绘制结果:
实际上,借助 R 的代码块,我们可以实现非常多的功能。就绘图而言,它就丝毫不弱于 TikZ
包。
Note:产生如下推文列表的 Stata 命令为
. lianxh 幻灯片 Markdown
安装最新版
lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh