2013-01-21 17 views
39

Sto cercando di leggere un file CSV da github in R:Leggere un file CSV da github in R

latent.growth.data <- read.csv("https://github.com/aronlindberg/latent_growth_classes/blob/master/LGC_data.csv") 

Tuttavia, questo mi dà:

Error in file(file, "rt") : cannot open the connection 
In addition: Warning message: 
In file(file, "rt") : unsupported URL scheme 

ho provato ?read.csv, ?download.file, getURL (che ha restituito solo HTML strano), come pure lo data import manual, ma ancora non riesco a capire come farlo funzionare.

Cosa sto sbagliando?

risposta

80

Prova questo:

library(RCurl) 
x <- getURL("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv") 
y <- read.csv(text = x) 

si hanno due problemi:

  1. Non sei il collegamento al file "raw" , ma la verion di visualizzazione di Github (visita l'URL per https: \ raw.github.com .... csv per vedere la differenza tra raw version e display version).
  2. https è un problema per R in molti casi, quindi è necessario utilizzare un pacchetto come RCurl per aggirare il problema. In alcuni casi (non con Github, però) puoi semplicemente sostituire https con http e le cose si risolvono, quindi puoi sempre provarlo prima, ma trovo che usare RCurl è affidabile e non troppo digitato in più.
+5

Come si risolve 'Errore nella funzione (tipo, msg, aserrro = TRUE): Problema del certificato SSL: impossibile ottenere il certificato emittente locale? –

+1

Può anche essere scritto come una riga per scopi memoria/spazio: 'y <- read.csv (text = getURL (" https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv ")) ' – bjoseph

20

Dalla documentazione di url:

Si noti che ‘https: //’ i collegamenti non sono supportate (con alcune eccezioni su Windows).

Quindi il problema è che R non consente connessioni a https URL.

È possibile utilizzare download.file con curl:

download.file("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv", 
    destfile = "/tmp/test.csv", method = "curl") 
+0

Nota: utilizzo il link non elaborato. –

+2

+1 per la soluzione di base R. –

+7

@DirkEddelbuettel sebbene dipenda dall'avvio di Curl – hadley

13

Sto usando R 3.0.2 e questo codice fa il lavoro.

urlfile<-'https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv' 
dsin<-read.csv(urlfile) 

e questo pure

urlfile<-'https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv' 
dsin<-read.csv(url(urlfile)) 

modifica (sessionInfo)

R version 3.0.2 (2013-09-25) 
Platform: i386-w64-mingw32/i386 (32-bit) 

locale: 
[1] LC_COLLATE=Polish_Poland.1250 LC_CTYPE=Polish_Poland.1250 
[3] LC_MONETARY=Polish_Poland.1250 LC_NUMERIC=C     
[5] LC_TIME=Polish_Poland.1250  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] tools_3.0.2 
+1

Citazione da'? Url': nota che lo schema URL 'https: //' non è supportato tranne su Windows. – daroczig

+0

ha funzionato per me cambiando 'https: //' per 'http: //' –

3

Questo è quello che ho aiutato sviluppare rio ​​ per.E 'fondamentalmente un pacchetto di importazione/esportazione dei dati universale che supporta HTTPS/SSL e ne deduce il tipo di file dalla sua estensione, permettendo così di leggere in fondo tutto ciò utilizzando la funzione uno di importazione:

library("rio") 

Se si afferra l'url "grezzo" per il vostro CSV da Github, è possibile caricare una linea con import:

import("https://raw.githubusercontent.com/aronlindberg/latent_growth_classes/master/LGC_data.csv") 

il risultato è un data.frame:

 top100_repository_name month monthly_increase monthly_begin_at monthly_end_with 
1     Bukkit 2012-03    9    431    440 
2     Bukkit 2012-04    19    438    457 
3     Bukkit 2012-05    19    455    474 
4     Bukkit 2012-06    18    475    493 
5     Bukkit 2012-07    15    492    507 
6     Bukkit 2012-08    50    506    556 
... 
+0

provo e ottengo 'get_ext (file): il file non ha estensione' – Adrian

+0

@Adrian C'era un piccolo refuso nella versione più recente di Github. Installa la versione precedente di CRAN o reinstallalo da Github e dovrebbe funzionare per te. – Thomas

+0

Grazie - problema risolto. La tua soluzione è l'unica che ha funzionato per me (Windows 8.1) – Adrian

3

Rendendosi conto che la questione è molto vecchio, Google ancora segnalato come un buon risultato (almeno per me) e quindi ho deciso di fornire la risposta per l'anno 2015.

gente sono generalmente migrando subito a curl pacchetto (compresa la famosa httr), come descritto by r-bloggers che offre la seguente soluzione molto semplice:

library(curl) 

x <- read.csv(curl("https://raw.githubusercontent.com/trinker/dummy/master/data/gcircles.csv")) 
4

In stile simile a akhmed, ho pensato di aggiornare la risposta, poiché ora puoi semplicemente utilizzare il pacchetto readr di Hadley. Solo una cosa da notare: avrete bisogno che l'url sia il grezzo contenuto (vedere lo //raw.git... di seguito). Ecco un esempio:

library(readr) 
data <- read_csv("https://raw.githubusercontent.com/RobertMyles/Bayesian-Ideal-Point-IRT-Models/master/Senate_Example.csv") 

Voilà!

Problemi correlati