1

我曾经max(list.files(path, "my_files_v"))读过最新的 my_files_v 版本。

该目录包含以下文件:

my_files_v1, my_files_v2, ... my_files_v9

我的代码似乎工作得非常好,因为脚本总是以最高版本读取 my_file_v,直到我来到版本 _v10。从那时起, max(list.files(..)) 总是将 _v9 检测为最大值,因此跳过了 _v10 和 _v11 等。

一种解决方案是使用 substr 或类似的方法从字符串中提取版本号,但有更好的方法吗?如果没有,有谁知道如何从字符串中提取该模式,因为我对此很穷

4

1 回答 1

1

你可以使用:

max(as.integer(gsub('my_files_v', '', list.files(path, "my_files_v")))

假设您的文件没有您显示的扩展名。但是,因此它们在我的文件浏览器中正确排序,我通常使用零填充命名文件。在 R 中,您可以这样做sprintf

sprintf('%03d', 1:10)

对于它的价值,要提取文件名的数字部分,您可以使用正则表达式和分组:

gsub('my_files_v([0-9]+)\\.Rdata', '\\1', list.files(path, 'my_files_v'))
于 2013-01-18T16:38:43.837 回答