/ / Промяна на подканата в многоезичен knitr / RMarkdown документ - r, bash, knitr, r-markdown

Промяна на подканата в многоезичен knitr / RMarkdown документ - r, bash, knitr, r-markdown

Пиша .Rmd файл, който показва както команди за bash, така и Rкоманди. Има ли начин да се разграничат парчетата с R код от тези с bash код? Има опция за плетени парчета, която вмъква командата R в буквата така, че да е

```{R, prompt = "true"}
plot(rnorm(100))
```

става

> plot(rnorm(100))

но за баш парчета това

```{bash, prompt = "true"}
pandoc --version
```

става това

> pandoc --version

когато предпочитам това

$ pandoc --version

Отговори:

6 за отговор № 1

Можете да опитате проста кука:

---
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
```

въведете описанието на изображението тук

И можете да добавите opts_chunk$set(prompt=TRUE) така че не трябва да продължавате да пишете prompt=TRUE за всеки парче


2 за отговор № 2

Това е малко неприятно, но току-що осъзнах, че мога да "превключа" на бързината да направя това:

```{r, echo = F}
options(prompt = "$ ")
```

```{bash, eval = F, prompt = T}
pandoc --version
```

```{r, echo = F}
options(prompt = "> ")
```

```{r, eval = F, prompt = T}
plot(rnorm(100))
```

което дава

$ pandoc --version
> plot(rnorm(100))