Gibt es eine Möglichkeit, den Operator im Paket datatable
so zu schalten, dass die Groß-/Kleinschreibung nicht beachtet wird? So würde zum Beispiel 'hello' %like% 'HELlo'
übereinstimmen.So erhalten Sie den Operator% like%, um die Groß-/Kleinschreibung nicht zu berücksichtigen
Antwort
Durch die nicht in data.table
auf der Definition unter Berufung:
`%like%` <- function (x, pattern) {
stringi::stri_detect_regex(x, pattern, case_insensitive=TRUE)
}
data.table
definiert sie als:
function (vector, pattern)
{
if (is.factor(vector)) {
as.integer(vector) %in% grep(pattern, levels(vector))
}
else {
grepl(pattern, vector)
}
}
Sie könnten den factor
Fall decken, wenn Sie mögen, aber es ist nicht eine sehr komplexe Funktion. Keine "Magie" drin.
Ich benutze stringi
so wie es ist (für meine Arbeit) viel robuster als integrierte String-Ops und bietet viel mehr Leistung unter der Haube.
Sie können auch definieren als:
`%like%` <- function (x, pattern) {
grepl(pattern, x, ignore.case=TRUE)
}
(wieder, ohne auf den factor
Fall), wenn Sie möchten. Sie verlieren die vektorisierte pattern
dies tun, tho.
Machen Sie den Namen %likeic%
(wie, ignorieren Sie Groß- und Kleinschreibung), wenn Sie nicht die Definition für quetschen wollen.
Lektion ist: '% like%' ist eine Komfortfunktion, was bedeutet, dass sie für sehr häufige, aber einfache Situationen entwickelt wurde. Das wirkliche Arbeitstier ist 'grepl', das robustere Eigenschaften hat; und 'stringi' liefert ein noch leistungsfähigeres' grepl' – MichaelChirico
- 1. So verwenden Sie LIKE-Operator in Sheetrock
- 2. Python passt den Rückgabetyp an, um die Eingabetypen zu berücksichtigen
- 3. So erhalten Sie das Ergebnis einer Aufgabe, wenn Sie Task.WhenAny verwenden, um eine Zeitüberschreitung zu berücksichtigen
- 4. So erhalten Sie elasticsearch, um ähnlich wie SQL "LIKE" auszuführen
- 5. Kann ich die Anfragezeit berücksichtigen, um den Zeitunterschied zwischen JS-Client und Server zu erhalten?
- 6. Verwenden Sie den LIKE-Operator für den Parameter
- 7. So verwenden Sie Ajax, um dynamisch den Busplan zu erhalten
- 8. So zeigen Sie den Zeitunterschied, um eine Berechnung zu erhalten
- 9. SQL LIKE nicht/^ Operator und mehrere Zeichen
- 10. Logischer Operator OR, um den Wert zu erhalten
- 11. LIKE-Operator in XQL
- 12. Berücksichtigen Sie die Bildschirmgröße, um die Django-Website anzuzeigen
- 13. Wie zu verwenden "Like" -Operator in sqlAlchemy
- 14. Fall mit Like-Operator
- 15. Mysql like operator
- 16. Hive - LIKE Operator
- 17. Pyspark Datenframe LIKE Operator
- 18. Notwendigkeit Schleife zu ändern, um die Beitragskategorie zu berücksichtigen
- 19. MSBUILD: So analysieren Sie die Lösungsdatei, um Projektpfade zu erhalten
- 20. So optimieren Sie die Linq-Manipulation, um Zeilen zu erhalten
- 21. So erhalten Sie die Aktivität, um Methoden zu erben
- 22. VBA "Like" -Operator und Platzhalter
- 23. Wie erhalten Sie UITextView, um Zeilenumbrüche im Interface Builder zu berücksichtigen?
- 24. So erhalten Sie den Ländernamen
- 25. Warum GreenDAO LIKE-Operator nicht vollständig unterstützt?
- 26. LIKE-Operator funktioniert nicht in MYSQL
- 27. UIKIt: Die Größe einer Ansicht ändern, um Subviews zu berücksichtigen
- 28. Bitshift, um den Rest zu erhalten
- 29. SQL: Verwenden Sie den Operator SET, um ein Zählergebnis zu erhalten
- 30. So erhalten Sie die Standardshell
Sie könnten '% chin%' anstelle von '% like%' verwenden, oder wenn es eine Teilzeichenfolge ist, dann verwenden Sie 'grepl' mit dem Befehl' ignore.case' – akrun
Sie können auch 'tolower':' tolower verwenden a)% wie% tolower (b) ". – nicola
@nicola gute Idee danke – ChiseledAbs