【问题标题】:Subset according to patterns in file names根据文件名中的模式进行子集
【发布时间】:2017-01-18 17:02:39
【问题描述】:

我的文件夹中有以下文件名:1_myfile.txt、2_myfile.txt、3_myfile.txt 和 4_best_myfile.txt、5_best_myfile.txt、6_best_myfile.txt。

当使用 list.files() 列出文件时,我想在 pattern = "" 中使用正则表达式,以便从包含“_best_myfile.txt”的文件中提取包含“_myfile.txt”的文件。我尝试使用:

files = list.files(path = ".", "*[^best_myfile.txt]$")

不幸的是,它不起作用,因为它仅对不以 .txt 结尾的文件进行子集化。

谁能帮帮我?

提前致谢

【问题讨论】:

  • 使用不带[]"\\d+_best_myfile.txt"

标签: r regex


【解决方案1】:

我们可以将pattern修改为"\\d+_best_myfile\\.txt"

files <- list.files("\\d+_best_myfile\\.txt") 

它表示一个或多个数字 (\\d+) 后跟一个 _ 和字符串 best_myfile.txt。另外,请注意某些字符需要转义,即. 是元字符,它暗示任何字符。所以,要获得文字点字符,我们需要转义(\\)它

【讨论】:

  • 这项工作非常好,非常感谢您。不幸的是,我无法对仅包含 myfile 的文件进行子集化。
  • @Bfu38 我不确定你的第二条评论。也许^\\d+_myfile\\.txt$" 是你想要的
  • 对不起,如果我不是很清楚,但是当我尝试进行子集化时,我的代码无法区分“_myfile.txt”和“_best_myfile.txt”,这是我尝试的主要目的。
  • @Bfu38 你可以使用grepl("best", list.files()) 来获取你想要的逻辑索引
  • 非常感谢@akrun。那是我的目标。它工作正常。
猜你喜欢
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多