【问题标题】:R - Use Glob Pattern to Extract text files from multiple directoriesR - 使用 Glob 模式从多个目录中提取文本文件
【发布时间】:2021-05-11 13:09:40
【问题描述】:

我正在尝试找出一种使用fs:dir_lsvroom 从多个目录中提取文本文件的方法。

目录结构本质上是M:/instrument/project/experiment/measurements/time_stamp/raw_data/files*.txt

理想情况下,我希望能够定义到实验级别的路径,然后让模式处理其余部分,例如 -

fs::dir_ls(path="M:/instrument/project/", glob = "experiment_*/2021-04-11*/raw_data/files*.txt", invert = TRUE, recurse = TRUE),

因此,我一口气读取了多个实验目录中的所有 .txt 文件,但是,当我尝试这种方法时,它会返回项目级别的所有文件,而不是模式描述的特定文件夹中的文件。

我查看了关于此处涵盖的主题的其他 SO 问题:Pattern matching using a wildcardR list files with multiple conditionslist.files pattern argument in R, extended regular expression usegrep using a character vector with multiple patterns,但无法将它们应用于我的特定问题。

感谢任何帮助,我意识到答案可能正盯着我看,我只是需要帮助才能看到它。

谢谢

【问题讨论】:

  • 如果你想要来自raw_data 文件夹的文件,你可以试试吗? list.files('M:/instrument/project/experiment/measurements/time_stamp/raw_data/', pattern = 'files.*\\.txt')
  • 谢谢,但是,当我尝试这个时,它返回一个空字符。
  • 您要选择的文件的完整路径是什么?
  • 其中一个文件的完整路径是M:/Operetta/LED_Wound/operetta_export/plate_variability[540]/robot_seed_wide_plate_1[1614]/2021-05-10T113438+0100[1764]/SC_data/arpe19_10x_hoescht_h2dcfda_ints_morpho_SC[47280].result.A1[46991].Population - vaid_nuclei[0].txt
  • 这是我要阅读的 arpe19[...].txt 文件。

标签: r glob fs ls


【解决方案1】:

您可以使用list.files 尝试以下操作:

files <- list.files('M:/Operetta/LED_Wound/operetta_export/plate_variability[540]/robot_seed_wide_plate_1[1614]/2021-05-10T113438+0100[1764]/SC_data', pattern = 'arpe19*\\.txt')

【讨论】:

  • 感谢您的回复,这种方法有效,但仅在理想情况下我希望从多个目录(即robot_plate_1-3)读取文件时才在一个目录中搜索文件。这样,我不必为每批文件重新定义从plate_variability[540] 开始的路径,包括时间戳。所以我需要一个 glob/regex 模式来捕获前面的目录,比如~/robot_seed_wide_plate_*`/2021-05-//*/SC_Data/arpe19//*.txt
  • @DrBalticYaldie 添加recursive = TRUEfiles &lt;- list.files(..., pattern = ..., recursive = TRUE)
猜你喜欢
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
相关资源
最近更新 更多