在R中粘贴字符串的最有效方法是什么?

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的大小,这非常慢。是否有性能更高的替代方法?

mar*_*kus 5

更有效的方法是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)