Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
52
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

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

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"
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
52
Help us understand the problem. What are the problem?