2010-11-22 3 views
5

Gibt es in R eine integrierte Funktionalität zum Sortieren von Zeichenvektoren unter Berücksichtigung von Groß- und Kleinschreibung? sort und order ignorieren den Fall:Groß-/Kleinschreibung beim Sortieren von Zeichenketten nicht ignorieren

tv <- c("a", "A", "ab", "B") 
sort(tv) 
## [1] "a" "A" "ab" "B" 

Dies ist meine Lösung so weit:

Sys.setlocale(, "C") 
sort(tv) 
# [1] "A" "B" "a" "ab" 

EDIT:

CAPS <- grep("^[A-Z]", tv) 
c(sort(tv[CAPS]), sort(tv[-CAPS])) 
## [1] "A" "B" "a" "ab" 

Antwort

10

post about Auto-completion in Notepad++ Nach Sie lokale Einstellungen ändern könnte. Ich lese Hilfeseiten Sys.setlocale und es scheint, dass LC_COLLATE Wechsel genügt: Sys.setlocale("LC_COLLATE", "C")

Sie es in eine Funktion wickeln könnte, wenn Sie es mehr als einmal:

sortC <- function(...) { 
    a <- Sys.getlocale("LC_COLLATE") 
    on.exit(Sys.setlocale("LC_COLLATE", a)) 
    Sys.setlocale("LC_COLLATE", "C") 
    sort(...) 
} 
+0

Ich hatte genau das entgegengesetzte Problem, das heißt mein Standard LC_COLLATE war "C" und ich wollte Groß-und Kleinschreibung verwenden. Ich habe nichts besseres gefunden, als einige installierte Locales zu testen und die 3. Zeile der Funktion durch Sys.setlocale ("LC_COLLATE", "eu_ES.iso88591") zu ersetzen. Ich bin mir sicher, dass es falsch ist. Was ist der richtige Weg? –

+0

Eine bessere Methode ist die Verwendung von 'stringr :: str_sort' und Sie können das Gebietsschema so zuweisen, dass es konsistente Ergebnisse liefert. – dracodoc

Verwandte Themen