BeispieldatenR - Suche alle Vektorelemente, die alle Strings/Muster enthalten - str_detect grep
files.in.path = c("a.4.0. name 2015 - NY.RDS",
"b.4.0. name 2016 - CA.RDS",
"c.4.0. name 2015 - PA.RDS")
strings.to.find = c("4.0", "PA")
Ich möchte die logische Vektor, der alle Elemente zeigt, die alle strings.to.find
enthalten. Das Ergebnis wollte:
FALSE FALSE TRUE
Dieser Code-Elemente finden, die eine beliebige der strings.to.find
enthalten, das heißt, verwendet eine OR-Operator
str_detect(files.in.path, str_c(strings.to.find, collapse="|")) # OR operator
TRUE TRUE TRUE
Dieser Code versucht, einen AND-Operator zu verwenden, funktioniert aber nicht.
str_detect(files.in.path, str_c(strings.to.find, collapse="&")) # AND operator
FALSE FALSE FALSE
Dies funktioniert in mehreren Zeilen und ich kann eine for
Schleife schreiben, die alle einzelnen Linien für die Fälle mit einer größeren Anzahl von strings.to.find
det.1 = str_detect(files.in.path, "4.0" )
det.2 = str_detect(files.in.path, "PA" )
det.all = det.1 & det.2
FALSE FALSE TRUE
generieren Aber gibt es eine bessere Art und Weise, die nicht der Fall ist Verwenden Sie Regex, die von der Position oder der Reihenfolge der strings.to.find
abhängen. Diese
@Jota; guter Punkt. Beispiel, 'grepl (" 4.0 "," 4 0 ")', also können wir vielleicht 'grepl (" 4 \\. 0 "," 4 0 ")' 'entkommen – user2957945