使用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