R将csv文件从FTP服务器导入数据帧

时间:2019-01-23 18:17:17

标签: r import ftp

我正在尝试从ftp服务器将csv文件导入到R。
最好将文件导入到dataframe中。 我只想从ftp服务器导入特定文件,而不是所有文件。
我的问题始于尝试仅导入一个文件:

url <- "ftp:servername.de/"  
download.file(url, "testdata.csv")

我收到此错误消息:

try URL 'ftp://servername/'
Fehler in download.file(url, "testdata") : 
can not open 'ftp://servername.de/' 
Additional Warning
In download.file(url, "tesdata.csv") :
URL 'ftp://servername/': status was 'Couldn't connect to server'

我尝试的另一种方法是:

url <- "ftp://servername.de/"
userpwd <- "a:n"
filenames <- getURL(url, userpwd = userpwd
                ,ftp.use.epsv = FALSE, dirlistonly = TRUE
                ) 

在这里,我不了解如何将文件导入R对象。 此外,最好能获得有关如何使用压缩数据而不是csv-data(格式:.gz)

处理此过程的线索。

1 个答案:

答案 0 :(得分:1)

使用curl库提取目录列表

library(curl)
url = "ftp://ftp.pride.ebi.ac.uk/pride/data/archive/2015/11/PXD000299/"
h = new_handle(dirlistonly=TRUE)
con = curl(url, "r", h)
tbl = read.table(con, stringsAsFactors=TRUE, fill=TRUE)
close(con)
head(tbl)
                                                 V1
1  12-0210_Druart_Uterus_J0N-Co_1a_ORBI856.raw.mzML
2  12-0210_Druart_Uterus_J0N-Co_2a_ORBI857.raw.mzML
3  12-0210_Druart_Uterus_J0N-Co_3a_ORBI858.raw.mzML
4 12-0210_Druart_Uterus_J10N-Co_1a_ORBI859.raw.mzML
5 12-0210_Druart_Uterus_J10N-Co_2a_ORBI860.raw.mzML
6 12-0210_Druart_Uterus_J10N-Co_3a_ORBI861.raw.mzML
Paste the relevant ones on to the url and use
urls <- paste0(url, tbl[1:5,1])
fls = basename(urls)
curl_fetch_disk(urls[1], fls[1])

参考:

Downloading files from ftp with R