Если вообще разумным, было бы лучше, чтобы определить «последнюю» версию файла с данными в file.info
выходе (this post, также предложил zx8754, хороший ответ на это).
Если вы должны сделать это по имени файла, будьте очень осторожны и осведомлены о том, как ваша операционная система собирается сортировать символы. Возьмем, к примеру, этот пример.
files <- paste0("somepath/directory/filename v", 1:10, ".csv")
basenames <- basename(files)
sort(basenames)
[1] "filename v1.csv" "filename v10.csv" "filename v2.csv" "filename v3.csv" "filename v4.csv"
[6] "filename v5.csv" "filename v6.csv" "filename v7.csv" "filename v8.csv" "filename v9.csv"
Как вы можете видеть, filename v10.csv' appears in the second position and would not be picked up by simple methods such at
хвост (basenames, 1) `. Вместо этого вам нужно вычеркнуть все символы, кроме тех, которые задают порядок версий, конвертировать в правильный формат, а затем сортировать. Вот пример того, как это сделать с целыми версиями, как вы предполагали.
Files <- data.frame(path = dirname(files),
file = basename(files),
stringsAsFactors = FALSE)
Files$v_number <- gsub("(^filename v|[.]csv$)", "", basenames)
Files$v_number <- as.numeric(Files$v_number)
Files <- Files[order(Files$v_number), , drop = FALSE]
tail(Files, 1)
Это, впрочем, неудобно и подвержено ошибкам. Если это вообще возможно, я бы рекомендовал перейти к базе данных, или к управлению версиями, или к тем и другим.
Возможно, 'tail (list.files (". "," Abroad * .csv "), 1)'? – zx8754
Связанный пост: [Как отсортировать список файлов по дате] (http://stackoverflow.com/questions/13762224/how-to-sort-files-list-by-date) – zx8754