如何有效地对向量中每个字符串的字符进行排序?例如,给定一个字符串向量:
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)
但是,我需要将其应用到的字符串向量很长,并且此功能太慢。有没有人对如何提高性能有任何建议?
1
检查一下stringi程序包-它提供了加速与基本的比较。Rich Scriven的答案提供了更多详细信息:stackoverflow.com/questions/5904797/…–
—
user2474226
在
—
jay.sf
letters
并不总是长三在你的榜样,是他们?
不,琴弦的长度可能会有所不同。
—
Powege
我认为添加
—
tmfmnk
fixed = TRUE
它strsplit()
可能会提高性能,因为它不涉及使用正则表达式。