Làm thế nào tôi có thể sắp xếp hiệu quả các ký tự của mỗi chuỗi trong một vectơ? Ví dụ, đưa ra một vectơ của chuỗi:
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)))
Tôi đã viết một hàm sẽ chia mỗi chuỗi thành một vectơ, sắp xếp vectơ và sau đó thu gọn đầu ra:
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)
Tuy nhiên, vectơ của chuỗi tôi cần áp dụng điều này rất dài và chức năng này quá chậm. Có ai có bất kỳ đề nghị cho làm thế nào để cải thiện hiệu suất?
letters
không phải lúc nào chiều dài ba như trong ví dụ của bạn, chúng là gì?
fixed = TRUE
vào strsplit()
có thể cải thiện hiệu suất vì nó sẽ không liên quan đến việc sử dụng regex.