table用法 - r資料清洗




使用R列出具有指定擴展名的所有文件 (4)

我對R非常陌生,正在更新R腳本以遍歷使用ArcGIS創建的一系列.dbf表並遍歷一系列圖。

我有一個目錄C:\ Scratch,它將包含我所有的.dbf文件。 但是,當ArcGIS創建這些表時,它還包含一個.dbf.xml文件。 我想從我的文件列表中刪除這些.dbf.xml文件,因此我的迭代。 我嘗試過使用正則表達式進行搜索和試驗無濟於事。 這是我正在使用的基本表達式(排除所有各種實驗):

files <- list.files(pattern = "dbf")

任何人都可以給我一些方向嗎?


為您提供具有完整路徑的文件列表:

  Sys.glob(file.path(file_dir, "*.dbf")) ## file_dir = file containing directory

我不擅長使用複雜的正則表達式,因此我會按照以下方式執行此類任務:

files <- list.files()
dbf.files <- files[-grep(".xml", files, fixed=T)]

第一行僅列出來自工作目錄的所有文件。 第二種方法是刪除包含“.xml”的所有內容(grep在'文件'向量中返回這樣的字符串的索引;負向索引的子集將從向量中刪除相應的條目)。 grep函數的“固定”參數只是我的心血來潮,因為我通常希望它能夠在沒有Perl風格的正則表達式的情況下進行原始模式匹配,這可能會引起我的驚喜。

我知道這樣的解決方案僅僅反映了我的教育中的缺點,但對於新手來說它可能是有用的=)至少很容易。


試試這個使用globs而不是正則表達式,所以它只會選出以.dbf結尾的文件名

filenames <- Sys.glob("*.dbf")

files <- list.files(pattern = "\\.dbf$")

$在最後意味著這是字符串的結尾。 "dbf$"也可以工作,但加入\\..是正則表達式中的特殊字符,所以你需要轉義它)確保你只匹配擴展名為.dbf文件(如果你有例如.adbf文件)。





r