如何访问在 RMarkdown 文档中作为参数传递的文件中的数据?

Posted

技术标签:

【中文标题】如何访问在 RMarkdown 文档中作为参数传递的文件中的数据?【英文标题】:How do I access the data from a file passed as parameters in a RMarkdown document? 【发布时间】:2016-03-29 22:30:34 【问题描述】:

按照 RMarkdown 的 Parametrized Reports 页面上的最后一个示例,我正在尝试使用 Shiny 接口来选择我的输入文件,并在 YAML 标头中使用以下代码:

params:  
  data:  
    input: file  
    label: 'Input dataset:'  
    value: myData.csv  

Shiny 界面出现,我可以浏览文件,但是当我尝试通过read.csv(file=params$data, header=TRUE)R 代码中进一步访问它时,我收到以下消息:

文件错误(文件,“rt”):无法打开连接

如何才能读取我的文件?

注意:我见过thread,用户在呈现RMarkdown 文档时在函数中传递文件路径,但这不是我想要做的。我只想能够从Shiny 界面中选择它。

编辑 再玩一会儿后,我认为问题在于,当我尝试访问时,我通过shiny 接口选择并作为 params$data 传递的文件时创建的临时文件不存在了。 事实上,file.exists(params$data) 返回FALSE

所以我想我现在的问题变成了:如何在这个临时文件被擦除之前读取它?

【问题讨论】:

很确定这是系统中的错误。我向 RStudio 工作人员报告了这个问题,但还没有答案。 您是否尝试过像使用 Shinyapp 一样访问该文件?通常,fileInput 创建的对象不是文件的路径。在您的情况下,实际路径是params$data$datapathparams$datapath 【参考方案1】:

这看起来不能再复制了。

只是为了解释这是如何完成的:

    创建一个新的 RMarkdown 文档

    将以下 yaml 块添加到顶部:

    params:  
      data:  
        input: file  
        label: 'Input dataset:'  
        value: myData.csv  
    

    将以下 R 块添加到文档中:

    ```r data
    cat(params$data)
    c <- read.csv(params$data)
    print(c)
    ```
    

    在“Knit”下拉菜单下选择“Knit with Parameters”选项

    附加任何有效的 CSV 文件并在 Shiny 参数面板中单击“Knit”

【讨论】:

是否可以访问原始文件路径?我正在编写一份需要记录文件位置和时间戳的报告。

以上是关于如何访问在 RMarkdown 文档中作为参数传递的文件中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

Saxon-HE Java 扩展 - 如何访问作为参数传递的 xsl 变量的值?

如何在rmarkdown中调整注视表的字体大小?

如何访问对象而不将其作为参数传递?

如何在 Rmarkdown 文档中显示 Python 代码中的几何对象?

如何将 Shiny 应用程序中的表格和绘图作为参数传递给 R Markdown?

在 RMarkdown 文档中使用参考书目时,如何在 RStudio 中使用 --citeproc 而不是 pandoc-citeproc?