J'ai une liste de noms de fichiers avec le titre général Je souhaite renommer le fichier jusqu'à présent, j'ai p> ma question est de savoir comment je peux recueillir les noms de fichiers existants dans un tel manière qui retourne le plus grand suffixe. J'imagine que cela pourrait avoir quelque chose à voir avec des expressions régulières pour lesquelles la regex suivante pourrait être utile new_data_2018.csv code> de sorte que son extrémité numérique soit supérieure à celle de le plus grand fichier préexistant dans le dossier. p>
[0-9] * $ code>. P> p>
5 Réponses :
Vous pouvez analyser le numéro, sélectionnez le plus gros, puis ajoutez +1:
largest_value <- as.numeric(sub(".*\\_", "", files)) new_largest_value <- max(largest_value) + 1
Merci pour votre réponse. Existe-t-il une modification facilement accessible au modèle si les noms de fichier incluent un numéro associé, par exemple: au lieu de "a_file_name_1" ... c'était "A_FILE_NAME_2019_1" "A_FILE_NAME_2019_31", etc.?
Cela signifie-t-il que vous souhaitez considérer que les chiffres avant . Code>?
les chiffres à la toute fin du titre mais après le dernier soulignement
Merci! Cela fonctionne bien. Afin de résoudre ce problème, je devais renommer le new_data_2018.csv code> et expirer la valeur manquante dans
le plus grand_value code>. Appréciez la révision!
Utilisation de titeries:
list_file_names <- list.files(directory_2018) file_name_numbers <- extract_numeric(list_file_names) values_no_year <- as.numeric(gsub(pattern = '2018', replacement='', x = file_name_numbers)) new_largest_value <- max(values_no_year)+1
TidyR :: Extract_numérique () code> est obsolète selon la documentation.
Readr :: Parse_Number () code> doit être utilisé à la place.
Ajoute des zéros aux numéros de votre nom de fichier, puis trier par nom de fichier dans ordre décroissant.
a_file_name_00452 a_file_name_00034 a_file_name_00001
merci, je préférerais quelque chose qui n'a pas une limite supérieure sur le nombre de documents que je peux stocker
Un autre moyen serait de conserver un fichier texte spécial dans le dossier qui détient uniquement le dernier numéro utilisé. Ensuite, lisez et incrémentez le nombre à chaque fois qu'un nouveau fichier est ajouté au dossier. Il s'agit d'un moyen plus rapide d'obtenir la valeur maximale utilisée, en particulier si vous avez des milliers de fichiers dans le dossier. C'est aussi une solution moins compliquée. P>
La regex proposée par le OP Pour être du côté sûr, je suggère d'utiliser donc, en utilisant p> Le code p> calcule p> [0-9] * $ code> points dans la bonne direction car il choisira zéro ou plusieurs chiffres à la fin de la chaîne. la partie cruciale em> est le
$ code> qui spécifie une correspondance à la fin d'une ligne em>. (Intéressant, le
$ code> a été omis de la regex de toutes les autres réponses postées jusqu'à présent).
[0-9] + $ code> qui choisit un em> ou plusieurs chiffres à la fin de la chaîne. Il y a pas besoin em> pour renommer des fichiers comme
new_data_2018.csv code> qui contient un numéro entre mais pas à la fin de la fin. p>
library(magrittr) # piping used to improve readability
filenames %>%
stringr::str_extract("[0-9]+$") %>% # pick numbers at the very end of filenames
as.integer() %>%
max(na.rm = TRUE) %>%
add(1) %>%
paste0("a_file_name_", .) %>% # create new file name
file.rename("new_data_2018.csv", .)