Bir vektördeki her dizenin karakterlerini nasıl verimli bir şekilde sıralayabilirim? Örneğin, dizelerin bir vektörü verildiğinde:
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)))
Her dizeyi bir vektöre bölmek, vektör sıralamak ve daha sonra çıktı daraltmak bir işlev yazdım:
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)
Ancak, bunu uygulamak için gereken dizeleri vektörü çok uzun ve bu işlev çok yavaş. Performansı nasıl artıracağına dair herhangi bir önerisi olan var mı?
letters
zaman örneğinizdeki gibi uzunluk üç değil, değil mi?
fixed = TRUE
içinde strsplit()
o regex kullanımı söz konusu olmayacaktır olarak performansını artırabilir.