Ich versuche, alle Instanzen eines Musters in einem Vektor von Zeichenfolgen zu identifizieren. Ich freue mich auf so etwas wie dieses:Identifizieren Sie Instanzen eines Musters in einem Zeichenvektor in R
fruits <- c("Cherry", "Grape", "Orange", "Lemon")
pattern <- c("Lemon", "Grape", "Cherry", "Grape")
full <- sample(fruits, 1000, replace = TRUE)
Ich möchte nur jede Instanz pattern
in full
zu finden. Mein inneres Java-Baby sagt, dass man sich in der Schleife bewegen soll, so etwas wie das vielleicht?
for(i in 1:(length(full)-length(pattern))) {
if(full[i] == pattern[1]) {
if(full[i+1] == pattern[2]) {
...
Und dann speichern Sie die Indizes. Aber das scheint mir nicht sehr oder sehr effizient zu sein. Ist das der richtige Weg, oder kann mich jemand auf eine Funktion oder ein Paket hinweisen, die das einfacher/schneller machen?
edit: Sorry, ich bin nicht klar zu sein, muss ich wissen, wo pattern
beginnt in full
, das heißt, wenn irgendwo in full
etwas wie folgt aussehen endet:
...
[177] "Lemon" "Grape " "Cherry" "Grape" "Grape" "Lemon" "Cherry" "Grape" "Lemon" "Cherry" "Orange"
...
Dann ein Ich hätte Weg, diesen Index zu finden (177), da das Muster (Zitrone, Traube, Kirsche, Traube) dort erscheint und dort anfängt. Dann würde ich idealerweise, wenn das Muster später wieder auftauchen würde, auch alle Instanzen von pattern
finden.
Ich glaube [this] (http://stackoverflow.com/questions/33027611/how-to-index-a-vector-sequence-within-a-vector-sequence) sollte ähnlich sein –
Eigentlich vielleicht ignorieren Sie die Bearbeitung Ich glaube, du hast mich hier abgedeckt. – etaylor