首页 > 解决方案 > list.files:正则表达式模式在 Windows 上不起作用?

问题描述

我可以通过以下方式访问并获取文件的路径file.choose()

"D:\\amca\\reportes_mov\\data_mym\\mym_total_csv\\hhhh-2020-11-09.csv"

我正在使用一个项目,所以我不必输入整个路径,但在reportes_mov. 为什么我的列表文件在我运行后是空的?

files  <- list.files(pattern = 'data_mym\\/mym_total_csv\\/hhhh-2020-[0-9]{2}-[0-9]{2}\\.csv')

其他尝试:仍然是空的。

files  <- list.files(pattern = 'data_mym\\mym_total_csv\\hhhh-2020-[0-9]{2}-[0-9]{2}\\.csv')

标签: rregex

解决方案


pattern参数list.files只匹配文件名部分而不是路径:

path:完整路径名的字符向量;默认对应工作目录,getwd()...

pattern: 一个可选的正则表达式。仅返回与正则表达式匹配的文件名。

如果我理解正确,您还需要参数full.names = TRUE

如果为 TRUE,则将目录路径添加到文件名之前以提供相对文件路径。如果为 FALSE,则返回文件名(而不是路径)。

尝试

files  <- list.files(path = 'data_lsd/lsd_total_csv', pattern = 'america-2020-[0-9]{2}-[0-9]{2}\\.csv', full.names=TRUE, ignore.case = TRUE)

它按预期输出子目录中的 CSV:

[1] "data_lsd/lsd_total_csv/america-2020-11-09.csv"
[2] "data_lsd/lsd_total_csv/america-2020-11-10.csv"

推荐阅读