ファイルパスを文字として指定すると、ファイルの拡張子を抽出できますか?私は正規表現regexpr("\\.([[:alnum:]]+)$", x)
を介してこれを行うことができることを知っていますが、これに対処する組み込み関数があるのだろうか?
これは、Rの基本ツールで簡単に見つけられるようなものです。例:??パス。
とにかく、tools
パッケージを読み込み、?file_ext
。
https://stackoverflow.com/users/680068/zx8754 から少し素晴らしい答えを拡張させてください
ここに簡単なコードスニペットがあります
# 1. Load library 'tools'
library("tools")
# 2. Get extension for file 'test.txt'
file_ext("test.txt")
結果は「txt」になります。
拡張子にalnum以外が含まれている場合、上記の正規表現は失敗します(例 https://en.wikipedia.org/wiki/List_of_filename_extensions を参照)。
getFileNameExtension <- function (fn) {
# remove a path
splitted <- strsplit(x=fn, split='/')[[1]]
# or use .Platform$file.sep in stead of '/'
fn <- splitted [length(splitted)]
ext <- ''
splitted <- strsplit(x=fn, split='\\.')[[1]]
l <-length (splitted)
if (l > 1 && sum(splitted[1:(l-1)] != '')) ext <-splitted [l]
# the extention must be the suffix of a non-empty name
ext
}
ロードするパッケージのない単純な関数:
getExtension <- function(file){
ex <- strsplit(basename(file), split="\\.")[[1]]
return(ex[-1])
}
この関数はパイプを使用します。
library(magrittr)
file_ext <- function(f_name) {
f_name %>%
strsplit(".", fixed = TRUE) %>%
unlist %>%
extract(2)
}
file_ext("test.txt")
# [1] "txt"