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
相关产品推荐
相关产品推荐

