【问题标题】:Subset files according to a list of patterns根据模式列表子集文件
【发布时间】:2017-07-07 05:36:00
【问题描述】:

我有一个文件列表,例如:

"Experiment_myex1_test1"     
"Experiment_myex1_test2"      
"Experiment_myex1_test3"       
"Experiment_myex2_test1"      
"Experiment_myex2_test2"    
"Experiment_myex2_test3"      
"Experiment_myex3_test1"      
"Experiment_myex3_test2"    
"Experiment_myex3_test3"    

依此类推(总共 1000 个文件)和一个文件 .txt,如下所示:

df
List_of_ex      
myex1     
myex1    
myex1 
myex2     
myex2      
myex2
myex4    
myex4     
myex4     

(由于 *test1、*test2 和 *test3,它们一式三份出现)。

我想从list.files() 获取与df[,1] 中的模式匹配的文件列表。换句话说,我想得到以下列表:

"Experiment_myex1_test1"     
"Experiment_myex1_test2"      
"Experiment_myex1_test3"       
"Experiment_myex2_test1"      
"Experiment_myex2_test2"    
"Experiment_myex2_test3"      

【问题讨论】:

  • 你试过什么? list.files 有一个 pattern 参数。我可能会从那里开始。

标签: r


【解决方案1】:

假设您确定您将始终拥有“test1”、“test2”和“test3”,您可以使用带有grep 的正则表达式来完成此任务。

lapply(df[, 1], function(pattern_ex) {
  lapply(c("test1", "test2", "test3"), function(pattern_test){
    grep(pattern = paste0(pattern_ex, ".*", pattern_test, "$"), 
         x = list.files(),
         value = T)
  })
}) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多