Rのファイルとディレクトリの操作に用いる関数は、なぜかflock
が標準サポートされていませんが、統計解析用途と考えると過剰気味に用意されています。バッチ処理において困ることは無いでしょう。一度に全部は覚えきれないでしょうが、以下の関数を覚えておくエンドユーザー・プログラミングで不足することは少ないと思います。
1 カレントディレクトリを確認
オプションによって初期ディレクトリは変わるので、これは覚えておきましょう。
<- getwd()) (cd
2 カレントディレクトリを移動
これもよく使うことになると思います。
setwd(file.path("C:", "Program Files"))
setwd(Sys.getenv("HOME"))
3 ファイル一覧を得る
オプションは多いので?dir
で確認しながら使いましょう。
# カレントディレクトリのファイル一覧
dir()
# 正規表現で絞る
dir(pattern = ".*[.]txt$")
# ディレクトリの一覧を出す
list.dirs(recursive = FALSE)
# ワイルドカードを用いる
Sys.glob("*.csv")
Sys.glob(file.path(R.home(), "library", "*", "R", "*.rdx"))
4 ファイルの存在を確認する
バッチ処理などでは入れておいた方がよいです。
file.exists("example.csv")
5 ファイルの情報を得る
file.info
とfile.mode
があれば足りるのですが、他にもあります。
# ファイルの情報を得る
file.info(fname)
# 更新日時(file.infoでも出る)
file.mtime(fname)
# サイズ(file.infoでも出る)
file.size(fname)
# アクセス制限(BSD UNIX準拠)
file.mode(fname)
6 OSにコマンドを実行させる
system
でOSのコマンドを実行させられます。これでディレクトリをつくったり、ファイルコピーをしたりもできます。
# シェルの`echo`を呼び出す
system("echo \"Hello, Shell!\"")
7 ファイルをコピーする
file.copy("example.csv", "example_copied.csv")
8 ファイル名を変更する
file.rename("example_copied.csv", "example02.csv")
Sys.chmod
でファイルの属性を変更したり、Sys.setFileTime
でファイルの日時を変更したりもできます。
9 ファイルもしくはディレクトリを削除する
unlink
でファイルとディレクトリを消去できます。recursive = TRUE
をつければ、入っているファイルごとディレクトリを消去できます。file.remove
と言うのもあります。
10 ディレクトリをつくる
存在するディレクトリを作ろうとすると警告が出るので、警告を出なくするか、存在しないことを確認しておいたほうが心理的によいです。
# 警告を抑制
suppressWarnings(dir.create("newdir"))
# 存在しないことを確認してから作成
<- function(dname){
mkdir if(!dir.exists(dname)){
dir.create(dname)
}
dname
}<- mkdir("newdir") newdir