Ersetzen gesamte Ausdruck, der eine spezielle Zeichenfolge enthält

Habe ich Daten-frame, der hat eine Spalte mit einer großen Anzahl von Datei-Namen, wie:

d <- c("harry11_scott80_norm.avi","harry11_norm.avi","harry11_scott80_lpf.avi", 
       "joel51_lpf.avi","rich82_joel51_lpf.avi")

Ich möchte, dass R zu ersetzen, alle Ausdrücke, die mit zwei Personen Namen wie harry11_scott80_norm.avi mit dem Ausdruck incongruent und alle, die mit der einzelnen person name wie harry11_norm.avi mit congruent. Ich könnte gsub zu tun:

dd <- gsub("harry11_scott80_norm.avi", "incongruent", d) 

aber ich habe eine Menge dieser Namen, so wäre es eine sehr klobig Lösung. Also idealerweise möchte ich ersetzen Sie den GESAMTEN Ausdruck, der strings enthält, wie _scott80_ mit "inkongruent". Ich dachte, dass gsub dies tun können, aber wenn ich es laufen:

dd <- gsub("_scott80_", "incongruent", d)

gibt es mit harry11incongruentnorm.avi, das ist natürlich, weil es einfach ersetzen Sie die exakte Zeichenfolge übereinstimmt. Ich recon es eine Möglichkeit gibt, zu sagen gsub zu ersetzen-Ausdruck vollständig enthält ausgewählte Zeichenfolge, aber ich kann es nicht finden.

Es war eine Frage In R, wie kann ich ersetzen Sie eine Zeichenfolge mit einem bestimmten Muster durch eine andere Zeichenfolge?, aber ich bin nicht sicher, wie Sie Sie verwenden agrep in diesem Zusammenhang.


EDIT: Seite bonus-Frage - basierend auf dem @GSEE umfasst die Antwort, gibt es irgendeine Funktion, mit der Sie übergeben eine Liste von strings, die Sie ersetzen möchten? Zum Beispiel gsub(c(".*_scott80_.*", ".*_harry11_.*"), "incongruent", d) wird nicht funktionieren.

InformationsquelleAutor Geek On Acid | 2012-11-07
Schreibe einen Kommentar