2017-07-17 5 views
0

Ich bin neu in R, und ich praktiziere Umwandlung von JSon zu R, dann zu CSV oder Excel. Ich habe den gesamten Magic the Gathering Kartensatz von https://mtgjson.com/ zum Üben heruntergeladen. Ich habe diesen Code verwendet, um ihn in eine "Liste" zu bringen, aber ich möchte ihn in einem Datenrahmen oder einer Tabelle haben.Konvertieren von JSON nach Excel mit R

json_file<- rjson::fromJSON(file= "C://Users/ahalman/Desktop/AllCards.json") 

Ich habe versucht:

as.data.frame(json_file) 

aber ich erhalte eine Fehlermeldung, die besagt: „Fehler in (function (..., row.names = NULL, check.rows = FALSCH, überprüfen. Namen = WAHR,: Argumente implizieren unterschiedliche Anzahl von Zeilen: 13, 10, 14, 15, 11, 12, 16, 19, 9, 8, 6, 7, 18, 4, 17, 21, 23, 20, 22 "

Ich dachte, dies würde es beheben, wie ich es auf einer anderen Stack Overflow Seite sah, aber was auch immer es tut, es hat nicht funktioniert:

json_file <- lapply(json_file, function(x) { 
    x[sapply(x, is.null)] <- NA 
    unlist(x) 
    }) 

Jede Hilfe wäre großartig. Sobald es in einem Dataframe-Format ist, habe ich das!

+1

Ich bin eigentlich mit diesem gleichen Daten arbeiten. Unglücklicherweise für dich ist es nicht trivial, es tabellarisch zu machen. Mein Ansatz war zwei Tabellen zu erstellen: eine für die Karten, die andere für die Sets. Es beinhaltet die freie Verwendung von 'lapply()' und 'vapply()'. –

+0

@NathanWerth Ich denke, ich habe es meistens mit meiner Antwort unten herausgefunden. Hör zu. Benötigt nur ein bisschen Reinigung. Ich habe das "Stringi" -Paket verwendet. – Alex

+0

Scheint, als ob meine Arbeit mtgjson.com blockiert, also muss ich es versuchen, wenn ich nach Hause komme. Und entschuldige, dass du den Teil vermisst hast, in dem du nur mit den Kartendaten zu tun hast. –

Antwort

0

Ich glaube, das ist die Antwort:

df<- stringi::stri_list2matrix(json_file, byrow = TRUE) 

Dies funktioniert für die ersten paar Spalten, aber die Dinge beginnen purzeln zu bekommen. Keine Ahnung warum.

Ich glaube, ich es endlich herausfinden:

newdf<- stringi::stri_list2matrix(json_file, byrow = TRUE, fill = "")