2013-01-18 202 views
1

我用max(list.files(path, "my_files_v"))来读取最新的my_files_v版本。R - 从字符串中提取数字

指南已经的文件:

my_files_v1,my_files_v2,... my_files_v9

我的代码似乎完全正常工作中始终以最高版本的my_file_v看,直到我来到版脚本_v10。从这一点起,max(list.files(..))总是检测到_v9作为最大值,因此跳过_v10和_v11等。

一个解决方案是从substr或类似的东西中提取版本号但是有没有更好的方法呢?如果没有,没有人知道如何从字符串中提取模式,因为我很穷有关该

回答

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')) 
+0

噢,对不起。是的,文件以.RData结尾。所以这些文件命名为my_file_v1.RData – user969113

+0

好吧 - 知道了!感谢那! – user969113