【问题标题】:Passing Parameters to R Markdown将参数传递给 R Markdown
【发布时间】:2015-12-05 09:32:51
【问题描述】:

我正在尝试根据以下教程在 R Markdown 中创建参数化报告:http://rmarkdown.rstudio.com/developer_parameterized_reports.html#passing-parameters

我正在尝试使用渲染从 r 控制台将文件路径作为参数传递。 像这样:

render('rmarkdownfile.rmd',params= list( client= "clientdata.csv"))

我的降价文件如下所示:

title: "Liquidity Report"
output: pdf_document
params: client:"clientdata.csv"
---
```{r plot, echo=FALSE, warning=FALSE}
cftest <- read.csv(params$client)

但我收到一条错误消息:

read.table 中的错误(file=file, header=header, sep=sep, quote=quote, : 'file' 必须是字符串或连接调用:

即使我按照教程的步骤进行操作,Markdown 似乎也无法识别参数。有没有人能够在 R Markdown 中成功使用参数?

另外,我遵循本教程的建议,正在使用 R Studio 预览版以及 r markdown 和 knitr 的最新版本。

感谢您的帮助!

拉斐尔

【问题讨论】:

    标签: r r-markdown


    【解决方案1】:

    我喜欢做的不仅仅是在我的参数化报告中指定一个文件名,还有一个目录。

    ---
    title: Liquidity Report
    date: '`r strftime(Sys.time(), format = "%B %d, %Y")`'
    output:
      pdf_document:
        number_sections: yes
        theme: cerulean
        toc: yes
        toc_depth: 2
    params:
      directory:
        value: x
      file:
        value: x
    ---
    
    ```{r, include = FALSE}
    knitr::opts_chunk$set(
          echo    = FALSE
        , warning = FALSE
        , message = FALSE
    )
    
    ## Pull in the data
    dataset <- read.csv(file.path(params$directory, params$file))
    ```
    

    然后在你的渲染函数中你可以:

    rmarkdown::render(
          input  = 'LiquidityReport.Rmd'
        , params = list(
              directory = '~/path/to/data'
            , file      = 'clientdata.csv'
            )
    )
    

    knitr 文档可以添加更多信息:&gt; ?knitr::knit_params

    【讨论】:

    • 谢谢!看起来是一个很好的方法。我试试看。
    • 如果要多个文件,直接加value xvalue yvalue z吗?您将如何选择正确的文件?
    • 好的!我想我明白了:params: directory: value: x lqual: value: x ldepth.mean: value: x lmiss: value: x fq: value: x idepth: value: x imiss: value: x 这些放在不同的行上。这样您就可以将每个“文件”作为新的params$file 放入R 脚本中!
    • 另外我建议将paste 函数更改为file.path
    • value: x 行是默认值。在这种情况下,我使用x 来创建占位符并确保在没有有效目录和文件路径的情况下渲染调用失败。
    【解决方案2】:

    在我的情况下它有效,只需要更改标题中的缩进和我的文件夹中可用的一些名称......

    这里是我的jnk.Rmd

    ---
    title: "Liquidity Report"
    output: pdf_document
    params: 
      client: "NAMESPACE"
    ---
    ```{r plot, echo=FALSE, warning=FALSE}
    cftest <- read.csv(params$client)
    ```
    

    这就是我在控制台中调用的内容:render('jnk.Rmd',params= list( client= "NAMESPACE"))

    【讨论】:

    • 这对我也很好。顺便说一下,在 YAML 标头中的文件名周围不需要引号。 @Rafael,您确定 clientdata.csv 文件与您的 .Rmd 文件位于同一目录中吗?
    • 其实脚本抱怨的是变量的内容(必须是字符)而不是不存在的文件...
    • 非常感谢!那工作得很好。我对此很陌生,不知道缩进会产生如此大的影响。
    猜你喜欢
    • 2019-07-11
    • 2017-07-29
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多