download.file () в R має не нульовий статус виходу

Я намагаюся завантажити файл у R 3.0.1 (Windows 7):

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

Я перевірив як url ​​та мій зв'язок інтернету та вони здаються працювати тільки чудовий. Однак, я отримую це повідомлення:

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

Не вдається знайти допомогу в Інтернеті, хтось знає, як це виправити?

11
У вас є доступ до запису до папки призначення? Чи є диск повним?
додано Автор Hong Ooi, джерело
який вихід file.exists ("./ data") ?
додано Автор dickoa, джерело
Я запропонував рішення, але у мене немає доступу до віконної машини, щоб перевірити. Дайте мені знати, якщо він працює
додано Автор dickoa, джерело
Я не використовую Windows, але, на мою думку, проблема пов'язана з method = "curl" і видалити цей параметр і повторити спробу
додано Автор dickoa, джерело
Я отримую curl не знайдено в ubuntu
додано Автор Arun Raja, джерело
@ dickoa я зробив те ж саме, не додаючи завиток, і він працює нормально без нього. Хіба curl для Mac, а не для Windows?
додано Автор Pj_, джерело
TRUE . Дякуємо за dickoa.
додано Автор Renne007, джерело
Дякуємо за dickoa! Я зробив те, що ви сказали, і це те, що я отримую зараз: Помилка у файлі download.file (fileUrl, destfile = "./data/cameras.csv"): не може відкрити файл destfile './data/cameras.csv', причина 'Немає такого файлу або каталогу'
додано Автор Renne007, джерело

13 Відповіді

Проте не зрозуміло, чому видалення 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")

Сподіваюся, що він працюватиме цього разу

14
додано
Велике спасибі, замінивши "https" на "http", здається, працює!
додано Автор Renne007, джерело

Відповідь @dickoa, ймовірно, працює, але я думаю, що головна проблема полягає в тому, що ви використовуєте https непотрібно. Я думаю, що це працює:

# Note the http instead of https
file<-'http://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD'
read.csv(file)
7
додано
@GiuseppeR Ви маєте рацію. Відповідь dickoa, безумовно, краща. Я також не розумію, чому видалення методу method = 'curl' не працювало для Renne007. Напевно, якась дивна проксі.
додано Автор nograpes, джерело
-1, тому що я думаю, що ця відповідь не дає рішення, коли https є єдиним доступним протоколом. Звичайно, що вищезгаданий файл CSV подається як у http , так і у https , але це не завжди так, і ця відповідь не узагальнюється.
додано Автор Giuseppe Romagnuolo, джерело

Try another method: ..., method = "libcurl")

3
додано
Це не дає відповіді на це питання. Щоб критикувати або просити роз'яснення від автора, залиште коментар нижче своєї публікації - ви завжди можете прокоментувати свої власні повідомлення, і як тільки у вас буде достатньо репутацію ви зможете коментувати будь-яку публікацію .
додано Автор eirikir, джерело
Ось доказ: "R 3.2 містить два нових способи завантаження (" libcurl "і" wininet "), які підтримують з'єднання HTTPS. Ми рекомендуємо використовувати ці нові методи під час роботи під R 3.2." Дізнайтеся більше тут: support.rstudio. com/hc/en-us/articles/& hellip;
додано Автор Denis Rasulev, джерело
На жаль, це дає відповідь на запитання! Питання було "як це виправити?", Так що відповідь "спробувати використовувати інший метод. Якщо автор питання буде використовувати" libcurl "замість" curl "він не отримає попереджувального повідомлення.
додано Автор Denis Rasulev, джерело

Використовуйте setInternet2 перед завантаженням. це працювало для мене.

setInternet2 (використовуйте = T)

file <- "URL"

download.file (файл, destfile = "./data/cameras.csv")

3
додано

Це працює!

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

2
додано
Ласкаво просимо до переповнення стека! Будь ласка, спробуйте розібратися у відповіді. Просто розміщення блоку коду без будь-якого пояснення або контексту не є хорошим. Додатково розглянемо, чи містить ваша відповідь будь-яку інформацію, яка ще не міститься в жодній іншій відповіді.
додано Автор Xaver Kapeller, джерело
Також ви опублікували таку саму відповідь на інше запитання: Посилання на запитання . Яка ваша аргументація? Ви вже отримали зворотній зв'язок з вашою попередньою відповіддю, що це не дуже високої якості.
додано Автор Xaver Kapeller, джерело
Не використовуйте посилання як відповіді. Тому що, якщо ланка зламалася, то не вдається отримати відповідь.
додано Автор Harshana Narangoda, джерело

fileUrl1 <- "https://... xyz.csv"

download.file(fileUrl1, destfile="./data/xyz.csv", method="curl")

Використовуйте наступне (http замість https у 1-му рядку та у другому рядку вилучіть mehod = "curl")

fileUrl1 <- "http://... xyz.csv"
download.file(fileUrl1, destfile="./data/xyz.csv")

спробуйте це, ви можете завантажити файл csv

2
додано

@dickoa: З огляду на те, що ви отримуєте "TRUE", коли ви робите:

file.exists("./data")

Я припускаю, що ви написали спочатку:

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

перед тим, як виконати спільний код, щоб завантажити csv. Однак це створює файл "data", а не каталог. Таким чином, перед вашим кодом R слід записати наступне:

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

Після цього я вважаю, що ваш код повинен працювати нормально. Сподіваюся, що це допомагає.

2
додано

Це просто сталося зі мною. Щоб працювати, потрібно лише позбутися " s " у " https ", а також не вказати метод = curl '. Я тільки починаю так не поняла як це працює, але hey це робить роботу.

1
додано

Коли ви називаєте download.file() , це не створює для вас каталог.
Замість цього потрібно створити дійсний каталог для створення файлу.
Я припускаю, що ви ще не створили папку з назвою data .

Сподіваюся, що це допомагає.

1
додано

Я знайшов це працює після пропускаючи ssl в https тобто

NatGas <- "http://d396qusza40orc.cloudfront.net/getdata%2Fdata%2FDATA.gov_NGAP.xlsx"

а потім встановіть метод на "авто"

download.file (NatGas, destfile = "./TidyData/NatGas.xlsx",method =" auto ", mode =" wb ")

1
додано

Я спробував два способи завантаження одного файлу:

  1. Download the package "downloader" using install.packages("downloader") and then load the package using require(downloader) command. After this, use the command: download(fileurl,"./data/camera.csv",mode="wb")

  2. The other method is:

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

і збережіть файл data.frame , використовуючи метод write.csv , щоб зберегти файл.

0
додано

Я виявив, що мені потрібно було фактично завантажити curl з сайту haxx , а потім додати його розташування до шляху у змінних системного середовища. Після цього

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

команда працювала нормально. Це було на Windows 7, 64-бітної машині.

0
додано

Спробуйте змінити рядок з "method = curl" на "method = internal"

If you want to use the curl method, you need to install the curl library onto your computer, at http://curl.haxx.se/

0
додано