Comment puis-je extraire l'extension d'un fichier à l'aide d'un chemin d'accès au fichier? Je sais que je peux le faire via l'expression régulière regexpr("\\.([[:alnum:]]+)$", x)
, mais je me demande s'il existe une fonction intégrée permettant de gérer ce problème?
C'est le genre de chose que l'on trouve facilement avec les outils de base R. E.g .: ?? chemin.
Quoi qu'il en soit, chargez le package tools
et lisez ?file_ext
.
Permettez-moi d’étendre une bonne réponse de https://stackoverflow.com/users/680068/zx8754
Voici l'extrait de code simple
# 1. Load library 'tools'
library("tools")
# 2. Get extension for file 'test.txt'
file_ext("test.txt")
Le résultat devrait être 'txt'.
La regexpr ci-dessus échoue si l'extension contient une valeur autre que alnum (voir, par exemple, https://en.wikipedia.org/wiki/List_of_filename_extensions ) En variante, vous pouvez utiliser la fonction suivante:
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
}
fonction simple sans paquet à charger:
getExtension <- function(file){
ex <- strsplit(basename(file), split="\\.")[[1]]
return(ex[-1])
}
Cette fonction utilise des pipes:
library(magrittr)
file_ext <- function(f_name) {
f_name %>%
strsplit(".", fixed = TRUE) %>%
unlist %>%
extract(2)
}
file_ext("test.txt")
# [1] "txt"