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

求助:如何在R中读取Open Science Framework存储的.rds文件?

如何在R中打开Open Science Framework上的.rds文件?

我尝试打开存储在Open Science Framework上的一个.rds文件(标识为4z7mb),希望在R中打开它,但尝试了三种方法都失败了,请问有人成功打开过这类文件吗?

尝试1:使用osfr包的函数

library(osfr)
test <- osf_retrieve_file("4z7mb") %>% osf_download()

报错信息:

Error: Authentication credentials were not provided.
HTTP status code 401.

尝试2:参考ResearchGate上的方法

require("httr")
url <- "https://osf.io/4z7mb//?action=download"
filename <- "AtlanticSalmonMeanForkLength.rds"
GET(url, write_disk(filename, overwrite = TRUE))
test <- readRDS(filename)

报错信息:

Error in readRDS(filename) : unknown input format

尝试3:参考Stack Overflow上的类似问答

osfURL <- ("https://osf.io/4z7mb//?action=download")
download.file(osfURL,"AtlanticSalmonMeanForkLength.rds", method = "curl")
test <- readRDS("AtlanticSalmonMeanForkLength.rds")

报错信息:

Error in readRDS("AtlanticSalmonMeanForkLength.rds") :
unknown input format


解决方法

1. 修正URL后直接下载(核心问题:错误的URL导致下载了网页而非文件)

你尝试的方法2和3中,URL包含双斜杠(//?action=download),这会导致下载的是OSF的网页而非实际的.rds文件,因此readRDS无法识别格式。使用修正后的URL即可解决:

# 方法A:使用download.file
osfURL <- "https://osf.io/4z7mb/download"
download.file(osfURL, "AtlanticSalmonMeanForkLength.rds", method = "auto")
test <- readRDS("AtlanticSalmonMeanForkLength.rds")

# 方法B:使用httr包
library(httr)
url <- "https://osf.io/4z7mb/download"
filename <- "AtlanticSalmonMeanForkLength.rds"
GET(url, write_disk(filename, overwrite = TRUE))
test <- readRDS(filename)

2. 解决osfr包的认证问题

如果文件需要授权访问,或者osfr包版本过低导致认证报错,按以下步骤处理:

  • 更新osfr到最新版本:
    install.packages("osfr")
    
  • 完成OSF认证(按提示登录你的OSF账号):
    library(osfr)
    osf_auth()
    
  • 重新下载文件:
    test_file <- osf_retrieve_file("4z7mb") %>% osf_download(path = ".", overwrite = TRUE)
    test <- readRDS(test_file$local_path)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:21:03