2012-05-08 9 views
3

に読み込みます。異なるディレクトリに類似した名前のファイルが複数あります。ディレクトリの名前は、例:dir1 - > dir10のように同様です。複数の異なるディレクトリのファイルをR

各ディレクトリには、f1〜f10という名前のファイルがあり、各ディレクトリの最初のファイルを読み込みたいとします。

たとえば、read.csvを使用できますか?ディレクトリ名とファイル名の両方を表すために変数を使用する必要があります。

+0

あなたは「最初のファイルを」と言うとき、あなたはそれは常にF1と呼ばれている意味ですか? –

+0

'read.csv'にディレクトリとファイル名を指定できるので、確かに" yes "です。 "dir"と "1:10"を "dir1、dir2、... dir10"に変え、それらの値を引数として 'read.csv'に渡すスクリプトを探していますか? –

答えて

9

ファイル名を構築するための代替がexpand.gridsprintf

file.paths <- sprintf ('dir%i/f1.csv', 1:10) 

です:あなたは10個のフォルダのそれぞれに10個のファイルを持っている場合は、探求したい場合があります唯一の他の機能は、expand.grid次のとおりです。

grid <- expand.grid (1:4, 1:3) 
file.paths <- sprintf ('dir%i/f%i.csv', grid [[1]], grid [[2]]) 

あるいは、Sys.glob

を使用
file.paths <- Sys.glob ('dir*/f1.csv') 

は、後者はそれらのDIR *にすべてのF *の.csvファイルの読み込みも可能になる:

file.paths <- Sys.glob ('dir*/*f*.csv') 
+0

+1は 'Sys.glob'は私にとって新しいものです! – Justin

1

ダビデは彼の質問で正しかった、と作業ディレクトリを仮定すると、すべてのサブディレクトリを含むディレクトリである場合...

file.paths <- paste0('dir', 1:10, '/', 'f1.csv') 
lapply(file.paths, read.csv) 

は、特定の状況に、この例を拡張するのに十分な簡単にする必要があります。

combos <- expand.grid(1:10, 1:10) 
file.paths <- paste0('dir', combos[,1], '/f', combos[,2], '.csv') 
+0

あなたはもっと速かったです...そして省略した 'lapply'コマンドを書きました。 – cbeleites