R Markdown使用knit with parameters时如何获取所选原文件名称
问题原因
使用RStudio「knit with parameters」的file类型参数时,Shiny上传组件会将用户选中的文件复制到系统临时目录生成临时文件,params$workbook默认返回的是该临时文件的路径,因此直接使用basename(params$workbook)只能拿到临时文件名。用户选择的原始文件名会以name属性的形式附加在params$workbook对象上。
解决方法
最简方案
直接在正文需要展示数据源文件名的位置插入以下代码即可:
`r attr(params$workbook, "name")`
兼容默认参数的优化方案
如果需要覆盖「未手动选择文件、直接使用YAML中默认的current.xlsx参数编织」的场景,可在文档开头的setup代码块中加入以下自定义函数:
get_source_filename <- function() { # 优先取手动上传的原始文件名 original_name <- attr(params$workbook, "name") # 无原始文件名时取默认参数的文件名 if (is.null(original_name)) { return(basename(params$workbook)) } return(original_name) }
后续在正文中调用函数即可:
`r get_source_filename()`
内容的提问来源于stack exchange,提问作者Charles Knell
相关产品推荐
相关产品推荐

