如何在knitr :: spin

时间:2016-10-24 08:08:50

标签: r rstudio knitr r-markdown

我正在尝试在R Studio中为knitr::spin文档创建一些代码段模板,我需要它们包含文字反引号,以便生成的文档包含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企业版,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("#' ---")`

2 个答案:

答案 0 :(得分:1)

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 :(得分:0)

一种选择是打破内联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}