Rでファイル名を操作するとき,入力するファイル名から拡張子を除いて,拡張子や名前を少し変えたファイル名を作りたいことがあります.例えば,"???.txt"(???には何か文字が入る)から".txt"を除いて,代わりに"_result.csv"をくっ付けて"???_result.csv"に変更するような場合です.
また,フルパスを含む形でファイル名を取得した場合に,パスとファイル名を分けたいことも,結構あります.例えば,"C:/Document/hoge/chaos.txt"を,パスの部分"C:/Document/hoge"と,ファイル名の部分"chaos.txt"に分ける場合です.Rでは,フォルダの区切りを"\"ではなく,"/"を使うことに注意してください.
以下に,私が使っている方法をメモしておきます.
ファイル名から拡張子を除く
これは,いくつか方法が考えられると思います.ここでは,
FN <- "chaos.txt"
を例とします.
1つ目の方法は,
as.character(strsplit(FN,"\\.")[[1]])[1]
とすることです.
2つ目の方法は,
sub('\\.[^.]*', "", FN)
どちらも実行するとこんな感じになります.
> FN <- "chaos.txt" > as.character(strsplit(FN,"\\.")[[1]])[1] [1] "chaos" > sub('\\.[^.]*', "", FN) [1] "chaos"
パスとファイル名を分ける
これは,コマンドが存在します.
FN <- "C:/Document/hoge/chaos.txt"
を例とすれば,パス名は
dirname(FN)
ファイル名は,
basename(FN)
で得られます.実際の実行結果は以下です.
> FN <- "C:/Document/hoge/chaos.txt" > dirname(FN) [1] "C:/Document/hoge" > basename(FN) [1] "chaos.txt"