Welcher ist der kürzeste Weg, um grep zu verwenden, um mehrere Muster in beliebiger Reihenfolge an einer beliebigen Stelle in einer Zeichenfolge zu finden? Vorzugsweise wird die Base R in einer kurzen Linie verwendet.Ordnen Sie mehrere Muster in beliebiger Reihenfolge an einer beliebigen Stelle in einer Zeichenfolge zu.
Hier ist ein Beispiel:
Ich möchte alle Elemente finden, die alle dieser beiden Elemente in meinem matches
Vektor enthalten, in beliebiger Reihenfolge, in jedem Ort zusammen in den Elementen my_vector
, mit irgendwelchen Zeichen zwischen ihnen innerhalb des Elements.
matches <- c("fe", "ve")
# 1 2 3 4 5 6 7 8 9
my_vector <- c("fv", "v", "f", "f_v_e", "fe_ve", "feve", "vefe", "fve" , "a")
# want 5, 6, 7
Ich kann dies tun:
grep(paste0("(?=.*", paste0(matches, sep = ""), ")", collapse = ""),
my_vector,
perl = TRUE)
[1] 5 6 7
Aber ist es eine knappe Methode? In meinem Beispiel habe ich zwei Elemente zu vergleichen, aber mein aktuelles Problem hat mehrere.
@ user2100721 - wo ist 'fe' in 8? – thelatemail
@ user2100721 - * Ich möchte alle Elemente finden, die ** alle ** dieser beiden Elemente enthalten * – thelatemail
@thelatemail: Ooh ... sorry. Das habe ich vermisst. Vielen Dank. – user2100721