Wie kann ich die Zeichen jeder Zeichenfolge in einem Vektor effizient sortieren? Beispiel: Geben Sie einen Vektor von Zeichenfolgen an:
set.seed(1)
strings <- c(do.call(paste0, replicate(4, sample(LETTERS, 10000, TRUE), FALSE)),
do.call(paste0, replicate(3, sample(LETTERS, 10000, TRUE), FALSE)),
do.call(paste0, replicate(2, sample(LETTERS, 10000, TRUE), FALSE)))
Ich habe eine Funktion geschrieben, die jede Zeichenfolge in einen Vektor aufteilt, den Vektor sortiert und dann die Ausgabe reduziert:
sort_cat <- function(strings){
tmp <- strsplit(strings, split="")
tmp <- lapply(tmp, sort)
tmp <- lapply(tmp, paste0, collapse = "")
tmp <- unlist(tmp)
return(tmp)
}
sorted_strings <- sort_cat(strings)
Der Vektor der Zeichenfolgen, auf den ich dies anwenden muss, ist jedoch sehr lang und diese Funktion ist zu langsam. Hat jemand Vorschläge zur Verbesserung der Leistung?
letters
haben nicht immer die Länge drei wie in Ihrem Beispiel, oder?
fixed = TRUE
in strsplit()
kann die Leistung verbessern , da es nicht die Verwendung von Regex beteiligen.