在shinyapps.io部署的Shiny应用读取远程.RDS文件报错求助
解决Shiny应用从Dropbox读取RDS模型的问题
Hey Matt, 我来帮你搞定这个部署时的模型读取问题!
你遇到错误的核心原因
你用的Dropbox链接参数dl=0是用来打开文件的网页预览页面,而不是直接返回RDS文件的二进制内容。readRDS只能解析RDS格式的文件,自然会报错“unknown input”。
快速修复Dropbox链接
只需要把链接里的dl=0改成dl=1,让Dropbox直接返回文件内容:
test <- readRDS(gzcon(url("https://www.dropbox.com/s/p3bk57sqvlra1ze/strModel.RDS?dl=1")))
记得确保你的Dropbox文件已经设置为公开可访问,不然shinyapps.io的服务器没法访问到文件。
其他免费托管方案推荐
除了Dropbox,还有几个更稳定的免费托管选项:
- Google Drive:先把模型文件设为“任何人可查看”,然后将分享链接从
https://drive.google.com/file/d/XXX/view?usp=sharing改成https://drive.google.com/uc?export=download&id=XXX,再用同样的readRDS(gzcon(url(...)))方式读取。 - GitHub Gist:把RDS文件上传到Gist,点击文件旁的「Raw」按钮获取原始链接,直接用
readRDS(url("原始链接"))读取,这个方式能和代码托管联动,还能追踪版本,非常方便。
更优的方案:直接打包模型到应用
其实最可靠的方式是把RDS模型文件放在你的Shiny应用目录里,部署时和app代码一起上传到shinyapps.io。这样完全不需要依赖外部托管服务,避免了链接失效、访问延迟的问题。只要你的模型文件不是特别大(免费版shinyapps.io支持几百MB以内的文件),这绝对是首选:
# 假设strModel.RDS和app.R在同一个目录下 test <- readRDS("strModel.RDS")
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

