更改多语言knitr/RMarkdown文档中的提示

Zoë*_*ark 5 bash r knitr r-markdown

我正在编写一个.Rmd显示bash命令和R命令的文件.有没有办法区分具有R代码的块与具有bash代码的块?有一个knitr chunk选项可以将R命令提示符插入一个块中

```{R, prompt = "true"}
plot(rnorm(100))
```
Run Code Online (Sandbox Code Playgroud)

> plot(rnorm(100))
Run Code Online (Sandbox Code Playgroud)

但对于bash大块这个

```{bash, prompt = "true"}
pandoc --version
```
Run Code Online (Sandbox Code Playgroud)

变成了这个

> pandoc --version
Run Code Online (Sandbox Code Playgroud)

当我更喜欢这个

$ pandoc --version
Run Code Online (Sandbox Code Playgroud)

raw*_*awr 7

你可以尝试一个简单的钩子:

---
output: html_document
---

```{r}
library('knitr')
knit_hooks$set(
  prompt = function(before, options, envir) {
    options(prompt = if (options$engine %in% c('sh','bash')) '$ ' else 'R> ')
})
```

```{r, prompt=TRUE}
1+1
```

but for the bash chunks this

```{bash, prompt=TRUE}
pandoc --version | head -1
```

```{r, prompt=TRUE}
1+1
```
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

你可以添加,opts_chunk$set(prompt=TRUE)这样你就不必prompt=TRUE为每个块继续写作