R:有没有办法加快字符串的排序?

xia*_*dai 2 sorting r

我试图对字符串向量进行排序,请参阅下面的MWE

# example R code    
N=1e8; K=100
set.seed(1)
id3 = sample(sprintf("i%07d",1:(N/K)), N, TRUE)
pt = proc.time()
sort(id3)
data.table::timetaken(pt)
Run Code Online (Sandbox Code Playgroud)

并且它在我的电脑上没有完成将近5分钟,所以我取消了它.

我注意到在Julia中,我的笔记本电脑上可以在大约90秒内执行相同的操作

# example Julia cde
const M=100_000_000; const K=100
srand(1)
svec1 = rand(["i"*dec(k,7) for k in 1:M÷K], M)
@time sort(svec1)
Run Code Online (Sandbox Code Playgroud)

xia*_*dai 6

只需使用method = "radix"基数排序来加速排序

N=1e8; K=100
set.seed(1)
id3 = sample(sprintf("i%07d",1:(N/K)), N, TRUE)
pt = proc.time()
sort(id3, method="radix")
data.table::timetaken(pt)
Run Code Online (Sandbox Code Playgroud)

它在我的笔记本电脑上完成了18秒.