shinyapps.io发布Shiny应用时路径读取错误问题如何解决
解决方案
核心问题说明
shinyapps.io为云端服务器,无法访问你本地设备的C盘路径,你写死的本地绝对路径C:/Users/MK0008/OneDrive - GROUP/Reports/Aug 2021/report_rating.csv在云端环境不存在,因此触发文件找不到的报错。
具体操作步骤
- 第一步:调整项目文件结构
将你的Shiny应用代码(app.R/ ui.R+server.R)和用到的report_rating.csv放在同一个文件夹下,该文件夹作为Shiny应用的根目录。 - 第二步:修改文件读取代码
删除原代码中的绝对路径,直接使用相对路径读取数据:
*如果数据集体积较大,推荐提前在本地完成数据预处理,将清洗后的结果保存为RDS格式上传,既减少云端计算压力,也能提升应用加载速度:df <- read.csv("report_rating.csv")
本地提前运行:
应用代码修改为直接读取预处理后的RDS文件,删掉原应用代码里的本地数据读取、预处理逻辑:# 本地预处理代码 df <- read.csv("C:/Users/MK0008/OneDrive - GROUP/Reports/Aug 2021/report_rating.csv") df1 <- df df1$Competency.Self.Rating <- revalue(df$Competency.Self.Rating, c("Unrated"=100)) df1[df1 == ""] <- NA df1$Competency.Self.Rating[is.na(df1$Competency.Self.Rating)] <- 100 df1$Competency.Official.Rating <- revalue(df$Competency.Official.Rating, c("Unrated"=100)) report <- with(df1, table(Competency.Official.Rating, Competency.Name)) report <- as.data.frame(report) report_stats <- report %>% arrange(Competency.Name, desc(Competency.Official.Rating)) %>% group_by(Competency.Name) %>% mutate(cumsum = cumsum(Freq)) # 保存预处理结果 saveRDS(report, "report.RDS") saveRDS(report_stats, "report_stats.RDS")report <- readRDS("report.RDS") report_stats <- readRDS("report_stats.RDS") - 第三步:发布时勾选对应数据文件
在RStudio的shinyapps.io发布弹窗中,确认除了应用代码外,report_rating.csv(或你保存的RDS文件)已被勾选纳入上传列表,避免漏传文件。 - 第四步:删除代码中所有
setwd()相关逻辑,所有文件路径均使用相对于应用根目录的相对路径即可。
内容的提问来源于stack exchange,提问作者MariKo
相关产品推荐
相关产品推荐

