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?
letters
tidak selalu panjang tiga seperti dalam contoh Anda, apakah mereka?
fixed = TRUE
dalam strsplit()
dapat meningkatkan kinerja karena tidak akan melibatkan penggunaan regex.