#r
#r
Вопрос:
Я просто хочу напечатать несколько строк символов aestrick во время выполнения кода. Я могу использовать print(strrep("*",20))
для печати одной строки из 20 *
, но как я могу напечатать 20 строк из них без использования каких-либо циклов?
Комментарии:
1.
rep(strrep("*",20),20)
выдает вам 20 строк по 20 символов в каждой. Если они вам нужны в отдельных строках, как насчетcat(paste(rep(strrep("*",20),20),collapse="n"))
?2. @r2evans Это работает. Спасибо
Ответ №1:
Здесь показан литерал «как мне повторить»:
rep(strrep("*",5),4)
# [1] "*****" "*****" "*****" "*****"
Если вы намереваетесь предварительно напечатать все это последовательно на консоли, то
paste(rep(strrep("*",5),4), collapse="n")
# [1] "*****n*****n*****n*****"
cat(paste(rep(strrep("*",5),4), collapse="n"))
# *****
# *****
# *****
# *****
где последний cat
использует это напрямую. Обратите внимание, что cat
это не добавляет последнюю новую строку; если вам это нужно, то сделайте cat(..., "n")
.
Однако вы могли бы рассмотреть возможность использования message
вместо cat
:
message(paste(rep(strrep("*",5),4), collapse="n"))
# *****
# *****
# *****
# *****
Для этого не требуется завершающий символ новой строки, как cat
это делает (хотя вы можете подавить завершающий LF с помощью appendLF=FALSE
). Это позволяет любому, кто использует вашу функцию, подавлять эти сообщения с помощью suppressMessages(...)
, что часто приятно для авторов функций.
Ответ №2:
Это может помочь. Функция напечатает любое количество строк, которое вы хотите.
fun<-function(x){
rep(paste(strrep("*",20),sep = "n"),x)}
fun(20)
Всего за 20 раз вы могли бы использовать:
rep(paste(strrep("*",20),sep = "n"),20)
Надеюсь, это поможет.