Use R code or Windows user variable (“%userprofile%”) in YAML?

后端 未结 2 1962
不知归路
不知归路 2020-11-30 11:53

In my yaml call I have

---
title: \"`r paste0(\'Test. Done \', format(Sys.Date(), \'%B-%Y\'))`\"
output:
  word_document:
    fig_caption: yes
    fig_height         


        
相关标签:
2条回答
  • 2020-11-30 12:17

    You can include such a variable, but you should quote the scalar in which put it (either single quotes or double quotes). Within a quoted scalar the % doesn't have any special meaning only the single quote has (in single quoted strings, or the backslash (\) in double quoted strings.

    Any further interpretation of that scalar as Windows variable is outside of the scope of YAML and needs to be done by your program.

    The scalar:

    "`r file.path(path.expand('~'), 'skabelon.docx')`"
    

    is correct YAML and shout not throw an error (but of course is nothing else for YAML than a buch of characters starting and ending with a backquote, no interpretation should be done on that by the parser).

    0 讨论(0)
  • 2020-11-30 12:28

    The problem is that the parameters in the output field is only understood by rmarkdown. Pandoc does not understand them, so you need to make sure rmarkdown can evaluate the expression. Since rmarkdown uses the yaml package to read the YAML metadata, and yaml's syntax for R expressions is !expr, you can put the R expression after !expr, e.g.

    output:
      word_document:
        fig_caption: yes
        fig_height: 4
        fig_width: 7
        reference_docx: !expr file.path(Sys.getenv('USERPROFILE'), 'Documents', 'template.docx')
    
    0 讨论(0)
提交回复
热议问题