You need to enable JavaScript to run this app. Shiny部署加载SBO RDS对象报外部指针无效的解决方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

Shiny部署加载SBO RDS对象报外部指针无效的解决方法咨询

问题1:保存的corpus_train SBO对象是否符合部署要求

不符合。sbo_predictor类对象包含C语言层面的外部指针,基础saveRDS()函数仅能序列化R层面的对象数据,无法持久化内存中的指针地址。本地读取RDS时处于生成该对象的同一会话,指针仍有效,因此运行正常,但部署到Shiny服务器属于全新R运行环境,读取RDS后恢复的指针指向无效内存地址,就会触发你收到的报错。

问题2:保障Shiny正确读取文件、顺利部署运行的方案

按以下步骤修改操作流程即可:

  • 本地生成corpus_train对象后,不要使用saveRDS()存储,改用sbo包专属的持久化方法:
sbo::save_predictor(corpus_train, file = "corpus_train_app")

该函数会自动存储预测器的全部必要信息,无需手动添加.RDS后缀,执行后会生成一组关联文件。

  • 修改global.R中的加载代码,将readRDS()替换为sbo包配套的加载方法:
library(sbo) 
library(shiny) 
corpus_train <- sbo::load_predictor("./corpus_train_app")
  • 上传应用时,把sbo::save_predictor()生成的所有关联文件,连同global.R、server.R、ui.R一同上传,同时确认Shiny服务器上安装的sbo包版本与本地开发所用版本一致,避免版本兼容性问题。

内容的提问来源于stack exchange,提问作者TheMonk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 00:45:03