2013-06-26 11 views
17

Rの親ディレクトリへのパスを取得するにはどうすればよいですか? 親ディレクトリのディレクトリから入力を受け取り、親フォルダの別のディレクトリにデータを出力するRスクリプトを作成する必要があります。親フォルダへのパスを見つけることができたら、私はこれを行うことができます。Rの親ディレクトリ

答えて

17

Rの作業ディレクトリの親ディレクトリを意味すると思いますか?

おそらく最も簡単な解決策は次のとおりです。

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

これは、その親に変更し、作業ディレクトリを保存しparentで結果を取得し、再び作業ディレクトリをリセットします。これにより、ルートディレクトリ、ホームディレクトリ、およびその他のOS固有の機能の不明瞭さに対処する必要がなくなります。これには、おそらくregexesに手を加える必要があります。

+2

+1 ".."。私はいつもcdでターミナルで使っていますが、 'R'にする必要はありませんでした。ありがとう – Michele

4

おそらくこれら二つのヒントが

"/etc/" 

と似た何かを行うことができます、あなたがいずれかのサブに下るできるWindows、UNIX上の

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

に続い

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

を助けるかもしれません必要なディレクトリ

それとも@Hong大井あなたは

"../" 

NBと作業ディレクトリの親ディレクトリまで行くことができるとおり:ちょうど最後のスラッシュプレスtab後、あなたは、すべてのファイルとフォルダを持っている非常によあなたの現在のディレクトリの最上位レベル以外のすべてを抽出するためにgetwddirnameを使用することができ、特にRStudio

+0

@ user2449961作業ディレクトリの親を意味する場合は(より正確にする必要があります) "../" **は必要なパスです。申し訳ありません、試してみてください。文字通り '' ..を入力してください/ 'を押して'/'を押すと、親フォルダの中にあるすべてのファイルが表示されます。 – Michele

+1

@ user2449961コメントを削除すると他のユーザーは新しい視聴者には意味がありません – Michele

21

で、便利:

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

これはより一般的な解決策です受け入れられた答え。 – Nick

0

別possibil ity:

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

これは、ファイルパスをディレクトリに分割し、最後のディレクトリを削除してから、ファイルパスに再結合します。

9

が実際にdirnameのは、いくつかの親フォルダ

Path="FolderA/FolderB/FolderC/FolderD" 

dirname(Path) 

"FolderA/folderBの/ FolderCを"

dirname(dirname(Path)) 

に戻ることを可能にする "FolderA/folderBの"

のように。 ..

+0

これは私が今作業しているプロジェクトに必要なものです。ありがとう! –

関連する問題