Як я можу ефективно сортувати символи кожного рядка у векторному? Наприклад, заданий вектор рядків:
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)))
Я написав функцію, яка розділить кожну рядок на вектор, сортуватиме вектор, а потім згортає вихід:
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)
Однак вектор рядків, до яких мені потрібно застосувати це, дуже довгий, і ця функція занадто повільна. Хтось має пропозиції щодо підвищення ефективності?
letters
Не завжди довжини три , як у вашому прикладі, вони?
fixed = TRUE
в програму strsplit()
може покращити продуктивність, оскільки це не передбачає використання регулярного виразу.