Подтвердить что ты не робот

Как отобразить вербальный встроенный код r с обратными выводами с помощью Rmarkdown?

В результате удвоения обратных шагов в Markdown легко отобразить текст в стиле кода, включая обратные элементы, такие как: `r 2+2`. Но как это сделать с RMarkdown? Точно так же мы можем отобразить `t 2+2`, но замена t на r выполняется R-кодом 2+2.

Единственный способ, который я нашел до сих пор:

<p><code  class="r">`</code><code class="r">r 2+2`</code></p>

Не очень удобно. Может быть, мне нужно определить новый css для удобства?

4b9b3361

Ответ 1

Вот трюк, который я использую. Во-первых, обратите внимание, \x60 is ':

> cat('\x60', '\n')
' 

Потом пишешь

'r '\x60r foo+bar\x60''

который даст вам 'r foo+bar' в выводе уценки, но он станет r foo+bar в выводе HTML, поэтому вам нужно защитить обратные галочки в уценке, используя два (или более) обратных галочек. Тогда вы в конечном итоге с этим шариком волос:

'' 'r '\x60r foo+bar\x60'' ''

Ваше собственное решение хорошо, но я бы просто определил

rinline <- function(code) {
  sprintf('''' 'r %s' '''', code)
}

Также см. Этот пост для другого трюка.

Ответ 2

Я только что узнал о опции results='asis'.
Итак, еще один способ; для удовольствия и обучения: -)

```{r, results='asis', echo=FALSE}
cat("`` `r 2+2` ``")
```

Ответ 3

Вот удовлетворительный вывод. Сначала определите функцию

rinline <- function(code){
  html <- '<code  class="r">``` `r CODE` ```</code>'
  sub("CODE", code, html)
}

в невидимой части. Затем вы можете показать `r 2+2`, набрав:

Some R code inline : `r rinline("2+2")` - nice 

Ответ 4

Любой, кто смотрит на это сейчас, может захотеть проверить более свежее решение здесь: встроить Rmarkdown без оценки knitr

По сути вы можете сделать:

Some R code inline : 'r knitr::inline_expr("2+2")'

Я предполагаю, что описанная выше функциональность была добавлена в knitr напрямую, но это спасает нас от определения функции самим.