在OSF上下载CSV文件
我正在通过我在GitHub上的脚本,从一个公开的Open Science Framework(OSF)项目中下载一个.csv文件。我不想下载本地副本。
我根据查阅的若干网页,尝试了两种不同的URL选项来弄清楚这件事:
urlOSF <- "https://osf.io/dzr4e/files/74y5r"
urlOSF2 <- "https://osf.io/dzr4e/files/74y5r//?action=download"
我也尝试了几种不同的方式来导入数据,全部都没有成功:
# doesn't import any information from the csv
test <- read.csv(urlOSF)
test <- read.csv2(urlOSF, header = TRUE, na.strings = "NA")
# leads to errors and warnings
test <- read.csv(urlOSF2)
test <- read.csv2(urlOSF2, header = TRUE, na.strings = "NA")
Error in file(file, "rt") :
cannot open the connection to 'https://osf.io/dzr4e/files/74y5r//?action=download'
In addition: Warning message:
In file(file, "rt") :
cannot open URL 'https://osf.io/download/dzr4e/': HTTP status was '500 Internal Server Error'
# also leads to errors
library(osfr)
test <- osf_retrieve_file(urlOSF) %>%
osf_download()
test <- osf_retrieve_file(urlOSF2) %>%
osf_download()
Error in `stop_dl_conflict()`:
! Can't download file 'EasternCanadaAtlanticSalmonFecundity.csv' from OSF.
* Use the `conflicts` argument to avoid this error in the future.
Run `rlang::last_trace()` to see where the error occurred.
难道没有一种简单的方法吗?
解决方案
1) base R {utils}
Try this, i.e. https://osf.io/ +你的文件ID = 74y5r + /download
X <- read.csv("https://osf.io/74y5r/download")
一瞥
> str(X)
'data.frame': 5287 obs. of 21 variables:
$ DU : chr "DU16" "DU16" "DU16" "DU16" ...
$ RIVER_NO : int 19 19 19 19 19 19 19 19 19 19 ...
$ RIVER : chr "Miramichi River" "Miramichi River" "Miramichi River" "Miramichi River" ...
$ YEAR : int 1983 1983 1983 1983 1983 1983 1983 1983 1983 1983 ...
$ LATITUDE : num 46.9 46.9 46.9 46.9 46.9 ...
$ LONGITUDE : num -65.6 -65.6 -65.6 -65.6 -65.6 ...
$ EGG_COUNT : num 3735 2114 4939 5950 2347 ...
$ EGG_COUNT_COR : num 3735 2114 4939 5950 2347 ...
$ EGG_DIAM : num NA NA NA NA NA NA NA NA NA NA ...
$ EGG_DIAM_COR : num NA NA NA NA NA NA NA NA NA NA ...
$ STAGE_EGG_COUNT : chr "immature" "immature" "immature" "immature" ...
$ FORK_LENGTH : num 50.8 55 67.5 68.5 69 69 70 70 70.5 71 ...
$ SIZE : chr "small" "small" "large" "large" ...
$ RAGE : int NA 3 3 2 2 2 2 3 3 3 ...
$ LAST_SPAWN : chr NA "1" "C" "2" ...
$ FULTONS_K : num 1.297 0.956 1.04 1.089 1.245 ...
$ COLLECT_DOY : int 194 218 238 204 199 205 234 178 251 192 ...
$ SAMPLE_DOY : int 194 218 238 204 199 205 234 178 251 192 ...
$ STRIP_DOY : int NA NA NA NA NA NA NA NA NA NA ...
$ SAMPLE_DATE_RANGE: int 1 1 1 1 1 1 1 1 1 1 ...
$ CITATION : chr "Randall 1989" "Randall 1989" "Randall 1989" "Randall 1989" ...
2) {osfr}
不过,这会把文件 EasternCanadaAtlanticSalmonFecundity.csv 下载到给定的 path——从你的问题来看,你不想要这个。这里我使用工作目录,参见 ?osf_download。
如要获得更规范地使用 osfr,请参见 这个很棒的回答
library(osfr)
# file_id = An OSF identifier corresponding to an OSF user, project, component, or file
file_id <- "74y5r"
osf_retrieve_file(file_id) |>
osf_download(path = "~", progress = TRUE)
注意: 截至目前(01.05.2026),文件 https://osf.io/dzr4e/files/74y5r 已不再可用。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。