2013-01-21 12 views
39

Ich versuche, eine CSV von Github in R zu lesen:Lesen Sie eine CSV von Github in R

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

aber das gibt mir:

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

Ich versuchte ?read.csv, ?download.file, getURL (die nur seltsames HTML zurückgegeben hat, sowie die data import manual, aber immer noch nicht verstehen, wie es funktioniert.

Was mache ich falsch?

Antwort

80

Versuchen Sie folgende:

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

Sie haben zwei Probleme:

  1. Sie die Verknüpfung nicht auf die "rohe" Datei , aber Githubs Anzeige verion (besuchen Sie die URL für https: \ raw.github.com .... csv, um den Unterschied zwischen derzu sehenund die display version).
  2. https ist ein Problem für R in vielen Fällen, so dass Sie ein Paket wie RCurl verwenden müssen, um es zu umgehen. In einigen Fällen (nicht mit Github) können Sie einfach https durch http ersetzen und die Dinge funktionieren, so dass Sie immer zuerst ausprobieren können, aber ich finde RCurl zuverlässig und nicht zu viel zusätzliche Eingabe.
+5

Wie lösen Sie auf? Fehler in der Funktion (Typ, msg, asError = TRUE): SSL-Zertifikat-Problem: nicht in der Lage, lokales Ausstellerzertifikat zu erhalten? –

+1

Kann auch als eine Zeile für Speicher-/Speicherplatzzwecke geschrieben werden: 'y <- read.csv (text = getURL (" https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv ")) ' – bjoseph

20

Aus der Dokumentation von url:

Beachten Sie, dass ‚https: //‘ Verbindungen werden nicht unterstützt (mit einigen Ausnahmen unter Windows).

Also das Problem ist, dass R Verbindungen zu https URLs nicht erlaubt.

können Sie verwenden download.file mit curl:

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

Hinweis: Ich verwende die rohe Verbindung. –

+2

+1 für Base R Lösung. –

+7

@DirkEddelbuettel obwohl es hängt davon ab, Curl installiert zu haben – hadley

13

Ich benutze R 3.0.2 und dieser Code macht den Job.

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

und dies auch

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

bearbeiten (Session)

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

Zitat von'? Url': Beachten Sie, dass das URL-Schema 'https: //' nur unter Windows unterstützt wird. – daroczig

+0

funktioniert für mich ändern 'https: //' für 'http: //' –

3

Dies ist, was ich habe rio ​​ für die Entwicklung zu helfen.Es ist im Grunde ein universelles Datenimport/-export-Paket, das HTTPS unterstützt/SSL und folgert den Dateityp aus seiner Ausdehnung, so dass Sie im Grunde alles, was mit einer Importfunktion zu lesen:

library("rio") 

Wenn Sie das „raw“ url greifen für Ihre CSV von Github, können Sie es eine Zeile mit import laden:

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

Das Ergebnis einer data.frame wird: die Realisierung

 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

Ich versuche dies und bekomme 'get_ext (Datei): Datei hat keine Erweiterung' – Adrian

+0

@Adrian Es gab einen kleinen Tippfehler in der neuesten Github-Version. Installieren Sie entweder die ältere Version von CRAN oder installieren Sie sie neu von Github und es sollte für Sie funktionieren. – Thomas

+0

Danke - Problem ist behoben. Ihre Lösung ist die einzige, die für mich funktioniert (Windows 8.1) – Adrian

3

, dass die Frage, sehr alt ist, Google es immer noch als Top-Ergebnis berichtet (zumindest für mich) so entschied ich mich für Jahr um die Antwort zu liefern 2015

Leute im Allgemeinen jetzt curl Paket migrieren (einschließlich der berühmten httr) als by r-bloggers beschrieben, die bietet folgende sehr einfache Lösung:

library(curl) 

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

Im Stil von akhmed dachte ich, ich würde die Antwort aktualisieren, da Sie jetzt einfach Hadleys readr Paket verwenden können. Nur eine Sache zu beachten: Sie müssen die URL der rohen Inhalt (siehe //raw.git... unten). Hier ist ein Beispiel:

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

Voilà!