knitr:如何从块内获取和覆盖块选项

时间:2016-06-22 15:45:35

标签: r knitr r-markdown

我有两个关于knitr块选项的问题:

1)是否可以从一大块代码中覆盖knitr块选项,以便选项应用于同一块中?例如写下以下几行并得到结果as-is

```{r, results= "markup"}
    knitr::opts_chunk$set(results= "asis")
    for (i in 1:5)
        print("# This text should be printed 'as-is'")
```

P.S。我熟悉knitr::asis_output

2)是否可以从块内获取块选项?例如,使用如下代码:

```{r}
   knitr::opts_chunk$get("results")
```

获取字符串markup

```{r, results='asis'}
   knitr::opts_chunk$get("results")
```

获取字符串asis

不幸的是,knitr::opts_chunk$get("results")获取全局选项,而不是当前块的选项。

1 个答案:

答案 0 :(得分:3)

1)可以使用knitr::normal_printknitr::asis_output功能(如您所述)自定义打印。例如:

```{r, results='markup'}
knitr::asis_output(replicate(5, "# This text should be printed 'as-is'\n"))

print("# This text should be printed 'normal'")
```

或者

```{r, results='asis'}
for (i in 1:5)
    cat("# This text should be printed 'as-is'\n")

knitr::normal_print("# This text should be printed 'normal'\n")
```

2)可以使用knitr::opts_current$get()检索当前的块选项。使用:

```{r, results='asis'}
knitr::opts_current$get("results")
```

并获取字符串asis