求助:如何在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
相关产品推荐
相关产品推荐

