Как скачать .gz файлы с FTP сервера в R? - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь скачать все файлы .gz по этой ссылке: FTP: //ftp.ncbi.nih.gov/snp/organisms/human_9606_b151_GRCh38p7/BED/

Пока я пробовал это, и я не получаю никаких результатов:

require(RCurl)

url= "ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606_b151_GRCh38p7/BED/"
filenames = getURL(url, ftp.use.epsv = FALSE, dirlistonly = TRUE)
filenames <- strsplit(filenames, "\r\n")
filenames = unlist(filenames)

Я получаю эту ошибку:

Error in function (type, msg, asError = TRUE)  : 
  Operation timed out after 300552 milliseconds with 0 out of 0 bytes  received

Может кто-нибудь помочь с этим?

Спасибо

EDIT: Я попытался запустить с именами файлов, предоставленными мне ниже, поэтому в моем скрипте r у меня есть:

require(RCurl)
my_url <-"ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606_b151_GRCh38p7/BED/"

my_filenames= c("bed_chr_11.bed.gz", ..."bed_chr_9.bed.gz.md5")

my_filenames <- strsplit(my_filenames, "\r\n")
my_filenames = unlist(my_filenames)

for(my_file in my_filenames){
download.file(paste0(my_url, my_file), destfile =  file.path('/mydir', my_file))
}

И когда я запускаю скрипт, я получаю следующие предупреждения:

trying URL 'ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606_b151_GRCh38p7/BED/bed_chr_11.bed.gz'

Ошибка в download.file (paste0 (my_url, my_file), destfile = file.path ("/ mydir",: не удается открыть URL ' ftp: //ftp.ncbi.nih.gov/snp/organisms/human_9606_b151_GRCh38p7/BED/bed_chr_11.bed.gz' Дополнительно: предупреждающее сообщение: В файле download.file (paste0 (my_url, my_file), destfile = file.path ("/ mydir",: URL ' ftp: //ftp.ncbi.nih.gov/snp/organisms/human_9606_b151_GRCh38p7/BED/bed_chr_11.bed.gz': статус был «Превышено время ожидания» Исполнение остановлено

1 Ответ

0 голосов
/ 05 января 2019

Имена файлов, к которым вы пытаетесь получить доступ,

filenames <- c("bed_chr_11.bed.gz", "bed_chr_11.bed.gz.md5", "bed_chr_12.bed.gz", 
"bed_chr_12.bed.gz.md5", "bed_chr_13.bed.gz", "bed_chr_13.bed.gz.md5", 
"bed_chr_14.bed.gz", "bed_chr_14.bed.gz.md5", "bed_chr_15.bed.gz", 
"bed_chr_15.bed.gz.md5", "bed_chr_16.bed.gz", "bed_chr_16.bed.gz.md5", 
"bed_chr_17.bed.gz", "bed_chr_17.bed.gz.md5", "bed_chr_18.bed.gz", 
"bed_chr_18.bed.gz.md5", "bed_chr_19.bed.gz", "bed_chr_19.bed.gz.md5", 
"bed_chr_20.bed.gz", "bed_chr_20.bed.gz.md5", "bed_chr_21.bed.gz", 
"bed_chr_21.bed.gz.md5", "bed_chr_22.bed.gz", "bed_chr_22.bed.gz.md5", 
"bed_chr_AltOnly.bed.gz", "bed_chr_AltOnly.bed.gz.md5", "bed_chr_MT.bed.gz", 
"bed_chr_MT.bed.gz.md5", "bed_chr_Multi.bed.gz", "bed_chr_Multi.bed.gz.md5", 
"bed_chr_NotOn.bed.gz", "bed_chr_NotOn.bed.gz.md5", "bed_chr_PAR.bed.gz", 
"bed_chr_PAR.bed.gz.md5", "bed_chr_Un.bed.gz", "bed_chr_Un.bed.gz.md5", 
"bed_chr_X.bed.gz", "bed_chr_X.bed.gz.md5", "bed_chr_Y.bed.gz", 
"bed_chr_Y.bed.gz.md5", "bed_chr_1.bed.gz", "bed_chr_1.bed.gz.md5", 
"bed_chr_10.bed.gz", "bed_chr_10.bed.gz.md5", "bed_chr_2.bed.gz", 
"bed_chr_2.bed.gz.md5", "bed_chr_3.bed.gz", "bed_chr_3.bed.gz.md5", 
"bed_chr_4.bed.gz", "bed_chr_4.bed.gz.md5", "bed_chr_5.bed.gz", 
"bed_chr_5.bed.gz.md5", "bed_chr_6.bed.gz", "bed_chr_6.bed.gz.md5", 
"bed_chr_7.bed.gz", "bed_chr_7.bed.gz.md5", "bed_chr_8.bed.gz", 
"bed_chr_8.bed.gz.md5", "bed_chr_9.bed.gz", "bed_chr_9.bed.gz.md5"
)

Файлы большие, поэтому я не проверял весь этот цикл, но это сработало, по крайней мере, для первого файла. Добавьте это в конец вашего кода.

my_url <- 'ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606_b151_GRCh38p7/BED/'
for(my_file in filenames){ # loop over the files
  # download each file, saving in a directory that you need to create on your own computer
  download.file(paste0(my_url, my_file), destfile = file.path('c:/users/josep/Documents/', my_file))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...