RMardkown的代码在渲染时可以得到更加精细的控制,诸如代码是否运行、是否显示、如何显示、文本是否输出、如何输出、图片是否显示、如何显示等等。
详细的资料可以参考Knitr的Chunk options:https://yihui.org/knitr/options/。这里主要根据个人经验展示比较常见的格式控制。
I 代码
eval
是否运行代码块,有些代码块是不运行的,仅仅是为了展示使用。
RMarkdown的代码选项是接受R变量的,所以可以根据特定条件去控制一个代码块是否执行。
下面的RMarkdown代表根据isShow的结果是否大于0来决定是否执行第二个代码块。
```{r,include = FASLE}
isShow <- rnorm(1) > 0
```
```{r, eval = isShow}
{eval some code}
```
echo
是否在结果中展示代码块,如下所示代码表示不在结果文件(如html文档)中展示代码,但是会展示代码的结果:文本或图片等等。
代码语言:javascript复制```{r, echo = FALSE}{eval some code}```
tidy
是否在显示代码的时候做格式化处理,如果为TRUE,那么会使用formatR格式化R代码:调整缩进、换行等等。
II 文本
result
比较重要的一个参数,用于控制文本输出是否显示以及如何显示,有四个可选项:markup、asis、hold、hide。
markup代表是否对输出作一定的修饰,是默认选项,比如对输出的向量加上```的代码块的符号。
asis是非常有用的选项,可以使用代码模拟Markdown语法,比如如下的代码可以生成三级标题,它等同于在RMarkdown中书写### 测试三级标记可以通过代码产生 `。(###的正确渲染需要前后都是空行,因此还使用cat打印了两个空行)
代码语言:javascript复制```{r, result = "asis"}cat(" n")cat("### 测试三级标记可以通过代码产生 n")
cat{" n"}```
hold会将所有文本收集起来,放置到文件最后输出。
hide隐藏文本输出。
include
如果为FALSE,会隐藏本代码块和代码块输出,但是会执行代码内容,可用于做初始化,比如在RMarkdown的开始位置:
代码语言:javascript复制```{r setup, include = FALSE}
# 导入工具包
{import some libraries}
# 设置默认参数
knitr::opts_chunk$set(
echo = FALSE,
fig.align = "center",
message = FALSE,
warning = FALSE)```
warning
是否在结果文件中显示warning结果,绝大多数情况都是不需要显示的。如果为FALSE,则不显示,改为显示到渲染console中。
message
和warning类似,绝大多数情况下也是不需要显示的。
由于它和warning很常见,其实可以作为默认参数设置,通过knitr::opts_chunk$set
设置好,如上面的include参数中的代码一样。
error
错误发生时,是否继续执行code,如果为FALSE则不继续执行,一般情况下,出现error后是不能让代码继续执行的,error的出现需要仔细寻找代码的问题并修正。
III 图片
fig.show:同样有四个可选项:asis、hold、hide、animate。hold和hide的含义同文本输出中的result的选项是一样的。
默认情况下是asis,就是图片显示的位置就是代码生成它的位置。
animate可以将生成的多幅图片转换成动画。
fig.height,fig.width:设置图片的大小的地方。
注意RMarkdown中图片的输出是不需要使用pdf或者ggsave等方法进行保存,只需要将图片plot或者print即可。
那么正常情况下图片保存时需要填入的height和width就是此时的fig.height和fig.width。
代码语言:javascript复制```{r, fig.height = 6, fig.width = 8}
out.width, out.height:fig.heigth和fig.width是图片的物理大小,可以通过out.width或out.height控制它在输出文件中的显示大小,其值为一个百分比的字符,如:“80%”。