Wenn Sie eine Variable in einer R-Datendatei mit speichern save
, wird sie unter dem Namen gespeichert, den sie in der Sitzung hatte, in der sie gespeichert wurde. Wenn ich es später aus einer anderen Sitzung lade, wird es mit demselben Namen geladen, den das Ladeskript möglicherweise nicht kennen kann. Dieser Name könnte eine vorhandene gleichnamige Variable in der Ladesitzung überschreiben. Gibt es eine Möglichkeit, ein Objekt sicher aus einer Datendatei in einen angegebenen Variablennamen zu laden, ohne dass das Risiko besteht, dass vorhandene Variablen beschädigt werden?
Beispiel:
Speichersitzung:
x = 5
save(x, file="x.Rda")
Ladesitzung:
x = 7
load("x.Rda")
print(x) # This will print 5. Oops.
Wie ich möchte, dass es funktioniert:
x = 7
y = load_object_from_file("x.Rda")
print(x) # should print 7
print(y) # should print 5
r
variable-names
rdata
Ryan C. Thompson
quelle
quelle
saveRDS
undreadRDS
, entsprechend, speichern und alle Attribute des Objekts wiederherzustellen, darunter auch solche , die von einer Anwendung erstellt (viaattr
)? Ich habe versucht, diesen Ansatz anstelle vonsave
und zu verwendenload
, um eine Problemumgehung für mein Problem zu finden. Es scheint jedoch nicht der Fall zu sein, es sei denn, ich mache etwas falsch: stackoverflow.com/questions/23701195/… .Ich benutze folgendes:
quelle
Sie können eine neue Umgebung erstellen, die .rda-Datei in diese Umgebung laden und das Objekt von dort abrufen. Dies bringt jedoch einige Einschränkungen mit sich: Entweder wissen Sie, wie der ursprüngliche Name Ihres Objekts lautet, oder es ist nur ein Objekt in der Datei gespeichert.
Diese Funktion gibt ein Objekt zurück, das aus einer bereitgestellten .rda-Datei geladen wurde. Wenn die Datei mehr als ein Objekt enthält, wird ein beliebiges zurückgegeben.
quelle
new.env
wirklich notwendig? Bietet der Funktionsaufruf selbst keine temporäre Umgebung?Sie könnten auch etwas ausprobieren wie:
quelle
Falls jemand dies mit einer einfachen Quelldatei anstelle einer gespeicherten Rdata / RDS / Rda-Datei tun möchte, ist die Lösung der von @Hong Ooi bereitgestellten sehr ähnlich
Drucke:
Und in der separaten Quelldatei TestSourceFile.R
Auch diese Lösung funktioniert nur, wenn genau eine Datei vorhanden ist. Wenn mehrere vorhanden sind, wird nur eine davon zurückgegeben (wahrscheinlich die erste, aber das ist nicht garantiert).
quelle
Ich erweitere die Antwort von @ricardo, um die Auswahl einer bestimmten Variablen zu ermöglichen, wenn die
.Rdata
Datei mehrere Variablen enthält (da meine Credits zum Bearbeiten einer Antwort niedrig sind). Nach dem Auflisten der in der.Rdata
Datei enthaltenen Variablen werden einige Zeilen zum Lesen von Benutzereingaben hinzugefügt .quelle
Rdata-Datei mit einem Objekt
quelle