如何访问在 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$datapath
或params$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 文档中显示 Python 代码中的几何对象?
如何将 Shiny 应用程序中的表格和绘图作为参数传递给 R Markdown?
在 RMarkdown 文档中使用参考书目时,如何在 RStudio 中使用 --citeproc 而不是 pandoc-citeproc?