[R]ファイル名から拡張子を取り除く
ファイル名が代入されている文字列ベクトルから拡張子(文字列の最後が「ピリオド+1以上のピリオド以外の文字列」)を取り除く簡単な方法。
gsub関数を使えばよい。gsub関数は正規表現を用いた文字列の置換が簡単に行える。ベクトルも扱える。以下は使用例。
> st1 <- c("abcd.txt", "efgh", "ijkl.mno.txt")
> st1
[1] "abcd.txt" "efgh" "ijkl.mno.txt"
> st2 <- gsub("\\..+$", "", st1)
> st2
[1] "abcd" "efgh" "ijkl"
上記の2番目の例のとおり、拡張子がないものはそのままとなる。3番目の例のとおり、拡張子が複数ある場合はすべて取り除かれる。これを、拡張子を1つだけ取り除きたい、としたいのであれば、正規表現が少々煩雑になるが以下のようにすれば可能。ただし、拡張子は数字(0~9)もしくはアルファベット(A~Z、a~z)であるの場合。
> st3 <- gsub("\\.[0-9A-Za-z]+$", "", st1)
> st3
[1] "abcd" "efgh" "ijkl.mno"









