如何读取flexsurv生存模型txt输出为R对象用于绘图与预测
你当前用capture.output()保存的txt仅为模型打印的纯文本内容,不包含支撑绘图、预测功能的底层参数结构,无法逆向恢复为可用的模型对象,需更换为R内置的序列化方案,完全适配你服务器无法导出原始数据、本地需要复用模型的需求。
服务器端操作(仅导出模型,不含原始数据)
你拟合完模型后,先清除模型对象中存储的原始数据,再用saveRDS()序列化导出即可:
library(data.table) library(flexsurv) # 原有拟合逻辑 data(pbc, package="randomForestSRC") data <- as.data.table(na.omit(pbc)) data[, years := days/365.25] fit <- flexsurvspline(Surv(years, status) ~ albumin, data=data, k=1, scale='hazard') # 移除模型内存储的原始数据,避免导出敏感数据 fit$data <- NULL fit$y <- NULL # 导出模型为rds文件,直接从服务器下载该文件即可 saveRDS(fit, file = "fit_model.rds")
本地端操作(导入模型直接使用)
将服务器导出的fit_model.rds传到本地后,直接用readRDS()读取即可,读取后的模型和服务器上拟合的原始模型功能完全一致,无需重新运行拟合逻辑:
library(flexsurv) # 读取导出的模型文件 fit2 <- readRDS("fit_model.rds") ndata <- data.frame(albumin = 3) # 正常调用绘图功能 plot(fit2, est=FALSE, ci=FALSE, col.obs = 'white') lines(fit2, newdata = ndata, ci=FALSE, col = 'green') # 正常调用预测功能 prob=summary(fit2,type='survival',newdata=ndata, t=12) prob
该方案是R生态中跨设备复用模型的标准解法,导出的rds文件体积小,且不会泄露原始数据,完全适配你在shinyapp中调用模型的需求。
内容的提问来源于stack exchange,提问作者Amer
相关产品推荐
相关产品推荐

