Extrahieren von Zeichen, die sich zwischen zwei strings
Habe ich verwendet adist
berechnen Sie die Anzahl der Zeichen, die sich zwischen zwei Saiten:
a <- "Happy day"
b <- "Tappy Pay"
adist(a,b) # result 2
Nun möchte ich diese zu extrahieren Zeichen, die sich voneinander unterscheiden. In meinem Beispiel würde ich gerne den string "Hd"
(oder "TP"
hat, ist es egal).
Ich versuchte, in adist
, agrep
und stringi
aber nichts gefunden.
- Ich schlage vor, Sie rückgängig machen, die Bearbeiten und eine neue Frage stellen. In dieser neuen Frage, die Sie haben viel mehr Informationen über Ihre realen Daten. Zum Beispiel spielt es enorm, ob Sie wissen, dass die andere Zeichenfolge ist am Anfang vs. am Ende der Zeichenfolge. Sie haben auch, um uns zu sagen, wenn Ihr problem bezieht sich auf die longest common substring problem.
- Vereinbart wurde, rückgängig machen, Bearbeiten, akzeptieren die beste Antwort und eine neue Frage stellen. Die Frage ist ganz wesentlich anders, und eine Menge Leute haben eine Menge Arbeit bereits.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die folgende Sequenz von Vorgängen:
strsplit()
.setdiff()
zu vergleichen, die ElementeVersuchen Sie dies:
do.call(setdiff, strsplit(c(a, b), split = ""))
werden wahrscheinlich effizienterstrsplit
istsplit
so brauchen Sie nicht, es zu benennen, wenn Sie möchten, zu bekommen, die in weniger Schüsse.Reduce
ist ein kleiner Tastendruck alsdo.call
🙂Aufgeteilt in die Buchstaben und nehmen Sie die Differenz als sets
Nicht wirklich stolz auf diese, aber es scheint, um den job zu erledigen:
Ergebnisse:
intToUtf8(setdiff(utf8ToInt(a), utf8ToInt(b)))
Können Sie eine der Variablen als regex Zeichenklasse und
gsub
aus dem anderen:^
und-
Probleme verursachen können. Dies könnte ein besonderes Problem mit Bindestrich-Wörtern.Solange
a
undb
haben die gleiche Länge wir dies tun können:geben:
Scheint dies einfach in Bezug auf die Klarheit des Codes und erscheint gebunden für die schnellsten der Lösungen hier, obwohl ich denke, dass ich lieber
f3
:geben Sie den folgenden auf eine frische session auf meinem laptop:
Habe ich angenommen, dass die Unterschiede müssen in die entsprechenden Zeichen-Positionen. Möchten Sie vielleicht, um zu klären, ob das die Absicht ist oder nicht.
Die folgende Funktion könnte eine bessere option sein, um Probleme zu lösen, wie dies.
Dann können Sie
man den Unterschied.