R

トップページ
Google
WWWを検索
サイト内を検索

Rのファイルとディレクトリの操作に用いる関数は、なぜかflockが標準サポートされていませんが、統計解析用途と考えると過剰気味に用意されています。バッチ処理において困ることは無いでしょう。一度に全部は覚えきれないでしょうが、以下の関数を覚えておくエンドユーザー・プログラミングで不足することは少ないと思います。

1 カレントディレクトリを確認

オプションによって初期ディレクトリは変わるので、これは覚えておきましょう。

(cd <- getwd())

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.infofile.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"))
# 存在しないことを確認してから作成
mkdir <- function(dname){
    if(!dir.exists(dname)){
        dir.create(dname)
    }
    dname
}
newdir <- mkdir("newdir")