Gibt es einen vordefinierten Speicherort, an dem ein R-Paket zwischengespeicherte Daten speichern könnte? Die Daten sollten über Sitzungen hinweg bestehen bleiben. Ich habe darüber nachgedacht, ein Unterverzeichnis von ${R_LIBS_USER}/package_name
zu erstellen, aber ich bin mir nicht sicher, ob dies portabel ist und ob dies "erlaubt" ist, wenn mein Paket systemweit installiert ist.Gibt es einen dauerhaften Speicherort, der immer beschreibbar ist, der als Datencache von einem Paket verwendet werden kann?
Die Idee ist folgende: Erstellen Sie ein R-Skript mydata.R
im data
Unterverzeichnis des Pakets, das durch den Aufruf data(mydata)
ausgeführt werden würde (entsprechend der Dokumentation von data()
). Dieses Skript würde die Daten aus dem Internet laden und zwischenspeichern, wenn es zuvor noch nicht zwischengespeichert wurde. (Wenn die Daten bereits zwischengespeichert wurden, wird der Cache verwendet.) Außerdem wird eine Funktion bereitgestellt, die den Cache ungültig macht und/oder überprüft, ob eine neuere Version der Daten online verfügbar ist.
Dies ist aus der Dokumentation von data()
:
, die derzeit vier Formate von Datendateien werden unterstützt:
Dateien mit der Endung '.R' oder '.r' Quelle ist() d in, wobei das R-Arbeitsverzeichnis vorübergehend in das Verzeichnis mit der entsprechenden Datei geändert wurde. (Daten stellt sicher, dass die utils-Paket angebracht ist, falls es über utils :: Daten ausgeführt worden war.)
...
der Tat eine Datei fortytwo.R
im data
Unterverzeichnis zu schaffen eine Verpackung mit folgendem Inhalt:
fortytwo = data.frame(answer=42)
und dann data(fortytwo)
Ausführung erzeugt einen Datenrahmen variable fortytwo
. Nun ist die Frage: Wo würde fortytwo.R
die Daten zwischenspeichern, wenn es schwer zu berechnen wäre?
BEARBEITEN: Ich denke über das Erstellen von zwei Paketen: Ein "Daten" -Paket, das die Daten bereitstellt, und ein "Code" -Paket, das darauf funktioniert. Die Frage betrifft das "Daten" -Paket: Wo kann es Dateien in einem Benutzerspeicher speichern, so dass es in R-Sitzungen persistent ist und von verschiedenen R-Projekten aus zugänglich ist?
Bezug: Package that downloads data from the internet during installation.
Sie möchten vielleicht einen Blick auf https://github.com/hadley/rappdirs werfen - es ist ein Port von AppDirs, einer Python-Bibliothek, die versucht, die richtigen Verzeichnisse auf betriebssystemspezifische Weise zu finden. – hadley
Ich versuche nur zu verdeutlichen: Meinst du, wo können Daten gespeichert werden, nachdem sie von einem R-Skript verarbeitet wurden? Mit anderen Worten, geht es in Ihrer Frage wirklich um die Daten aus dem Datenpaket oder um die Daten, die als Ergebnis einer Verarbeitung generiert wurden? Es klingt * wie letzteres. – A5C1D2H2I1M1N2O1R2T1
@hadley: Gibt es eine Chance, dass dies in naher Zukunft auf CRAN erscheinen wird? Wenn es keine R-spezifische Möglichkeit dafür gibt (wie in ein Unterverzeichnis von $ {R_USER_LIBS}), verwende ich gerne dein Paket. – krlmlr