почему method = 'curl' не работает в download.file в R? - PullRequest
0 голосов
/ 11 января 2020

Я работаю в RI, хочу загрузить файл Excel из Интернета и использую команду download.file:

download.file(url = "http://www.jaredlander.com/data/ExcelExample.xlsx",
          destfile="data/ExcelExample.xlsx",method='curl')

Но когда я пытаюсь запустить код, он отображает ошибку как:

download.file (url = "http://www.jaredlander.com/data/ExcelExample.xlsx", + destfile = "data / ExcelExample.xlsx", method = 'curl') Ошибка в download.file (url = "http://www.jaredlander.com/data/ExcelExample.xlsx",: вызов 'curl' имеет ненулевой статус выхода.

1 Ответ

0 голосов
/ 11 января 2020

Ссылка перенаправляется через ответ http 301 на адрес https, который method = "curl", похоже, не нравится. Методы "internal" и "wget" тоже не работают.

Я использую Windows, и мне кажется, что я вообще не могу указать какой-либо метод - в соответствии с руководством по умолчанию установлено значение "auto", которое, по-видимому, выбирает наиболее подходящий для вас метод. В моем случае это похоже на тот же результат, что и method = "wininet", хотя method = "libcurl" тоже работает.

Если вы используете не Windows, попробуйте удалить method="curl", и оно должно работать нормально. В противном случае попробуйте method = "libcurl".

Вы можете увидеть, что я могу воспроизвести вашу ошибку, даже если у меня есть допустимый путь к файлу.

download.file(url = "http://www.jaredlander.com/data/ExcelExample.xlsx", 
              path.expand("~/jared.xlsx"), method = "curl")
# Error in download.file(url = "http://www.jaredlander.com/data/ExcelExample.xlsx",  : 
#   'curl' call had nonzero exit status

Но я могу заставить его работать, просто удалив " метод "всего".

download.file(url = "http://www.jaredlander.com/data/ExcelExample.xlsx", 
              path.expand("~/jared.xlsx"))
# trying URL 'https://www.jaredlander.com/data/ExcelExample.xlsx'
# Content type 'application/vnd.openxmlformats' length 2045364 bytes (2.0 MB)
# downloaded 2.0 MB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...