2013-06-26 7 views
17

Come si ottiene il percorso della directory principale in R? Devo scrivere uno script R che prende input da una directory nella directory superiore e restituisce i dati in un'altra directory nella cartella principale. Quindi, se potessi trovare il percorso della cartella genitore, potrei farlo.Directory principale in R

risposta

17

Suppongo che intenda la directory principale della directory di lavoro di R?

La soluzione più semplice è probabilmente la seguente.

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

Ciò consente di risparmiare la directory di lavoro, cambia al suo genitore, ottiene il risultato in parent, e azzera di nuovo la directory di lavoro. Ciò evita di dover gestire i capricci delle directory root, delle home directory e di altre funzionalità specifiche del sistema operativo, il che probabilmente richiederebbe un po 'di manipolazione delle espressioni regolari.

+2

+1 per "..". Lo uso sempre nel terminale con cd, ma non ho mai avuto bisogno di 'R', buono da fare. Grazie – Michele

4

Forse questi due suggerimenti possono aiutare

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

poi sulle finestre

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

su UNIX si può fare qualcosa di simile con

"/etc/" 

allora si può andare giù in qualsiasi sub elenco di cui hai bisogno

O come @Hong Ooi suggerisce si può andare fino al dir padre della directory di lavoro con

"../" 

NB: solo dopo la barra finale stampa in avanti tab e avrete tutti i file e cartelle, molto a portata di mano, soprattutto in RStudio

+0

@ user2449961 se intendi il genitore della directory di lavoro (dovresti essere più preciso) "../" ** è ** il percorso che ti serve. scusate, provatelo. scrivi letteralmente "" ../ "' e dopo la scheda '/' premi e vedrai tutti i file all'interno della cartella genitore – Michele

+1

@ user2449961 se elimini il commento, altri non avrebbero senso per i nuovi spettatori della domanda – Michele

21

È possibile utilizzare dirname su getwd per estrarre tutto, ma la parte superiore più livello di directory corrente:

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

Questa è una soluzione più generica di la risposta accettata – Nick

0

Un'altra possibil lità:

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

Questo divide il percorso del file in directory, cade l'ultima directory, e poi ricombina le parti in un percorso file di nuovo.

9

realtà nomedir permette di tornare a diverse cartelle principali

Path="FolderA/FolderB/FolderC/FolderD" 

dirname(Path) 

"FolderA/FolderB/FolderC"

dirname(dirname(Path)) 

"FolderA/FolderB"

E così via. ..

+0

Questo è esattamente ciò di cui avevo bisogno per un progetto su cui sto lavorando ora, grazie! –

Problemi correlati