Come posso ordinare in modo efficiente i caratteri di ogni stringa in un vettore? Ad esempio, dato un vettore di stringhe:
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)))
Ho scritto una funzione che divide ogni stringa in un vettore, ordina il vettore e quindi comprime l'output:
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)
Tuttavia, il vettore di stringhe a cui devo applicare questo è molto lungo e questa funzione è troppo lenta. Qualcuno ha qualche suggerimento su come migliorare le prestazioni?
letters
sono sempre di lunghezza tre come nel tuo esempio, vero?
fixed = TRUE
nel strsplit()
possa migliorare le prestazioni in quanto non comportano l'uso di espressioni regolari.