Ich suche nach einer Möglichkeit, eine Variable unter einem anderen Namen "on the fly" in R save()
(mit mir Bär! Ich bin mir ziemlich sicher, das ist kein Duplikat...). Hier ist ein Beispiel dafür, was ich mag würde erreichen:r - Umbenennen R Objekt während speichern() - ing
AAA = 1
BBB = 2
XXX = 3
YYY = 4
save(AAA=XXX, BBB=YYY, file="tmp.Rdat")
# does NOT save a variable AAA to file with value 3 in it, which is the aim...
Grundsätzlich möchte ich die save()
Funktion den Wert von XXX
nehmen und speichern Sie es unter einer Variablen in Datei AAA
benannt. Beachten Sie, dass dies keine Frage zum Umbenennen einer Variablen ist: Ich könnte natürlich die Variable XXX
vor dem Speichern umbenennen, z. AAA = XXX
und dann save(AAA, ..., file=...)
, aber das würde natürlich mit dem Wert von AAA
im Rest des Codes versauen.
Der offensichtliche Weg ist temporäre Variablen zu erstellen und dann die Werte wieder her:
AAA = 1
BBB = 2
XXX = 3
YYY = 4
AAAtmp = AAA; BBBtmp = BBB # record values of AAA, BBB
AAA = XXX; BBB = YYY
save(AAA, BBB, file="tmp.Rdat")
AAA = AAAtmp; BBB = BBBtmp # restore values of AAA, BBB
... aber jeder wird zustimmen, dass dies ziemlich chaotisch ist (vor allem mit viel mehr Variablen).
Das hat mich für eine Weile gestört, und mein Gefühl ist, dass die Funktion save()
kann nicht tun, was ich will. Ich denke also, ich muss meinen Code aktualisieren und den Weg einer anderen Speicherfunktion (z.B. saveRDS()
) gehen.
Danke für die Hilfe!
Können Sie erklären, warum Sie dies tun möchten? Es scheint, als wäre saveRDS wahrscheinlich besser geeignet für das, was Sie wollen ... – Dason
@Dason: kein Hauptgrund, nur so wie ich meine Sachen code: Manchmal muss ich eine Variable unter einem Namen speichern, der bereits im Arbeitsbereich existiert (Speichern Sie zB eine tmp-Variable und lassen Sie sie so aussehen, als wäre sie eine Nicht-TMP-Variable. Es ist ein paar Mal in der Vergangenheit und jedes Mal, wenn ich versuche herauszufinden, aber erfolglos. Also dieses Mal habe ich beschlossen, die Experten zu fragen ... :) –