Como posso classificar eficientemente os caracteres de cada string em um vetor? Por exemplo, dado um vetor de strings:
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)))
Eu escrevi uma função que irá dividir cada seqüência de caracteres em um vetor, classificar o vetor e recolher a saída:
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)
No entanto, o vetor de strings ao qual preciso aplicar isso é muito longo e essa função é muito lenta. Alguém tem alguma sugestão de como melhorar o desempenho?
letters
não são sempre de comprimento três como no seu exemplo, são eles?
fixed = TRUE
de strsplit()
pode melhorar o desempenho, pois não irá envolver o uso de regex.