Das Ziel besteht darin, eine verschachtelte Liste, die manchmal fehlende Datensätze enthält, in einen Datenrahmen umzuwandeln. Ein Beispiel für die Struktur bei fehlenden Datensätzen ist:
%Vor% Wenn keine Datensätze fehlen, kann die Liste mit data.frame(do.call(rbind.data.frame, mylist))
in einen Datenrahmen konvertiert werden. Wenn Datensätze fehlen, führt dies jedoch zu einer Spaltenübereinstimmung. Ich weiß, dass es Funktionen gibt, um Datenrahmen von nicht übereinstimmenden Spalten zusammenzuführen, aber ich muss noch einen finden, der auf Listen angewendet werden kann. Das ideale Ergebnis würde 2 mit NA für alle Variablen aufzeichnen. Hoffe auf etwas Hilfe.
Bearbeiten, um dput(mylist)
hinzuzufügen:
Sie könnten eine Liste von data.frames erstellen:
%Vor%Dann verwenden Sie eine der folgenden:
%Vor%oder je schneller
%Vor% Im Fall von dplyr::rbind_all
bin ich überrascht, dass es ""
anstelle von NA
für fehlende Daten verwendet. Wenn Sie stringsAsFactors = FALSE
entfernen, erhalten Sie NA
, aber auf Kosten einer Warnung ... Also wäre suppressWarnings(rbind_all(lapply(mylist, data.frame)))
eine hässliche aber schnelle Lösung.
Ich habe gerade eine Lösung für diese Frage , die hier anwendbar ist, also werde ich es auch hier zur Verfügung stellen:
%Vor%Ausführung:
%Vor% Meine Funktion ist mächtiger als data.table::rbindlist()
ab 1.9.6, da sie eine beliebige Anzahl von Verschachtelungsebenen und unterschiedliche Vektorlängen über Zweige hinweg verarbeiten kann. In der verknüpften Frage flacht meine Funktion die Liste des OPs korrekt zu einem data.frame ab, aber data.table::rbindlist()
schlägt mit "Error in rbindlist(jsonRList, fill = T) : Column 4 of item 16 is length 2, inconsistent with first column of that item which is length 1. rbind/rbindlist doesn't recycle as it already expects each item to be a uniform list, data.frame or data.table"
fehl.
Tags und Links r dataframe rbind nested-lists