2016-09-26 3 views
0

저는 새로운 R 사용자입니다. 7.000 파일 (.nc 형식)을 FTP 서버에서 다운로드하려고합니다 (사용자 및 암호에서 가져옴). 웹 사이트에서 각 파일은 다운로드 링크입니다. 모든 파일 (.nc)을 다운로드하고 싶습니다.R Rcurl을 사용하여 FTP에서 여러 파일 다운로드

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

가장 먼저 볼 수있는 것은 디렉토리에있는 파일, 즉 파일 이름이이고 하나의 긴 문자열로 나열된다는 것입니다. 문자 벡터로 모든 파일 이름의 객체를 얻으려면, 당신은 시도 할 수 있습니다, 그것은 단순히 디렉토리에있는 모든 파일을 통해 반복의 문제

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

에 여기에서. Rcurl이 아닌 curl 패키지를 사용하여 파일을 다운로드하는 것이 좋습니다. 모든 다운로드 요청에 대한 인증 정보를 제공하기가 쉽기 때문입니다.

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

안녕 Mohit, 당신의 도움을 주셔서 감사합니다. 네가 나에게 말한대로했다. 그러나 다른 유형의 오류가 있습니다. ... curl_download에서 오류가 발생했습니다 (paste (url, files [i], sep = ""), destfile = files [i], : FTP : 지정된 파일을 검색하지 못했습니다 (RETR 실패). – Gustavo

+0

안녕하세요 @Gustavo, 저는 왜 그 오류가 오는지 잘 모르겠지만, for 루프는 나에게 도움이되었지만 지금은 언급 한 것과 같은 오류가 발생합니다. lapply 함수를 사용하고 그것이 작동 하는지를 볼 수 있습니까? – rangeelo

관련 문제