Bagaimana saya bisa mengurutkan karakter setiap string secara efisien dalam vektor? Misalnya, diberi vektor string:
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)))
Saya telah menulis fungsi yang akan membagi setiap string menjadi vektor, mengurutkan vektor, dan kemudian menciutkan hasilnya:
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)
Namun, vektor string yang saya perlu terapkan ini sangat panjang, dan fungsi ini terlalu lambat. Adakah yang punya saran untuk meningkatkan kinerja?
letterstidak selalu panjang tiga seperti dalam contoh Anda, apakah mereka?
fixed = TRUEdalam strsplit()dapat meningkatkan kinerja karena tidak akan melibatkan penggunaan regex.