2013-01-18 262 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