如何加载通过REST API获取的原始.rda格式模型文件到R内存中
解决方案
核心逻辑是通过rawConnection()将你拿到的rda二进制内容包装为可读二进制连接,直接传给load()函数即可,无需将文件写入本地磁盘。
场景1:通过httr包发起GET请求获取rda文件
直接在请求时获取二进制内容再加载,代码示例:
library(httr) # 发起GET请求 resp <- GET("你的REST API接口地址") # 校验请求成功 stopifnot(resp$status_code == 200) # 提取响应中的raw类型二进制内容 rda_content <- content(resp, as = "raw") # 包装为二进制连接并加载模型 con <- rawConnection(rda_content, "rb") load(con) close(con)
场景2:已拿到rda对应的二进制raw对象
假设你拿到的二进制对象变量名为rda_bin,直接按以下步骤操作:
# 构建二进制连接 con <- rawConnection(rda_bin, "rb") # 加载模型到当前工作环境 load(con) # 关闭连接 close(con)
常用优化提示
如果你不想让加载的模型变量直接污染当前工作环境,可以指定加载到自定义环境中,方便统一管理:
# 创建空环境存储模型 model_env <- new.env() con <- rawConnection(rda_bin, "rb") load(con, envir = model_env) close(con) # 查看加载得到的所有模型/变量名 ls(model_env) # 取出对应变量,比如你知道模型存在model变量下 my_model <- model_env$model
内容的提问来源于stack exchange,提问作者ricniet
相关产品推荐
相关产品推荐

