2016-10-24 22 views
10

Próbuję utworzyć kilka szablonów fragmentu w knitr::spin dokumentów w R Studio i muszę im to dosłowne odwrócone, pojedyncze apostrofy tak, że otrzymany dokument zawiera fragment R:Jak wyjście dosłownych odwrócone, pojedyncze apostrofy w knitr :: wirowania

Przykład pożądaną wydajność:

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

Jednakże nie można dowiedzieć się, jak odwrócone, pojedyncze apostrofy wyjściowych. To:

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

nie będzie działać tak, jak znaczniki powodują przerwanie polecenia wklejania podczas renderowania z fragmentu kodu R Studio do kodu R. Próbowałem do mieszania się z znaków podziałki, dodając w przód iw tył ukośniki itp, ale nie znalazłem rozwiązanie, które czyni ten wiersz poprawnie:

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

Windows 7 Enterprise, 64- bitowy system operacyjny
R Wersja: 3.2.5
R Studio wersja: 0.99.903
knitr Wersja: 1,14


Przykład: próbowałem, ale to wciąż przekłada kod R zamiast po prostu wydrukować tekst:

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("#' ---")` 
+0

UWAGA: To nie jest problem YAML ! Prawidłowe wyjście YAML jest wyświetlane w trzecim polu kodu. Problem polega na renderowaniu fragmentu kodu Studio R, aby poprawnie wyświetlać kod YAML! -> jest to problem z kodem R Studio! –

+0

Kod skrzynki numer 3 działa poprawnie, ale problem polega na tym, że fragment kodu Studio R tworzy linię 4 w polu numer 3! –

+0

Jest bardziej związany z tym problemem, ale z jeszcze jednym poziomem złożoności http://stackoverflow.com/questions/20409172/how-to-display-verbatim-inline-r-code-withbackback-using-rmarkdown –

Odpowiedz

1

Prawidłowa odpowiedź została wysłana przez rawr w komentarzach (on tylko brakowało R i fajką):

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("#' ---")` 
0

Jedną z opcji jest przełamanie token używany podczas przetwarzania urywka dla inline R.

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

Inną opcją jest uniknięcie inline R parsowanie całkowicie.

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}