You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取R Markdown参数功能上传文件的原始文件名与路径

解决方案

场景1:用户手动上传文件,保留原始文件名

原生R Markdown的file类型参数仅返回临时文件路径,要获取原始文件名可以自定义shiny上传控件,返回包含原始文件名和临时路径的对象,完整配置如下:

---
title: "参数化报告模板"
date: "`r Sys.Date()`"
output: html_document
params:
  date_file:
    label: "选择日期文件"
    input: shiny::fileInput
    multiple: FALSE
    accept: ".tsv"
---

```{r setup, include=FALSE}
# 仅在参数编织模式下执行,避免本地直接运行报错
if (!is.null(params$date_file)) {
  # 提取原始文件名作为输出文件前缀
  output_prefix <- tools::file_path_sans_ext(params$date_file$name)
  knitr::opts_knit$set(output_file = paste0(output_prefix, "_report.html"))
}
knitr::opts_chunk$set(echo = TRUE)

# 读取文件示例
# df <- read.delim(params$date_file$datapath)

R Markdown

原始文件名:r params$date_file$name
临时文件路径:r params$date_file$datapath

- `params$date_file$name` 即为上传文件的原始文件名,可直接用作输出文件前缀
- `params$date_file$datapath` 为临时文件存储路径,可直接读取数据使用

## 场景2:本地固定目录文件,下拉选择无需手动输入
如果待选文件均存储在指定本地目录,可配置下拉选择框自动加载目录内文件列表,无需用户手动输入路径,完整配置如下:

title: "参数化报告模板"
date: "r Sys.Date()"
output: html_document
params:
date_file:
label: "选择日期文件"
value: 'dates.tsv'
input: select
# 自动拉取指定目录下的tsv文件作为下拉选项,可自行修改目录路径和匹配规则
choices: !r setNames(list.files(path = "~/your_data_dir", pattern = "\.tsv$", full.names = TRUE),
list.files(path = "~/your_data_dir", pattern = "\.tsv$"))

if (!is.null(params$date_file)) {
  output_prefix <- tools::file_path_sans_ext(basename(params$date_file))
  knitr::opts_knit$set(output_file = paste0(output_prefix, "_report.html"))
}
knitr::opts_chunk$set(echo = TRUE)

# 读取文件示例
# df <- read.delim(params$date_file)

R Markdown

原始文件名:r basename(params$date_file)
文件存储路径:r params$date_file

- 下拉菜单显示文件名为可读性更高的短文件名,选中后返回值为文件完整存储路径,可直接读取
- 可通过修改`list.files`的路径和匹配规则,适配不同目录、不同格式的文件筛选需求

内容的提问来源于stack exchange,提问作者drmariod
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:06:08