2017-08-08 7 views
1

私は多くのディレクトリのリストを持っています。それぞれのディレクトリには5つのファイルがあり、各ディレクトリ内のこれらのファイルから選択したいものです(たとえば、拡張子は.txt)、これらの.txtファイルのリストをコンパイルします....どのようにしてRのディレクトリのリストからtxtファイルを選択するループを作成しますか?ディレクトリリストからファイルリストを作成するR

あなたが行うことができます
+0

使用は 'このようlapply':' lapply(dirsに、関数(x)はlist.files(X、 "TXT $ '、full.names = TRUE) 'dirsはディレクトリのリストです – Val

答えて

4

pathを調べたいすべてのフォルダが含まれているルートである
dir(path = ".", pattern = "\\.txt$", full.names = TRUE, recursive = TRUE) 

patternはあなたが(例ではすべてのファイルに興味のあるファイルにマッチする正規表現です.txt拡張子を持つ、ファイルのフルパスを返すfull.names、およびrecursivepath内のすべてのsubfodersを探索する。これはあなたのクエリに一致するファイルの完全なパスを持つベクトルを返します。

+0

ありがとうsinQueso! – extracurricular

1

をあなたがリストを持っている場合あなたが持つベクトルとして、それらのすべてに.txtのファイルを取得することができます dirs、内のディレクトリ名:

files <- unlist(lapply(dirs, function(dir) list.files(path = dir, pattern = '\\.txt$'))) 

あなたは、あなたが尋ねたように、ループを使用して を同じことを達成することができますが、それはあまりエレガントだ、と私はドン「tはそれをお勧めします:

files <- c() 
for (dir in dirs) { 
    files <- c(files, list.files(path = dir, pattern = '\\.txt$')) 
} 
+0

ありがとうJanos! – extracurricular

1

list.filesはすでにベクトル化機能であるので、あなたは何のループは必要ありません、それにディレクトリのベクトルを渡すことができます。

my_dirs <- c("foo/bar", "foo/baz") 
all_text_files <- list.files(my_dirs, pattern = "\\.txt$", full.names = TRUE) 

ディレクトリでファイルを分離し、リストをしたい場合は...

split(all_text_files, dirname(all_text_files)) 
+0

ありがとうNathan! – extracurricular

関連する問題