2017-08-21 1 views
0

Ich habe folgende CSV-Dateien und ich möchte nur diejenigen auszuwählen, die in jedem String-Matching ‚Pop‘ und ‚Durchsatz‘ Werte haben:Wählen Sie nur passende Dateien mehrere Muster in list.files mit

example_pop_high_throughput_high_strategy.csv 
example_pop_high_throughput_base_strategy.csv 
example_pop_high_throughput_low_strategy.csv 
example_pop_base_throughput_high_strategy.csv 
example_pop_base_throughput_base_strategy.csv 
example_pop_base_throughput_low_strategy.csv 
example_pop_low_throughput_high_strategy.csv 
example_pop_low_throughput_base_strategy.csv 
example_pop_low_throughput_low_strategy.csv 

ich will nur diese:

example_pop_high_throughput_high_strategy.csv     
example_pop_base_throughput_base_strategy.csv 
example_pop_low_throughput_low_strategy.csv 

I list.files kann alle Dateien mit, zum Beispiel wählen, 'hoch':

file_names <- list.files("made/up/path", pattern = c("high")) 

Obwohl versuchen, dies zu passen zweimal zu tun, nur ‚hoch‘ und ‚hoch‘, hat nicht funktioniert:

file_names <- list.files("made/up/path", pattern = c("high", "high")) 

Gibt es eine Möglichkeit, die Dateien mit passenden ‚Pop‘ und ‚Durchsatz‘ Werte auswählen, vorzugsweise in einem einzigen Ausdruck?

Antwort

2

Folgendes sollte funktionieren:

file_names <- list.files("made/up/path", pattern = c("(low|base|high).+\\1")) 
2

Versuchen Sie, diese Regex:

^.*?pop_([^_]+)_throughput_\1.*$ 

Demo

Verwandte Themen