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

Shiny应用中根据输入文件类型切换读取函数的实现

Shiny应用中按文件类型切换数据读取函数的实现

需求说明

在Shiny应用开发场景中,需要根据用户上传文件的扩展名自动切换数据读取逻辑:

  • 上传文件为.mtx、.tsv、.gz格式时,调用rnaApp::ReadDoi函数读取
  • 上传文件为.h5ad格式时,调用新增的rnaApp::ReadH5AD函数读取

实现思路

利用tools::file_ext提取文件的扩展名,通过条件判断为不同扩展名匹配对应的读取函数,最后统一调用选定的函数完成数据读取。这种方式逻辑清晰,后续扩展新文件类型时只需补充判断分支即可。

代码实现

# 获取上传文件的扩展名(转为小写避免大小写问题)
file_ext <- tolower(tools::file_ext(input$uploaded_file$name))

# 根据扩展名匹配对应的读取函数
read_function <- switch(file_ext,
                        mtx = rnaApp::ReadDoi,
                        tsv = rnaApp::ReadDoi,
                        gz = rnaApp::ReadDoi,
                        h5ad = rnaApp::ReadH5AD,
                        # 处理不支持的文件类型
                        stop("不支持当前文件格式,请上传 .mtx/.tsv/.gz/.h5ad 类型的文件")
                        )

# 调用选定的函数读取数据
uploaded_data <- read_function(input$uploaded_file$datapath)

补充说明

  • 使用tolower()统一扩展名的大小写,避免因用户上传文件扩展名大小写不一致导致的判断错误
  • 通过switch()函数替代多分支if-else,让代码更简洁易读
  • 加入了不支持文件类型的报错提示,提升用户体验

内容的提问来源于stack exchange,提问作者PesKchan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:42:05