Pow*_*ege 7 performance r paste
我有两个非常大的向量,需要将它们与定界符连接起来以形成唯一的ID。例如:
set.seed(1)
vec1 <- sample(1:10, 10000000, replace = T)
vec2 <- sample(1:1000000000, 10000000))
Run Code Online (Sandbox Code Playgroud)
我目前正在使用paste0():
system.time({
uniq_id <- paste0(vec1, "_", vec2)
})
Run Code Online (Sandbox Code Playgroud)
但是,由于vec1和vec2的大小,这非常慢。是否有性能更高的替代方法?
更有效的方法是stringi::stri_c
library(microbenchmark)
b <- microbenchmark(
paste = paste0(vec1, "_", vec2),
stringi = stringi::stri_c(vec1, vec2, sep = "_"),
times = 10
)
Run Code Online (Sandbox Code Playgroud)
结果
b
#Unit: seconds
# expr min lq mean median uq max neval cld
# paste 5.475398 5.509957 5.544477 5.542728 5.566904 5.632173 10 b
# stringi 3.862541 3.871826 3.896242 3.897264 3.914894 3.934175 10 a
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
149 次 |
最近记录: |