如何将文件路径作为字符提取文件的扩展名?我知道我可以通过正则表达式regexpr("\\.([[:alnum:]]+)$", x)
来做到这一点,但想知道是否有内置函数来处理这个问题?
答案 0 :(得分:60)
这是R基本工具很容易找到的东西。例如:??路径。
无论如何,请加载tools
包并阅读?file_ext
。
答案 1 :(得分:5)
让我从https://stackoverflow.com/users/680068/zx8754
延伸一点点回答以下是简单的代码段
# 1. Load library 'tools'
library("tools")
# 2. Get extension for file 'test.txt'
file_ext("test.txt")
结果应该是'txt'。
答案 2 :(得分:4)
如果扩展名包含非alnum,则上面的regexpr会失败(请参阅例如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
}
答案 3 :(得分:0)
此功能使用管道:
library(magrittr)
file_ext <- function(f_name) {
f_name %>%
strsplit(".", fixed = TRUE) %>%
unlist %>%
extract(2)
}
file_ext("test.txt")
# [1] "txt"
答案 4 :(得分:0)
一个简单的函数,没有要加载的包:
getExtension <- function(file){
ex <- strsplit(basename(file), split="\\.")[[1]]
return(ex[-1])
}
答案 5 :(得分:0)
tools::file_ext(fileName)
paste0(".", tools::file_ext(fileName))