Umwandlung einer Liste von Daten-frames in einzelne data frames in R
Ich habe die Suche hoch und niedrig für das, was ich denke, ist eine einfache Lösung.
Habe ich einen großen Daten-frame, der ich-split-Faktoren.
eqRegions <- split(eqDataAll, eqDataAll$SeismicRegion)
Dieser jetzt erzeugt ein list-Objekt des Daten-frames die von region zu region; es sind insgesamt 8. Ich möchte eine Schleife durch die Liste, um die einzelnen Daten-frames mit einem anderen Namen.
Kann ich Folgendes ausführen konvertieren Sie Objekte in der Liste zu einzelnen Daten-frames, aber ich denke, dass es ein loop-Mechanismus, der ist schnell, wenn ich viele Faktoren.
testRegion1 <- eqRegions[[1]]
testRegion3 <- eqRegions[[3]]
Kann ich manuell durchführen, die oben und man kann es schön, aber wenn ich habe vielen Regionen ist es nicht effizient. Was ich gerne tun würde, ist das äquivalent zu den folgenden:
for (i in 1:length(eqRegions)) {
region[i] <- as.data.frame(eqRegions[[i]])
}
Ich denke, der Schlüssel ist, um zu definieren, region, bevor die Schleife, aber es halten Sie überschreiben sich selbst und nicht Inkrementieren. Vielen Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
list2env(eqRegions,envir=.GlobalEnv)
Sollte diese Arbeit. Die Namen der Daten.frames erstellt werden gleich die Namen innerhalb
eqDataAll$SeismicRegion
. Wie auch immer, diese Praxis durch das Auffüllen der einzelnen Daten.frames ist nicht zu empfehlen. Je mehr ich die Arbeit mit R, den mehr ich Liebe/verwenden Liste.Bearbeiten: Verwenden Sie
list2env
Lösung gepostet. Nicht bewusst warlist2env
Funktion.attach(eqRegions)
sollte genug sein. Aber ich empfehle die Arbeit mit Ihnen inlist
form mitlapply
. Ich garantiere, es wird Ergebnis in einfacher code.ls
, aber in dem Beispiel in Ihrem Kommentar, die Sie bekommen können8
mit `8
` .s <- split(mtcars, mtcars$cyl); attach(s)
. Mitls()
doesnt show up, und unter Verwendung'8'
nicht das Letzte Tabelle (es funktioniert, wenn ich hatte, als cyl Ebenen lettters[1:3]Als eine alternative, eine "best practice" beim teilen von Daten ist die Daten zu halten.frames in einer Liste, wie Sie
split
. Um es zu verarbeiten, verwenden Sie entweder eine dersapply
oderlapply
(viele Faktoren) und erfassen Sie die Ausgabe wieder in eine Liste. Zum Beispiel:Funktioniert dies nur, wenn Sie tun, die gleiche Sache zu jeder Daten.frame.
Wenn Sie wirklich müssen, brechen Sie aus und befassen sich mit den einzelnen Daten.Rahmen einzigartig ist, dann @MatthewPlourde und @MaratTalipov Antworten arbeiten.
list2env gibt Daten-frames, um die Globale Umwelt, deren Namen sind die Namen in der Liste. Eine alternative, wenn Sie wollen, um die gleichen Namen für die Daten-frames, aber identifiziert habe ich aus einer Schleife:
Diese kann langsam sein, wenn die Länge, wenn die Liste zu lang wird.