R 从文件路径提取文件扩展名

R 从文件路径提取文件扩展名,r,file-extension,built-in,R,File Extension,Built In,如何将给定文件路径的文件扩展名提取为字符?我知道我可以通过正则表达式regexpr(“\\”([[:alnum:]+)$”,x),但是想知道是否有一个内置函数来处理这个问题?这是使用R基本工具很容易找到的东西。例如:?路径 无论如何,加载工具包并读取?文件_ext如果扩展名包含非alnum,则上述regexpr将失败(参见示例) 作为替代功能,用户可以使用以下功能: getFileNameExtension <- function (fn) { # remove a path splitt

如何将给定文件路径的文件扩展名提取为字符?我知道我可以通过正则表达式
regexpr(“\\”([[:alnum:]+)$”,x)
,但是想知道是否有一个内置函数来处理这个问题?

这是使用R基本工具很容易找到的东西。例如:?路径


无论如何,加载
工具
包并读取
?文件_ext

如果扩展名包含非alnum,则上述regexpr将失败(参见示例) 作为替代功能,用户可以使用以下功能:

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

getfilenamextension让我从

下面是简单的代码片段

  # 1. Load library 'tools'
  library("tools")

  # 2. Get extension for file 'test.txt'
  file_ext("test.txt")

结果应该是“txt”。

此函数使用管道:

library(magrittr)

file_ext <- function(f_name) {
  f_name %>%
    strsplit(".", fixed = TRUE) %>%
    unlist %>%
    extract(2)
 }

 file_ext("test.txt")
 # [1] "txt"
库(magrittr)
文件扩展%
strsplit(“.”,fixed=TRUE)%>%
未列出%>%
摘录(2)
}
文件扩展(“test.txt”)
#[1]“txt”

无需加载包的简单函数:

getExtension <- function(file){ 
    ex <- strsplit(basename(file), split="\\.")[[1]]
    return(ex[-1])
} 
getExtension仅提取不带点的文件扩展名:
tools::file\u ext(文件名)

使用点提取文件扩展名:
paste0(“.”,tools::file_ext(fileName))

它不会显示
?“扩展名”
,尽管人们会预料到它会出现。@DWin:“耐心,蚱蜢”:-。我还推荐软件包:sos。维特霍夫:我对两个理由感到困惑;pkg:sos如何解决工具外观缺乏的问题::fiie_ext with??(),而理智的人会期望它出现;人们当然需要耐心,才能从一个能提供20页400次点击的搜索策略中获得价值。
sos
进行全文搜索<代码>??
只搜索元数据(标题、关键字等)。此外,浏览结果并不难。(我尝试了
findFn(“{file extension}”)
“extract{file extension}”
,和
“{extract file extension}”
,第一个是最好的。)这对实际的代码样本更有用。请向上滚动并阅读这个问题的公认答案。谢谢你,里奇!我阅读了这篇评论并添加了这段代码,只是为了展示它在简单代码段中的外观。也许这会对某人有所帮助。其他的评论可能是第一个被接受的,但是看到解决方案被写出来是很好的。被接受的答案只是告诉你在哪里找到答案。这个函数实际上回答了这个问题。函数
basename
dirname
省去了一些工作here@Pisca46:我想在R包中使用这样的函数。你写函数了吗?如果没有,你能在回答中添加一个引用吗?是的,我自己编写了这个函数。你能评论一下这是如何比
tools::file\u ext
有所改进的吗?你最好使用
tools
函数