2013-06-25 121 views
11

我試圖下載中的R 3.0.1一個文件(Windows 7):download.file()中的R具有非零退出狀態

fileUrl <- "https://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD" 
    download.file(fileUrl, destfile="./data/cameras.csv", method="curl") 

我查了兩個網址和我的互聯網連接和他們似乎工作得很好。不過,我得到這個消息:

Warning message: 
    In download.file(fileUrl, destfile = "./data/cameras.csv", method = "curl") : 
    download had nonzero exit status 

找不到任何在線幫助,任何人都知道如何解決這一問題?

+6

我不使用Windows,但我認爲這個問題是關係到'方法=「捲曲」'刪除此參數,然後再試一次 – dickoa

+0

謝謝dickoa!我做了你所說的,這就是我現在得到的:'在download.file(fileUrl,destfile =「./data/cameras.csv」)中出錯: 無法打開destfile'./data/cameras.csv',原因'沒有這樣的文件或目錄'# – Renne007

+0

'file.exists(「./ data」)'的輸出是什麼? – dickoa

回答

7

@dickoa的答案可能有效,但我認爲主要問題是您不必要地使用https。我想這樣的作品:

# Note the http instead of https 
file<-'http://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD' 
read.csv(file) 
+3

-1,因爲我認爲這個答案不能解決什麼時候'https'是唯一可用的協議。上述CSV文件在'http'和'https'上都是純粹的巧合,但事實並非總是如此,而且這個答案沒有概括。 –

+0

@GiuseppeR你說得對。 dickoa的答案肯定更好。我也不明白爲什麼刪除'method ='curl''不適用於Renne007。可能是一些奇怪的代理東西。 – nograpes

14

還是不明白爲什麼刪除method = "curl"沒有解決問題。

另一種解決方案是安裝downloader包,其中包download.file,使下載過程變得更簡單和跨平臺

install.packages("downloader") 
fileUrl <- "https://data.baltimorecity.gov/api/views/dz54-2aru 
      /rows.csv?accessType=DOWNLOAD" 

require(downloader) 
download(fileUrl, "data/cameras.csv", mode = "wb") 

希望它會工作這段時間(與所有操作系統相同paramters一個功能)

+0

非常感謝你,用「http」替換「https」似乎工作! – Renne007

0

嘗試改變從「法=捲曲的」行「的方法=內部」

如果你想使用curl方法,你需要捲曲庫安裝到您的計算機,在http://curl.haxx.se/

0

我試着下載同一個文件的兩種方法:

  1. 下載包「下載器」使用install.packages("downloader"),然後加載封裝使用require(downloader)命令。在此之後,使用命令:download(fileurl,"./data/camera.csv",mode="wb")

  2. 另一種方法是:

    文件< - 'http://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD' read.csv(文件)

並保存使用write.csv方法data.frame文件保存文件。

2

This Works!

文件< - 'http://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD' download.file(文件,destfile = 「cameras.csv」)

+0

歡迎來到Stack Overflow!請儘量充實你的答案。只是在沒有任何解釋或上下文的情況下發布代碼塊並不好。此外,請考慮您的答案是否包含任何其他答案中未包含的信息。 –

+0

此外,你已經發布了完全相同的答案另一個問題:[鏈接到問題](http://stackoverflow.com/questions/22721819/download-file-fails-in-rstudio/23451776#23451776)。你背後的推理是什麼?您已收到您之前回答的反饋,說明質量不高。 –

+0

請勿使用鏈接作爲答案。因爲如果鏈接中斷,則無法訪問應答。 –

1

當你調用download.file(),它不會爲你創建的目錄。
相反,您需要爲其創建一個有效的目錄以創建該文件。
我的猜測是,您還沒有創建名爲data的文件夾。

希望這會有所幫助。

3

下載之前使用setInternet2。它爲我工作。

setInternet2(使用= T)

文件< - 「URL」

download.file(文件,destfile = 「./data/cameras.csv」)

2

fileUrl1 < - 「HTTPS:// ... xyz.csv」

download.file(fileUrl1,destfile = 「./數據/ xyz.csv」,方法= 「捲曲」)

使用以下(在1號線和2號中刪除行= mehod 「捲曲」 HTTPS HTTP代替)

fileUrl1 < - 「HTTP:// ... xyz.csv」
下載.file(fileUrl1,destfile = 「./數據/ xyz.csv」)

試試這個,你可以下載csv文件

2

@dickoa: 鑑於你得到 「真」 時,你這樣做:

file.exists("./data") 

我想你已經開始寫:

if (!file.exists("data")) { file.create("data") } 

執行代碼之前您共享下載CSV。但是,這會創建一個文件「數據」,而不是目錄。因此,在您的代碼之前,應在您的R腳本中編寫以下代碼:

if (!file.exists("data")) { dir.create("data") } 

之後,我相信您的代碼應該可以正常工作。希望這可以幫助。

0

我發現我必須從haxx網站下載curl,然後將其位置添加到系統環境變量中的路徑中。之後,

download.file(fileURL, destfile = "data/cameras.csv", method = "curl") 

命令工作正常。這是在Windows 7,64位機器上。

1

它只是發生在我身上。爲了使其正常工作,您只需要清除'https'中的's',並且也不要指定'method = curl'。我剛剛開始,所以不知道它是如何工作的,但嘿它能完成這項工作。

3

嘗試另一種方法:..., method = "libcurl")

+1

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 – eirikir

+0

對不起,但這確實提供了一個問題的答案!問題是「如何解決它?」,所以答案是「嘗試使用另一種方法。如果問題的作者將使用」libcurl「而不是」curl「,他將不會收到警告消息。 –

+1

這裏是證明: 「R 3.2包含兩種支持HTTPS連接的新下載方法(」libcurl「和」wininet「)。我們建議您在R 3.2下運行時使用這些新方法。「 請閱讀更多信息:https://support.rstudio.com/hc/en-us/articles/206827897-Secure-Package-Downloads-for-R –

相關問題