Я пытаюсь создать несколько шаблонов фрагментов для документов knitr::spin в R Studio, и мне нужно, чтобы они включали буквальные обратные кавычки, чтобы полученный документ содержал фрагмент R:

Пример желаемого результата:

#' ---
#' author: 'ENTER'
#' title: 'ENTER'
#' date: '`r Sys.time()`'
#' output: 
#'    html_document
#' ---

Однако я не могу понять, как выводить обратные кавычки. Этот:

`r paste("#' date: '`Sys.time()`')`

Не будет работать, так как галочки прерывают команду вставки при рендеринге из фрагмента R Studio в код R. Я пытался хешировать отметки, добавляя прямые и обратные косые черты и т. Д., Но не нашел решения, которое правильно отображает эту строку:

#' date: '`r Sys.time()`'

Windows 7 Enterprise, 64-разрядная операционная система
Версия R: 3.2.5
Версия R Studio: 0.99.903
knitr Версия: 1.14


Пример: я пробовал это, но он по-прежнему переводит код R, а не просто печатает текст:

snippet spin.header
`r paste("#' ---")`
`r paste("#' author: 'ENTER'")`
`r paste("#' title: 'ENTER'")`
`r paste("#' date:  '<code>``` `r Sys.time()` ```</code>'")`
`r paste("#' output:")` 
`r paste("#'    html_document")`
`r paste("#' ---")`
13
Joanne Demmler 24 Окт 2016 в 11:08

2 ответа

Лучший ответ

Правильный ответ был опубликован rawr в комментариях (он пропустил только r и галочку):

snippet spin.header
`r paste("#' ---")`
`r paste("#' author: 'ENTER'")`
`r paste("#' title: 'ENTER'")`
`r paste("#\' date: '\x60r Sys.time()\x60'")`
`r paste("#' output:")` 
`r paste("#'    html_document")`
`r paste("#' ---")`
1
Joanne Demmler 4 Ноя 2016 в 08:07

Один из вариантов - сломать токен, используемый во время обработки фрагмента для встроенного R.

snippet sh
  #' ---
  #' author: '${1:AUTHOR}'
  #' title: '${2:TITLE}'
  #' date: '`${3:}r Sys.time()`'
  #' output:
  #'    html_document
  #' ---
  ${0}

Другой вариант - полностью отказаться от встроенного синтаксического анализа R.

snippet sh
  `r paste0(readLines("~/.R/snippets/spinheader.txt"),collapse = '\n')`

spinheader.txt

#' ---
#' author: '${1:AUTHOR}'
#' title: '${2:TITLE}'
#' date: '`r Sys.time()`'
#' output:
#'    html_document
#' ---
${0}
0
Thell 3 Ноя 2016 в 14:35