【问题标题】:Read a list of text files in R based on part of their name根据部分名称读取 R 中的文本文件列表
【发布时间】:2017-09-03 00:30:25
【问题描述】:

我正在使用以下几行来读取一个文本文件。但是,我需要包括阅读文本文件列表,但不是全部。我怎样才能在 R 中实现这一点?

我在 C:/data 路径中有多个文件夹。 IE。 1998_Data, 1999_Data....等等,每个文件夹都有文本文件01.txt...49.txt。

提前致谢。

startingDir<-"C:/Data"
files <- list.files(path = startingDir,pattern = "24.txt",recursive=T,full.names=T)

我包含了下面的行,但它没有读取列表中的所有 3 个文件。 有什么建议吗?

my_files <- c("24.txt","01.txt","10.txt")
files <- list.files(path = startingDir,pattern = my_files,recursive=T,full.names=T)

【问题讨论】:

    标签: r regex list file directory


    【解决方案1】:

    那是因为pattern 需要一个正则表达式:

    thepattern <- "24\\.txt|01\\.txt|10\\.txt"
    files <- list.files(path = startingDir,
                        pattern = thepattern,
                        recursive=TRUE,
                        full.names=TRUE)
    

    请记住,您必须转义点,否则它会被解释为“任何东西”。

    如果您想自动执行此操作,您可以执行以下操作:

    my_files <- c("24.txt","01.txt","10.txt")
    my_files <- gsub(".","\\.",my_files, fixed = TRUE)
    my_pattern <- paste(my_files, collapse = "|")
    

    您需要 gsub 中的 fixed = TRUE 以避免将点读作“任何东西”。另见?regex

    【讨论】:

    • 谢谢。您上面的解决方案似乎有效。但是,您的自动化代码不起作用。它不会读取所有文件,而只是读取列表中的第一个文本文件。
    • @user3408139 我的错,我使用了sep 而不是collapse。更新了代码以创建正确的正则表达式。
    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2017-10-02
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多