You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用httr直接从谷歌云端硬盘加载RDS文件至R环境?

直接从谷歌云端硬盘加载RDS文件到R环境的解决方案

问题根源

你遇到的bad 'file' argument错误,本质是Google Drive网页端的export=download链接返回的是HTML跳转页面而非RDS二进制文件(即使认证后,这类网页链接仍可能触发安全验证或重定向,导致响应内容为HTML),所以readRDS无法解析非RDS格式的内容。

推荐解决方案:使用googledrive的drive_read_raw(无需本地下载)

googledrive包提供了drive_read_raw函数,可直接将文件内容读入内存为raw格式,无需保存到本地文件,完美契合你的需求:

library(googledrive)

# 服务账号认证(如果用用户账号登录,直接用drive_auth()即可)
drive_auth(path = "你的服务账号JSON文件路径.json")

# 通过文件ID读取RDS内容到内存
rds_raw_content <- drive_read_raw(as_id("1ZvCT4Ook2yUkPQj4-w7qAfGr7k4ZWt1p"))
df <- readRDS(rds_raw_content)

备选方案:使用Google Drive API的直接下载链接

如果坚持用httr手动实现,需改用Google Drive API的官方文件内容获取链接(而非网页端的uc链接),同时确保认证和请求头正确:

library(httr)
library(googledrive)

# 服务账号认证
drive_auth(path = "你的服务账号JSON文件路径.json")
auth_token <- drive_token()

file_id <- "1ZvCT4Ook2yUkPQj4-w7qAfGr7k4ZWt1p"
# Drive API获取文件内容的官方链接
api_download_url <- paste0("https://www.googleapis.com/drive/v3/files/", file_id, "?alt=media")

# 发送请求并获取二进制内容
response <- GET(api_download_url, 
               config = auth_token,
               accept("application/octet-stream"))

# 检查请求是否成功
stop_for_status(response)

# 解析RDS内容
df <- readRDS(content(response, type = "raw"))

关键说明

  • 网页端的drive.google.com/uc链接面向浏览器交互,会包含重定向、安全验证逻辑,不适合程序直接调用;
  • alt=media是Drive API获取文件原始内容的标准参数,能稳定返回二进制文件;
  • accept("application/octet-stream")请求头明确告知服务器返回二进制数据,避免返回HTML。

内容的提问来源于stack exchange,提问作者H. berg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:55:23