【问题标题】:Specific pattern to list files in R在 R 中列出文件的特定模式
【发布时间】:2018-10-29 12:22:33
【问题描述】:

在使用 list.files 时匹配非常特定的模式时遇到问题。我有一组具有这种模式的文件“namefile_YYYY-mm-dd.csv”,而且,如果一个文件生成了不止一次,那么我会有这样的东西:” namefile_YYYY-mm-dd_something-else.csv"。这是我用的:

list.files(path = "\\projects\\datasets", pattern = "^Participants_(.*)csv$",all.files = FALSE, full.names = FALSE, recursive = FALSE)

这是输出: “参与者_2018-07-18.csv” “参与者_2018-07-19.csv” “参与者_2018-07-21.csv” “参与者_2018-07-28.csv” “Participants_2018-08-04 new.csv” “参与者_2018-08-04.csv” “参与者_2018-08-11.csv” “Participants_2018-08-18 - for-analysis.csv” “参与者_2018-08-18.csv” “参与者_2018-08-25.csv” “参与者_2018-09-01.csv” "Participants_2018-09-08.csv"

但我不想要所有这些。我希望该列表仅包含这种格式 "Participants_2018-07-18.csv" 的名称,并排除任何其他格式的名称,例如:"Participants_2018-08-04 new .csv""Participants_2018-08-18 - for-analysis.csv"

我尝试了几种方法,例如

list.files(path = "\\projects\\datasets", pattern = "^Participants_[0-9]\\.csv$",all.files = FALSE, full.names = FALSE, recursive = FALSE)]

但是列表是空的。有什么建议吗?

【问题讨论】:

    标签: r regex


    【解决方案1】:

    您可以通过将.* 替换为\\d{4}-\\d{2}-\\d{2} 来匹配那些在Participants_ 之后仅包含类似日期模式的文件名:

    list.files(path = "\\projects\\datasets", pattern = "^Participants_\\d{4}-\\d{2}-\\d{2}\\.csv$",all.files = FALSE, full.names = FALSE, recursive = FALSE)
    

    请参阅regex demo

    \d{4}-\d{2}-\d{2} 正则表达式模式匹配任意四个数字,然后是 - 序列和任意两个数字两次。

    【讨论】:

    • 非常感谢!我尝试了一些不同的东西,但什么也没有,我想我对正则表达式还是很陌生。很棒的建议。我同时使用这两个:用“。*”替换“参与者”这个词来代表我在同一个项目中工作的其他东西,而 \d{4}-\d{2}-\d{2} 则用于这个特定的任务。
    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2020-12-26
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多