web-dev-qa-db-fra.com

download.file () dans R a un statut de sortie non nul

J'essaie de télécharger un fichier dans 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")

J'ai vérifié à la fois l'URL et ma connexion Internet et ils semblent bien fonctionner. Cependant, je reçois ce message:

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

Vous ne trouvez aucune aide en ligne, tout le monde sait comment résoudre ce problème?

12
Renne007

La réponse de @dickoa fonctionne probablement, mais je pense que le problème majeur est que vous utilisez https sans nécessité. Je pense que cela fonctionne:

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

Je ne comprends toujours pas pourquoi la suppression de method = "curl" ne résout pas le problème. 

Une autre solution consiste à installer le paquetage downloader qui encapsule download.file et rend le processus de téléchargement plus facile et multiplate-forme (une fonction avec les mêmes paramètres pour tous les systèmes d'exploitation).

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")

J'espère que ça marchera cette fois

17
dickoa

Utilisez setInternet2 avant de télécharger. cela a fonctionné pour moi.

setInternet2 (utilisation = T)

fichier <- "URL"

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

3
user3824214

Essayez une autre méthode: ..., method = "libcurl")

3
Denis Rasulev

@ Dickoa: Étant donné que vous obtenez "VRAI" quand vous le faites: 

file.exists("./data")

Je suppose que vous avez écrit initialement: 

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

avant d’effectuer le code que vous avez partagé pour télécharger le fichier csv. Cependant, cela crée un fichier "data", pas un répertoire. Donc, ce qui suit devrait être écrit dans votre script R avant votre code:

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

Après cela, je pense que votre code devrait fonctionner correctement. J'espère que cela t'aides.

2
Diogo A.

Cela marche!

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

2
ronald

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

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

Utilisez ce qui suit (http au lieu de https dans la première ligne et dans la deuxième ligne, supprimez mehod = "curl")

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

essayez ceci, vous pouvez télécharger le fichier csv 

2
user3915636

J'ai trouvé cela fonctionne après en omettant le SSL dans https ie

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

puis définissez la méthode sur "auto"

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

1
R.Warner

Lorsque vous appelez download.file(), le répertoire ne sera pas créé pour vous.
Au lieu de cela, vous devez avoir un répertoire valide déjà créé pour créer le fichier.
Mon hypothèse est que vous n'avez pas encore créé le dossier appelé data.

J'espère que cela t'aides.

1
SalicBlu3

C'est seulement arrivé a moi. Pour que cela fonctionne, il vous suffit de vous débarrasser de 's' dans 'https' et de ne pas spécifier 'method = curl'. Je viens juste de commencer alors je ne sais pas du tout comment ça marche, mais bon, ça fait le travail.

1
Anderson

J'ai découvert que je devais télécharger curl à partir du site haxx puis ajouter son emplacement au chemin dans les variables d'environnement du système. Après cela le 

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

la commande a bien fonctionné. C'était sur un ordinateur Windows 7, 64 bits.

0
Simon Alexander

J'ai essayé deux méthodes pour télécharger le même fichier:

  1. Téléchargez le package "téléchargeur" ​​à l'aide de install.packages("downloader"), puis chargez-le à l'aide de la commande require(downloader). Après cela, utilisez la commande: download(fileurl,"./data/camera.csv",mode="wb")

  2. L'autre méthode est:

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

et enregistrez le fichier data.frame en utilisant la méthode write.csv pour enregistrer le fichier.

0
user3517973

Essayez de changer la ligne de "method = curl" en "method = internal"

Si vous souhaitez utiliser la méthode curl, vous devez installer la bibliothèque curl sur votre ordinateur à l’adresse http://curl.haxx.se/

0
thy