Ruft ein bestimmtes Objekt aus der Rdata-Datei ab
Ich habe eine Rdata
- Datei, die verschiedene Objekte:
New.Rdata
|_ Object 1 (e.g. data.frame)
|_ Object 2 (e.g. matrix)
|_...
|_ Object n
Natürlich kann ich das laden der Daten-frame mit load('New.Rdata')
jedoch ist es eine intelligente Art und Weise zu laden, nur ein bestimmtes Objekt aus dieser Datei und verwerfen die anderen?
InformationsquelleAutor der Frage Seb | 2012-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
.RData-Dateien nicht über einen index (der Inhalt serialisiert wird als eine große pairlist). Sie konnte hacken, einen Weg zu gehen durch die pairlist und weisen nur Einträge, die Sie mögen, aber es ist nicht einfach, denn man kann es nicht auf die R-Ebene.
Jedoch, können Sie einfach konvertieren Sie die .RData-Datei in ein lazy-load-Datenbank, die serialisiert jeden Eintrag separat und erstellt einen index. Das schöne daran ist, dass die be wird on-demand:
Laden der DB dann nur zu Lasten der index, aber nicht der Inhalt. Die Inhalte geladen werden, wie Sie verwendet werden:
Genau wie mit
load()
können Sie angeben, eine Umgebung zu laden, so dass Sie nicht brauchen, um verschmutzen der globalen Arbeitsbereich etc.InformationsquelleAutor der Antwort Simon Urbanek
Können Sie
attach
eher alsload
wird befestigen Sie den Daten-Objekt an den Pfad suchen, dann können Sie kopieren ein Objekt, das Sie interessiert sind, und trennen Sie die .Rdata-Objekt.Diese noch lädt alles, aber ist einfacher zu arbeiten, als mit dem laden alles in das global workspace (evtl. überschreiben Dinge, die Sie nicht wollen überschrieben) und dann loszuwerden, alles, was Sie nicht wollen.
InformationsquelleAutor der Antwort Greg Snow
Simon Urbanek die Antwort ist sehr, sehr schön. Ein Nachteil ist, dass es scheint nicht zu funktionieren, wenn ein Objekt gespeichert werden, ist zu groß:
Ich vermute, dass dies durch eine Einschränkung der aktuellen Implementierung von R (ich habe 2.15.2) eher als der physische Arbeitsspeicher ausgeführt und tauschen. Die spart Paket möglicherweise eine alternative für einige Anwendungen, aber.
InformationsquelleAutor der Antwort Mars