如何在Golem框架的Shiny应用中添加外部服务器的TXT配置文件
Golem框架中私有项目信息TXT文件的放置方案及实践示例
一、标准放置位置
在Golem框架里,这类存储项目路径、配置信息的TXT文件,统一放在项目根目录的inst/文件夹下,推荐细分到inst/extdata/子目录——这是Golem官方指定的外部数据/配置文件存放位置,打包成应用时会被自动包含,避免路径失效问题。
- 如果有分类需求,也可以在
inst/下自定义子目录(比如inst/project_configs/),只要后续路径引用对应上即可。
二、路径引用的修正方法
你之前硬编码的"data/data1.txt"只适用于普通Shiny项目,在Golem中必须用system.file()函数获取正确路径,适配打包后的结构变化。示例代码:
# 替换成你的Golem项目实际包名 path_to_data1 <- system.file("extdata", "data1.txt", package = "your_golem_app") path_to_data2 <- system.file("extdata", "data2.txt", package = "your_golem_app")
三、辅助函数的调整及完整示例
你的原有函数存在几处拼写错误(比如path_worj、names[ind]),结合Golem路径方式修正后的完整代码:
# 获取TXT文件的正确路径 path_to_data1 <- system.file("extdata", "data1.txt", package = "your_golem_app") path_to_data2 <- system.file("extdata", "data2.txt", package = "your_golem_app") make_path<-function(pathwork, type, ex, subfolder=""){ path<-paste0(pathwork,"/proj", type,"/",ex,"/",subfolder,"/") return(path) } getfiles = function(screennames, types, pathwork){ files = data.frame() for (ind in 1:length(screennames)){ # 修正拼写错误,用screennames[ind]替代names[ind] hitfile = file.path(make_path(pathwork, types[ind], screennames[ind], "analysis"),"File.tsv") # 检查文件存在性时使用hitfile变量 if(file.exists(hitfile)){ files=rbind(files, data.frame(filename=hitfile, screen=paste0(screennames[ind],"-",types[ind]))) } } return(files) }
四、实际操作步骤
- 在Golem项目根目录创建
inst/extdata/文件夹(若不存在) - 将
data1.txt、data2.txt复制到inst/extdata/目录下 - 替换上述代码中的
your_golem_app为你的项目包名 - 测试读取:可以在
app_server.R或模块中添加测试代码验证
# 示例:读取TXT文件(根据实际分隔符调整sep参数) project_info <- read.table(path_to_data1, header = TRUE, sep = "\t") print(project_info)
内容的提问来源于stack exchange,提问作者GaB
相关产品推荐
相关产品推荐

