Вывод с помощью cat() и print()
Различайте cat() для вывода в консоль и print() для объектов.
«Вывод с помощью cat() и print()» — бесплатный урок R Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения R Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс R Academy содержит 4 уроков всего.
print() — функция вывода по умолчанию
print() — стандартный метод R для отображения объектов. Он использует класс объекта, чтобы выбрать подходящий метод форматирования. В интерактивных сеансах ввод имени переменной эквивалентен вызову для неё print().
x <- c(1, 2, 3, 4, 5)
print(x)
# Equivalent to:
xcat() — вывод необработанного текста
cat() объединяет аргументы и выводит их как необработанный текст: без окружающих кавычек, без маркеров индексов вроде [1] и по умолчанию без перевода строки в конце. Эта функция предназначена для вывода форматированного текста, а не для отображения объектов R.
name <- 'Alice'
age <- 30
cat('Name:', name, '\n')
cat('Age:', age, '\n')
cat('Score:', 92.5, '\n')Главное различие: кавычки и [1]
Наиболее заметное различие состоит в том, как отображаются строки. print() заключает строки в кавычки и добавляет [1], а cat() выводит необработанные символы без каких-либо дополнительных обозначений.
msg <- 'Hello World'
print(msg)
cat(msg, '\n')cat() с аргументом sep
cat() принимает аргумент sep, который вставляется между каждым элементом вывода. По умолчанию используется один пробел. Укажите sep = '', чтобы не использовать разделитель, или любую другую строку для точного форматирования вывода.
cat('a', 'b', 'c', sep = '')
cat('a', 'b', 'c', sep = '-')
cat(1:5, sep = ', ')
cat('x =', 42, sep = '')cat() с аргументом fill
Аргумент fill добавляет перевод строки, когда вывод превышает заданную ширину в символах. При значении fill = TRUE используется текущая настройка width. Это удобно для переноса длинных последовательностей слов.
words <- c('The', 'quick', 'brown', 'fox', 'jumps',
'over', 'the', 'lazy', 'dog')
cat(words, fill = 30)Диспетчеризация методов print()
print() — это обобщённая функция: она выбирает метод, предназначенный для конкретного класса. Например, print.data.frame удобно форматирует таблицы данных, а print.factor отображает уровни и т. д. Поэтому один и тот же вызов выглядит по-разному для разных объектов.
# print dispatches differently per class
print(42L) # integer
print(factor(c('a', 'b', 'a'))) # factor with levels
print(list(x = 1, y = 'hi')) # listinvisible() — отключение автоматического вывода
invisible(x) возвращает свой аргумент, но отключает автоматический вывод, когда значение возвращается из функции или выражения. Эта функция используется в функциях, которые должны молча возвращать значения, например в операторах присваивания.
# Explicit print shows the value
f <- function(x) invisible(x * 2)
result <- f(5)
# Nothing printed automatically
f(5)
# But print() forces it
print(f(5))message() — вывод в stderr
message() записывает данные в stderr, а не в stdout. Она автоматически добавляет перевод строки. В отличие от cat() и print(), сообщения можно подавить с помощью suppressMessages() и перехватить с помощью tryCatch().
message('This goes to stderr')
cat('This goes to stdout\n')
# Suppress messages:
suppressMessages(message('hidden'))
cat('Still visible\n')Когда использовать cat(), а когда print()
Используйте cat(), когда нужно вывести понятный человеку текст — строки журнала, сообщения о ходе выполнения или форматированные отчёты. Используйте print(), когда нужно достоверно исследовать объекты R, сохранив сведения об их типах и структуре.
# cat() for formatted output
cat(sprintf('Processing %d records...\n', 500))
cat('Done.\n')
# print() to inspect objects
result <- list(n = 500, mean = 4.2, sd = 1.1)
print(result)print() для таблиц данных
print.data.frame форматирует таблицы данных, добавляя номера строк, заголовки столбцов и выровненные значения. Управлять количеством отображаемых строк можно с помощью конструкции вида print(df, n = k) или вызвав head() перед выводом.
df <- data.frame(
name = c('Alice', 'Bob', 'Carol'),
score = c(88, 95, 72)
)
print(df)cat() для отображения хода цикла
Одно из практических применений cat() — вывод хода выполнения цикла. Поскольку cat() не добавляет переводы строк автоматически, можно постепенно формировать строку, а затем завершить её с помощью '\n'.
for (i in 1:5) {
cat(sprintf('Processing file %d of 5...\n', i))
}
cat('All files processed.\n')Быстрая проверка
Какая функция вывода записывает данные в stderr, автоматически добавляет перевод строки и может быть подавлена с помощью suppressMessages()?
Функции вывода: основные выводы
Основные выводы о функциях вывода в R:
print(x)— исследование объектов R; использует форматирование для конкретного класса; добавляет[1]и кавычкиcat(...)— вывод необработанного текста; без кавычек и автоматического перевода строки; используйте'\n'явноcat()принимаетsepиfillдля управления форматированиемinvisible(x)— возвращает x без автоматического выводаmessage()— выводит данные в stderr и автоматически добавляет перевод строки; подавляется с помощьюsuppressMessages()- Используйте
cat()вместе сsprintf()для форматированных отчётов и журналов
x <- 'result'
print(x) # shows: [1] "result"
cat(x, '\n') # shows: result
message('info: ', x) # goes to stderr
f <- function() invisible(42)
f() # nothing printed
print(f()) # forces print: [1] 42Часто задаваемые вопросы
Урок «Вывод с помощью cat() и print()» бесплатный?
Да — полный текст урока «Вывод с помощью cat() и print()» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс R Academy, подпишись на CoddyKit PRO. Курс R Academy содержит 4 уроков всего.
Чему я научусь в уроке «Вывод с помощью cat() и print()»?
Различайте cat() для вывода в консоль и print() для объектов. Ты практикуешь R Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать R Academy?
Предыдущий опыт не требуется. R Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Вывод с помощью cat() и print()»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке R Academy?
Да. Каждый урок R Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание строк с помощью paste() и paste0()
- Форматированный вывод с помощью sprintf()
- Вывод с помощью cat() и print()
- Заполнение и выравнивание строк