2013-06-26 14 views
17

Wie bekomme ich den Pfad zum übergeordneten Verzeichnis in R? Ich muss ein R-Skript schreiben, das die Eingabe von einem Verzeichnis im übergeordneten Verzeichnis übernimmt und Daten in ein anderes Verzeichnis im übergeordneten Ordner ausgibt. Also, wenn ich den Pfad zum übergeordneten Ordner finden könnte, könnte ich dies tun.Übergeordnetes Verzeichnis in R

Antwort

17

Ich nehme an, Sie meinen Eltern-Verzeichnis von R's Arbeitsverzeichnis?

Die einfachste Lösung ist wahrscheinlich wie folgt.

wd <- getwd() 
setwd("..") 
parent <- getwd() 
setwd(wd) 

Das spart das Arbeitsverzeichnis, ändert es seine Eltern, bekommt das Ergebnis in parent und setzt wieder das Arbeitsverzeichnis. Dies erspart den Umgang mit den Unwägbarkeiten von Stammverzeichnissen, Home-Verzeichnissen und anderen Betriebssystem-spezifischen Funktionen, die wahrscheinlich eine Menge an Regex-Spielen erfordern würden.

+2

+1 für die "..". Ich benutze es immer im Terminal mit CD, aber ich brauchte nie in 'R', gut zu tun. Danke – Michele

4

Möglicherweise wurden diese beiden Spitzen

"~/" # after the forward slash you "are" in your home folder 

dann auf Windows

"C:/" # you are in your main hard drive 
"G:/" # you are just in another hard drive :-) 

auf Unix kann Ihnen helfen, etwas ähnliches mit

"/etc/" 

tun können, dann können Sie nach unten in jede Unter gehen Verzeichnis benötigen Sie

Oder wie @Hong Ooi empfiehlt Ihnen, mit

"../" 

NB zum Elternverzeichnis Ihres Arbeitsverzeichnis gehen kann: nur nach dem letzten Schrägstrich drücken tab und Sie werden alle Dateien und Ordner haben, sehr praktisch, vor allem in RStudio

+0

@ user2449961 wenn du das Elternteil des Arbeitsverzeichnisses meinst (du solltest präziser sein) "../" ** ist ** der Pfad den du brauchst. Entschuldigung, versuche es einfach. wörtlich schreiben '" ../ "' und nach dem '/' drücken Sie die Tabulatortaste und Sie sehen alle Dateien im übergeordneten Ordner – Michele

+1

@ user2449961 Wenn Sie Kommentar löschen, dann würden andere für neue Zuschauer der Frage keinen Sinn ergeben – Michele

21

Sie dirname auf getwd alles, aber die oberste Ebene in Ihrem aktuellen Verzeichnis zu extrahieren, verwenden können:

dirname(getwd()) 
[1] "C:/Documents and Settings" 
+0

Dies ist eine allgemeinere Lösung als die angenommene Antwort – Nick

0

Eine andere Mög ity:

parts = unlist(strsplit(getwd(), .Platform$file.sep)) 
do.call(file.path, as.list(parts[1:length(parts) - 1])) 

Diese den Dateipfad in Verzeichnisse teilt, fällt das letzte Verzeichnis, und rekombiniert dann die Teile in einem filepath wieder.

9

Eigentlich dirname ermöglicht mehrere übergeordneten Ordner zurück zu gehen

Path="FolderA/FolderB/FolderC/FolderD" 

dirname(Path) 

"FolderA/FolderB/FolderC"

dirname(dirname(Path)) 

"FolderA/FolderB"

Und so weiter. ..

+0

Genau das brauchte ich für ein Projekt, an dem ich gerade arbeite, danke! –

Verwandte Themen