2016-09-26 7 views
0

Я новый пользователь R. Я пытаюсь загрузить 7.000 файлов (формат .nc) с ftp-сервера (который я получил от пользователя и пароля). На веб-сайте каждый файл является ссылкой для загрузки. Я хотел бы загрузить все файлы (.nc).R Загрузка нескольких файлов с FTP с помощью Rcurl

Я благодарю всех, кто может помочь мне запустить эти задания в R. Просто пример того, что я пытался сделать, используя Rcurl и цикл, и сообщает мне: не удается загрузить все файлы.

library(RCurl) 

url<- "ftp://ftp.my.link.fr/1234/" 
userpwd <- userpwd="user:password" 
destination <- "/Users/ME/Documents" 
filenames <- getURL(url, userpwd="user:password", 
ftp.use.epsv = FALSE, dirlistonly = TRUE) 

for(i in seq_along(url)){ 
    download.file(url[i], destination[i], mode="wb") 
} 

как я могу это сделать?

ответ

0

Первое, что вы увидите, это то, что файлы в вашем каталоге, то есть объект filenames, будут указаны как одна длинная строка. Для того, чтобы получить объект имен всех файлов в качестве вектора символов, вы можете попробовать:

files <- unlist(strsplit(filenames, '\n')) 

С этого момента, это просто вопрос перекручивание через все файлы в каталоге. Я рекомендую вам использовать пакет curl, а не Rcurl, для загрузки файлов, так как проще предоставить полную информацию для каждого запроса на загрузку.

library(curl) 
    h <- new_handle() 
    handle_setopt(h, userpwd = "user:pwd") 

, а затем

lapply(files, function(filename){ 
    curl_download(paste(url, filename, sep = ""), destfile = filename, handle = h) 
    }) 
+0

Привет Мохит, спасибо за вашу помощь. Я сделал то, что ты сказал мне. Однако есть и другой тип ошибки. ... Ошибка в curl_download (вставка (url, files [i], sep = ""), destfile = files [i],: FTP: не удалось получить (RETR failed) указанный файл – Gustavo

+0

hey @Gustavo, I «Не совсем уверен, почему эта ошибка наступила, цикл for работал для меня, но теперь я получаю ту же ошибку, что и вы упомянули. Можете ли вы использовать функцию lapply и посмотреть, работает ли она для вас? – rangeelo