LoginSignup
63
55

More than 5 years have passed since last update.

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

Posted at

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"
63
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
55