首页 > 解决方案 > 获取文件名列表中的最大值

问题描述

我有一个带有总标题的文件名列表

a_file_name_1
a_file_name_34
a_file_name_452
new_data_2018.csv

我想重命名new_data_2018.csv文件,使其数字结尾比文件夹中最大的预先存在的文件大一。

到目前为止我有

#list files in directory
list_files_names <- list.files(directory_2018)

#capture largest suffix
largest_value <-
new_largest_value <- largest_value + 1

# rename file
file.rename("new_data_2018.csv", paste0('a_file_name_', new_largest_value)

我的问题是如何以返回最大后缀的方式收集现有文件名。我想它可能与以下正则表达式可能有用的正则表达式有关[0-9]*$

标签: rregexstringmax

解决方案


使用 tidyr:

list_file_names <- list.files(directory_2018)

new_largest_value <- max(extract_numeric(list_file_names))+1

注意:这取决于文件名中没有不需要的数字。例子:

extract_numeric('file_2A3B4_name_222.csv') 

将返回:234222

编辑 - 如果您在现有文件名中有一致的年份,这可能有效:

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

注意:当您的文件编号包含 2018 时,这可能会遇到问题。


推荐阅读