R - 从字符串中提取数字

时间:2013-01-18 16:35:38

标签: string r max

我使用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或类似的东西从字符串中提取版本号,但是有更好的方法吗?如果没有,有没有人知道如何从字符串中提取该模式,因为我对此非常差

1 个答案:

答案 0 :(得分: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'))