在 Ruby 中,我可以用下面的代码重复一个字符串 n 次:
E.G. "my_string" * 2 -> "my_stringmy_string"
"my_string" * 2 -> "my_stringmy_string"
在 R 中有同样简单的方法吗?
你可以使用 replicate或 rep:
replicate
rep
replicate(2, "my_string") # [1] "my_string" "my_string" rep("my_string", 2) # [1] "my_string" "my_string"
paste将把它们组合在一起:
paste
paste(replicate(2, "my_string"), collapse = "") # [1] "my_stringmy_string"
使用 stringi包中的 stri_dup函数
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 R的 strrep
R 3.3.0
base R
strrep
strrep("my_string",2) #[1] "my_stringmy_string"
我们还可以在 times中传递值的向量
times
strrep("my_string",1:3) #[1] "my_string" "my_stringmy_string" #[3] "my_stringmy_stringmy_string"
stringr库提供了 str_dup()函数:
stringr
str_dup()
str_dup("my_string", 2) [1] "my_stringmy_string"
它是通过字符串和时间向量化的:
str_dup(c("A", "B", "C"), 2:4) [1] "AA" "BBB" "CCCC"