R:list.filesによるファイルパス取得あれこれ。

  • 35
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

list.filesによるファイルパスの取得方法いろいろです。

ファイル件数が増えてくると重くなるので、その場合は他の言語やOSのコマンドでファイル一覧のテキストを読み込ませて処理させた方が効率的ですが、ちょっとした処理やディレクトリ毎の処理ならlist.files便利。

path <- 'C:/data/'

# パスを指定してディレクトリ・ファイルパスを取得。
list.files(path)

# カレントディレクトリを移動してディレクトリ・ファイルパスを取得。
setwd(path)
list.files()

# パターンを指定して取得(「txt」が含まれるものを取得)。
list.files(path, pattern="txt")

# サブディレクトリを含めてファイルパスを取得。
list.files(path, recursive=T)

# サブディレクトリを含めてファイルパスを取得(ディレクトリを含める)。
list.files(path,recursive=T, include.dirs=T)

# 隠しファイルも取得(.が先頭についているもの。winの隠しファイルとは違う)
list.files(path, all.files=T)

# フルパスで取得。
list.files(path, full.names=T)

実行例は以下の通りです。

> path <- 'C:/data/'
> 
> # パスを指定してディレクトリ・ファイルパスを取得。
> list.files(path)
[1] "dir"           "F0001-001.txt" "F0001-002.txt" "F0002-001.txt" "F0003-001.txt"
> 
> # カレントディレクトリを移動してディレクトリ・ファイルパスを取得。
> setwd(path)
> list.files()
[1] "dir"           "F0001-001.txt" "F0001-002.txt" "F0002-001.txt" "F0003-001.txt"
> 
> # パターンを指定して取得(「txt」が含まれるものを取得)。
> list.files(path, pattern="txt")
[1] "F0001-001.txt" "F0001-002.txt" "F0002-001.txt" "F0003-001.txt"
> 
> # サブディレクトリを含めてファイルパスを取得。
> list.files(path, recursive=T)
[1] "dir/F0001-001.txt" "dir/F0001-002.txt" "dir/F0002-001.txt" "dir/F0003-001.txt" "F0001-001.txt"     "F0001-002.txt"     "F0002-001.txt"    
[8] "F0003-001.txt"    
> 
> # サブディレクトリを含めてファイルパスを取得(ディレクトリを含める)。
> list.files(path,recursive=T, include.dirs=T)
[1] "dir"               "dir/F0001-001.txt" "dir/F0001-002.txt" "dir/F0002-001.txt" "dir/F0003-001.txt" "F0001-001.txt"     "F0001-002.txt"    
[8] "F0002-001.txt"     "F0003-001.txt"    
> 
> # 隠しファイルも取得(.が先頭についているもの。winの隠しファイルとは違う)
> list.files(path, all.files=T)
[1] "."                     ".."                    ".隠しファイルだよ.txt" "dir"                   "F0001-001.txt"        
[6] "F0001-002.txt"         "F0002-001.txt"         "F0003-001.txt"        
> # フルパスで取得。
> list.files(path, full.names=T)
[1] "C:/data/dir"           "C:/data/F0001-001.txt" "C:/data/F0001-002.txt" "C:/data/F0002-001.txt" "C:/data/F0003-001.txt"