Как я могу эффективно отсортировать символы каждой строки в векторе? Например, задан вектор строк:
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()
может улучшить производительность , поскольку она не будет включать в себя использование регулярных выражений.