部署读取外部CSV的R Shiny应用时路径错误问题咨询
解决Shiny App部署到shinyapps.io的路径问题
先搞懂「项目目录」是什么
你提到的项目目录,就是你的Shiny应用所有文件所在的根文件夹——也就是你deployApp里指定的C:/Users/mark_/Documents/simple_RShiny_files/surplus10。当你部署应用时,shinyapps.io会把这个文件夹里的所有内容(包括子文件夹data)完整上传到服务器,服务器只会识别这个目录内部的相对路径,而你本地的绝对路径(比如C:/Users/...)在服务器上根本不存在,这就是为什么部署后找不到文件。
读取CSV文件的正确路径
把app.R第4行的绝对路径改成相对路径就可以了。因为你的CSV文件在项目目录下的data子文件夹里,直接从项目目录出发写路径:
policy.data <- read.csv('data/policy.outputs_June6_2020.csv', header = TRUE, stringsAsFactors = FALSE)
这样不管是在本地运行,还是部署到服务器,程序都会自动从当前应用的根目录下找data文件夹里的CSV,不会再出现路径错误。
deployApp语句的路径选择
你现在用的deployApp('C:/Users/mark_/Documents/simple_RShiny_files/surplus10')是正确的,因为这就是你的项目目录。不过更省心的方式是先切换到项目目录,再直接部署:
library(rsconnect) # 先切换到项目目录 setwd('C:/Users/mark_/Documents/simple_RShiny_files/surplus10') # 直接部署,无需指定路径 deployApp()
这样可以避免手动输入路径时的拼写错误。
额外验证步骤(避免踩坑)
修改路径后,先在本地验证一下:打开R控制台,切换到项目目录,运行read.csv('data/policy.outputs_June6_2020.csv'),确认能正常加载数据,再执行部署操作,这样能提前排除本地的路径问题。
内容的提问来源于stack exchange,提问作者Mark Miller
相关产品推荐
相关产品推荐

