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
函数