R tips:RMarkdown代码块的控制选项

2021-03-23 14:57:32 浏览数 (1)

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%”。

0 人点赞