使用R列出具有指定扩展名的所有文件

我对R非常陌生,正在更新一个R脚本来遍历使用ArcGIS创build的一系列.dbf表,并生成一系列图。

我有一个目录,C:\ Scratch,将包含我所有的.dbf文件。 但是,当ArcGIS创build这些表时,它还包含一个.dbf.xml文件。 我想从我的文件列表中删除这些.dbf.xml文件,从而我的迭代。 我试过用正则expression式search和试验无济于事。 这是我正在使用的基本expression式(不包括所有的各种实验):

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

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

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

$在最后意味着这是string的结尾。 "dbf$"也可以,但是join\\..是正则expression式中的特殊字符,所以你需要转义它)确保你只匹配扩展名为.dbf文件(如果你有.adbf文件)。

试试这个使用globs而不是正则expression式,所以它只会选出以.dbf结尾的文件名

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

挂钩模式使用$字符在string的末尾find"\\.dbf"

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

我不擅长使用复杂的正则expression式,所以我会用下面的方法来完成这个任务:

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

第一行仅列出来自工作目录的所有文件。 第二种方法是删除包含“.xml”的所有内容(grep在'文件'向量中返回这样的string的索引;负向索引的子集将从向量中删除相应的条目。 grep函数的“固定”参数只是我的心血来潮,因为我通常希望它能够进行粗糙的模式匹配,而不使用Perl风格的正则expression式,这可能会让我感到惊讶。

我知道这样的解决scheme只是反映了我受教育的弊端,但对于新手来说,这可能是有用的=)至less很容易。

为您提供完整path的文件列表:

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