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ı?
letterszaman örneğinizdeki gibi uzunluk üç değil, değil mi?
fixed = TRUEiçinde strsplit()o regex kullanımı söz konusu olmayacaktır olarak performansını artırabilir.