2015-04-16 41 views
0

我試圖直接從服務器讀取固定寬度的文件,而無需下載和寫入文件並解析它。如果我做類似使用read.fwf()與HTTPS

> read.fwf(url("http://..."),columns) 

然後我得到我想要的迴應。但是,使用HTTPS服務器,我收到了這個迴應。

> read.fwf(url("https://..."),columns) 
Error in url("https://...") : 
    https:// URLs are not supported 

使用其他的格式,我已經能夠使用類似方法=「捲曲」,但這似乎並沒有與read.fwf工作()。

我嘗試過的另一種方法是使用getURL()將文件下載到內存中,然後使用read.csv(text = data)對CSV文件進行解析,但read.fwf()doesn'似乎支持這種方法。

+3

基地'read.fwf'實際上是打開一個文件,並寫入新的副本作爲分隔符的文件,然後讀取該翻譯版本。它總是會寫入本地光盤。從新的[readr](https://github.com/hadley/readr)包中嘗試'read_fwf()'。 – MrFlick

+0

所以我真的沒有保存任何東西,而是直接下載文件,然後將其讀回內存中? – aqua

+2

現在使用標準的read.fwf。但是read_fwf可能會好很多。改爲使用它。 – MrFlick

回答

1

看一看的curl包:

捲曲()函數提供了一個簡易替換爲基本URL()具有更好的性能和支持HTTP 2.0,SSL(HTTPS:// ftps://),gzip,deflate和其他libcurl好東西。

嘗試:

library(curl) 
read.fwf(curl("https://..."),columns)