我是R的新手,正在更新R脚本以迭代使用ArcGIS创建的一系列.dbf表并生成一系列图表.
我有一个目录,C:\ Scratch,它将包含我的所有.dbf文件.但是,当ArcGIS创建这些表时,它还包含.dbf.xml文件.我想从我的文件列表中删除这些.dbf.xml文件,从而删除我的迭代.我试过搜索和试验正则表达式无济于事.这是我正在使用的基本表达式(不包括所有各种实验):
files <- list.files(pattern = "dbf")
Run Code Online (Sandbox Code Playgroud)
任何人都可以给我一些方向吗?
Mar*_*rek 180
files <- list.files(pattern = "\\.dbf$")
Run Code Online (Sandbox Code Playgroud)
$最后意味着这是字符串的结尾."dbf$"也会工作,但添加\\.(.正则表达式中的特殊字符,因此您需要将其转义)确保您只匹配带扩展名的文件.dbf(如果您有例如.adbf文件).
G. *_*eck 58
试试这个使用globs而不是正则表达式,所以它只会选出结尾的文件名 .dbf
filenames <- Sys.glob("*.dbf")
Run Code Online (Sandbox Code Playgroud)
Rei*_*son 12
"\\.dbf"使用$字符将模式挂在字符串末尾的模式:
list.files(pattern = "\\.dbf$")
Run Code Online (Sandbox Code Playgroud)
为您提供具有完整路径的文件列表:
Sys.glob(file.path(file_dir, "*.dbf")) ## file_dir = file containing directory
Run Code Online (Sandbox Code Playgroud)
我不是很擅长使用复杂的正则表达式,所以我会通过以下方式完成这样的任务:
files <- list.files()
dbf.files <- files[-grep(".xml", files, fixed=T)]
Run Code Online (Sandbox Code Playgroud)
第一行只列出工作目录中的所有文件.第二个删除包含".xml"的所有内容(grep在'files'向量中返回此类字符串的索引;使用负索引进行子集删除向量中的相应条目).grep函数的"固定"参数只是我的心血来潮,因为我通常希望它在没有Perl风格的花式正则表达式的情况下执行原始模式匹配,这可能会让我感到意外.
我知道这样的解决方案只是反映了我的教育中的缺点,但对于新手而言,它可能是有用的=)至少它很容易.
| 归档时间: |
|
| 查看次数: |
116305 次 |
| 最近记录: |