В Ruby я мог бы повторить строку n раз со следующим:
например. "my_string" * 2 -> "my_stringmy_string"
Существует ли такой же простой способ для этого в R?
В Ruby я мог бы повторить строку n раз со следующим:
например. "my_string" * 2 -> "my_stringmy_string"
Существует ли такой же простой способ для этого в R?
Вы можете использовать replicate
или rep
:
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"
С R 3.3.0
мы можем использовать strrep
из base R
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"
Используйте stri_dup
функцию из пакета stringi
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