重复并连接字符串 N 次

在 Ruby 中,我可以用下面的代码重复一个字符串 n 次:

E.G. "my_string" * 2 -> "my_stringmy_string"

在 R 中有同样简单的方法吗?

100959 次浏览

你可以使用 replicaterep:

replicate(2, "my_string")
# [1] "my_string" "my_string"


rep("my_string", 2)
# [1] "my_string" "my_string"

paste将把它们组合在一起:

paste(replicate(2, "my_string"), collapse = "")
# [1] "my_stringmy_string"

使用 stringi包中的 stri_dup函数

stri_dup("abc",3)
[1] "abcabcabc"

它也是向量化的,所以你可以这样做:

> stri_dup(letters[1:3],4)
[1] "aaaa" "bbbb" "cccc"

表现比较:)

> microbenchmark(stri_dup("abc",3),paste(replicate(3, "abc"), collapse = ""))
Unit: microseconds
expr    min     lq  median     uq     max neval
stri_dup("abc", 3)  2.362  3.456  7.0030  7.853  64.071   100
paste(replicate(3, "abc"), collapse = "") 57.131 61.998 65.2165 68.017 200.626   100


> microbenchmark(stri_dup("abc",300),paste(replicate(300, "abc"), collapse = ""))
Unit: microseconds
expr     min       lq   median      uq     max neval
stri_dup("abc", 300)   6.441   7.6995  10.2990  13.757  45.784   100
paste(replicate(300, "abc"), collapse = "") 390.137 419.7740 440.5345 460.042 573.975   100

使用 R 3.3.0,我们可以使用来自 base Rstrrep

strrep("my_string",2)
#[1] "my_stringmy_string"

我们还可以在 times中传递值的向量

strrep("my_string",1:3)
#[1] "my_string"                   "my_stringmy_string"
#[3] "my_stringmy_stringmy_string"

stringr库提供了 str_dup()函数:

str_dup("my_string", 2)


[1] "my_stringmy_string"

它是通过字符串和时间向量化的:

str_dup(c("A", "B", "C"), 2:4)


[1] "AA"   "BBB"  "CCCC"