Как повторить строку N раз в R? В Ruby я мог бы повторить строку n раз со следующим: например. "my_string" * 2 -> "my_stringmy_string" Существует ли такой же простой способ для этого в R? Ответ 1 Вы можете использовать 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" Ответ 2 С 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" Ответ 3 Используйте 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
Ответ 1 Вы можете использовать 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"
Ответ 2 С 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"
Ответ 3 Используйте 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