Ich arbeite an einigen Tutorials in R. Jeder R-Code ist in einem bestimmten Ordner enthalten. Dort befinden sich Datendateien und andere Dateien. Ich möchte die .r
Datei öffnen und als Quelle verwenden, damit ich das Arbeitsverzeichnis in Rstudio nicht wie unten gezeigt ändern muss:
Gibt es eine Möglichkeit, mein Arbeitsverzeichnis automatisch in R anzugeben?
r
automation
working-directory
Stat-R
quelle
quelle
?setwd
?getwd
load
.rdata-Dateien im selben Ordner haben, nichtsource
mit dem Arbeitsverzeichnis, das auf den Pfad der Quelldatei festgelegt ist.Antworten:
Um den Speicherort eines Skripts zu ermitteln, das bezogen wird, können Sie
utils::getSrcDirectory
oder verwendenutils::getSrcFilename
. Das Ändern des Arbeitsverzeichnisses in das der aktuellen Datei kann also folgendermaßen erfolgen:Dies gilt nicht in RStudio funktionieren , wenn Sie starten Sie den Code anstatt Quelle es ing. Dafür müssen Sie verwenden
rstudioapi::getActiveDocumentContext
.Für diese zweite Lösung müssen Sie natürlich RStudio als IDE verwenden.
quelle
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
getActiveDocumentContext()
in der Konsole in RStudio der Pfad als gemeldet wird''
. Wenn Sie jedoch die Codezeile im Editorabschnitt ausführen, wird sie wie erwartet ausgeführt. Dies kann @Andru 's Kommentarrstudioapi
Pakets verwenden. Versuchen Sie, auf die neueste Version zu aktualisieren.Ich weiß, dass diese Frage veraltet ist, aber ich habe auch nach einer Lösung dafür gesucht, und Google listet diese ganz oben auf:
Fügen Sie das irgendwo in die Datei ein (am besten jedoch am Anfang), damit das wd entsprechend dieser Datei geändert wird.
Den Kommentaren zufolge funktioniert dies möglicherweise nicht auf jeder Plattform (Windows scheint zu funktionieren, Linux / Mac für einige). Beachten Sie, dass diese Lösung zum "Sourcing" der Dateien dient und nicht unbedingt zum Ausführen von Chunks in dieser Datei.
Siehe auch Dateiname und Pfad der Quelldatei abrufen
quelle
Error in dirname(parent.frame(2)$ofile) : a character vector argument expected
funktioniert für mich, aber wenn Sie rstudioapi nicht verwenden möchten und sich nicht in einem Projekt befinden, können Sie das Symbol ~ in Ihrem Pfad verwenden. Das Symbol ~ bezieht sich auf das Standard-RStudio-Arbeitsverzeichnis (zumindest unter Windows).
Wenn Ihr RStudio-Arbeitsverzeichnis "D: / Documents" lautet,
setwd("~/proyect1")
lautet es setwd ("D: / Documents / proyect1").Sobald Sie dies festgelegt haben, können Sie zu einem Unterverzeichnis navigieren :
read.csv("DATA/mydata.csv")
. Ist das gleiche wieread.csv("D:/Documents/proyect1/DATA/mydata.csv")
.Wenn Sie zu einem übergeordneten Ordner navigieren möchten, können Sie verwenden
"../"
. Beispielsweise:read.csv("../olddata/DATA/mydata.csv")
das ist das gleiche wieread.csv("D:/Documents/oldata/DATA/mydata.csv")
Dies ist der beste Weg für mich, Skripte zu codieren, egal welchen Computer Sie verwenden.
quelle
Diese Antwort kann helfen:
Ich fand es in: https://support.rstudio.com/hc/communities/public/questions/200895567-can-user-obtain-the-path-of-current-Project-s-directory-
Die Antwort von BumbleBee (mit parent.frame statt sys.frame) hat bei mir nicht funktioniert, ich bekomme immer eine Fehlermeldung.
quelle
Für rstudio können Sie Ihr Arbeitsverzeichnis mit rstudioapi automatisch wie folgt auf das Skriptverzeichnis einstellen :
Dies funktioniert beim Ausführen oder Quellen Ihrer Datei.
Sie müssen zuerst das Paket rstudioapi installieren. Beachten Sie, dass ich den Pfad drucke, um 100% sicher zu sein, dass ich am richtigen Ort bin. Dies ist jedoch optional.
quelle
Die Lösung
Ich arbeite nicht für mich.
Ich verwende einen Brute-Force-Algorithmus, funktioniert aber:
Einfacher beim Durchsuchen eines Verzeichnisses:
quelle
Wenn Sie unter Linux arbeiten, können Sie Folgendes versuchen:
setwd(system("pwd", intern = T) )
Für mich geht das.
quelle
pwd
funktioniert auch in PowerShell (das derzeit unter Windows als Standard-Shell gilt), wo es ein Alias für istGet-Location
.Ich habe nur nach einer Lösung für dieses Problem gesucht und bin auf diese Seite gekommen. Ich weiß, dass es veraltet ist, aber die vorherigen Lösungen waren unbefriedigend oder haben bei mir nicht funktioniert. Hier ist meine Arbeit bei Interesse.
quelle
setwd( dirname(filepath) )
?Mir ist klar, dass dies ein alter Thread ist, aber ich hatte ein ähnliches Problem mit der Notwendigkeit, das Arbeitsverzeichnis festzulegen, und konnte keine der Lösungen für mich zum Laufen bringen. Folgendes hat funktioniert, falls später jemand anderes darauf stößt:
Es ist ein bisschen kompliziert, aber im Grunde werden Systembefehle verwendet, um das Arbeitsverzeichnis abzurufen und in dummyfile.txt zu speichern. Dann liest R diese Datei mit data.table :: fread. Der Rest bereinigt nur das, was in die Datei gedruckt wurde, so dass nur noch der Verzeichnispfad übrig bleibt.
Ich musste R in einem Cluster ausführen, sodass ich nicht wissen konnte, in welchem Verzeichnis ich landen würde (Jobs erhalten eine Nummer und einen Rechenknoten). Das hat den Trick für mich getan.
quelle
Ich verstehe, dass dies veraltet ist, aber ich konnte die früheren Antworten nicht sehr zufriedenstellend zum Laufen bringen, deshalb wollte ich meine Methode einbringen, falls jemand anderes auf den gleichen Fehler stößt, der in den Kommentaren zu BumbleBees Antwort erwähnt wurde.
Meins basiert auf einem einfachen Systembefehl. Alles, was Sie der Funktion geben, ist der Name Ihres Skripts:
Die Ausgabe der Funktion würde so aussehen
"/Users/you/Path/To/Script"
. Hoffe, das hilft allen anderen, die stecken geblieben sind.quelle
Das
here
Paket enthält diehere()
Funktion, die Ihr Projektstammverzeichnis basierend auf einigen Heuristiken zurückgibt.Nicht die perfekte Lösung, da es den Speicherort des Skripts nicht findet, aber für einige Zwecke ausreicht, dachte ich, ich würde es hier einfügen.
quelle
here::set_here()
in der Quelle genutzt werden.Die meisten GUIs gehen davon aus, dass, wenn Sie sich in einem Verzeichnis befinden und eine .R-Datei "öffnen", doppelklicken oder auf andere Weise versuchen, sie auszuführen, das Verzeichnis, in dem sie sich befindet, das Arbeitsverzeichnis ist, sofern nicht anders angegeben. Die Mac-GUI bietet eine Methode zum Ändern des Standardverhaltens, das im Startfenster der Einstellungen geändert werden kann, das Sie in einer laufenden Sitzung festgelegt haben und das beim nächsten "Start" wirksam wird. Sie sollten sich auch Folgendes ansehen:
In der RStudio-Dokumentation heißt es:
"Beim Start über eine Dateizuordnung setzt RStudio das Arbeitsverzeichnis automatisch auf das Verzeichnis der geöffneten Datei." Die Standardeinstellung ist, dass RStudio als Handler für .R-Dateien registriert wird. Es wird jedoch auch die Möglichkeit erwähnt, eine Standard- "Zuordnung" zu RStudio für .Rdata- und .R-Erweiterungen festzulegen. Ob der Status "Handler" und der Status "Zuordnung" unter Linux identisch sind, kann ich nicht sagen.
http://www.rstudio.com/ide/docs/using/workspaces
quelle
funktioniert auch nicht für mich, aber das Folgende (wie in https://stackoverflow.com/a/35842176/992088 vorgeschlagen ) funktioniert für mich in Ubuntu 14.04
quelle
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
auch in Ubuntu 14.04Wenn Sie die UTF-8-Codierung verwenden:
Sie müssen das Paket rstudioapi installieren, wenn Sie es noch nicht getan haben.
quelle
Hier ist eine andere Möglichkeit:
quelle