Форматирование с sprintf()
Часть раздела Логика и потоки выполнения путешествия по R на Coddy. Урок 2 из 64.
sprintf() создаёт строку из шаблона. Каждый заполнитель % заменяется следующим аргументом: %s — для текста, %d — для целых чисел, а %f — для десятичных чисел.
name <- "Ada"
age <- 36
print(sprintf("%s is %d years old", name, age))Вывод:
[1] "Ada is 36 years old"%d принимает только целые числа: sprintf("%d", 2.5) завершается с ошибкой.
Точность между % и f задаёт количество знаков после запятой, поэтому %.2f округляет до двух знаков:
total <- 3 * 4.5 * 1.2
print(sprintf("Total: %.2f", total))Вывод:
[1] "Total: 16.20"Ширина дополняет значение до указанного количества символов: %5d дополняет слева, %-6s дополняет справа, а %03d дополняет нулями. %% выводит знак процента.
print(sprintf("[%5d]", 42))
print(sprintf("[%-6s]", "tea"))
print(sprintf("%03d", 7))
print(sprintf("%d%%", 85))Вывод:
[1] "[ 42]"
[1] "[tea ]"
[1] "007"
[1] "85%"sprintf() векторизована: с векторными аргументами она возвращает по одной строке для каждого элемента. cat() с sep = "\n" выводит каждую строку на отдельной строке.
items <- c("tea", "cake")
prices <- c(4, 12.5)
lines <- sprintf("%-5s %6.2f", items, prices)
cat(lines, sep = "\n")Результат:
tea 4.00
cake 12.50Задание
ЛегкоЗавершите receipt_line(item, qty, price). Верните товар, количество и итоговую сумму строки (qty * price) в форме tea x3 = 13.50: товар, пробел, x, за которым следует количество, затем = и итоговая сумма ровно с двумя знаками после запятой.
Предоставленный код считывает товар, количество и цену (по одному значению в строке) и выводит возвращённое значение.
Попробуйте сами
receipt_line <- function(item, qty, price) {
# Напишите свой код здесь
""
}
# Предоставленный код ввода/вывода: оставьте его как есть
input <- suppressWarnings(readLines(file("stdin")))
cat(receipt_line(input[1], as.integer(input[2]), as.numeric(input[3])), sep = "\n")
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки углублённо
Подстроки с substr()Форматирование с sprintf()Разделение и объединениеПоиск в строкахЗамена текстаПовторение — создание имени пользователя4Матрицы
Создание матрицИндексация матрицСводные данные по строкам и столбцамАрифметика матрицПовторение — схема рассадки7Семейство Apply
lapply и sapplyMap и mapplyFilter и FindReduceПовторение — конвейер обработки данных10Продвинутые конструкции управления
Функция switch()Векторизованный ifelse()repeat и breakРекурсивные функцииПовторение — классификатор оценок2Поиск по ключам и значениям
Поиск в именованных векторахПроверка ключейДобавление и удаление ключейПеребор имёнПовторение — биржа акций5Проект — Журнал оценок
Добавление учениковВыставление оценок3Множества и подсчёт
Уникальные значенияОперации с множествамиПроверка принадлежностиПодсчёт с помощью table()Повторение — гости мероприятия6Функции как значения
Анонимные функцииПередача функцийВозврат функцийЗамыкания с состояниемПовторение — правила скидок9Таблицы данных
Создание таблиц данныхСтолбцы и строкиФильтрация строкДобавление и сортировкаПовторение — отчёт о продажах12Проект — Трекер расходов
Запись расходовОбщие расходыПотренируйтесь самостоятельно: Онлайн-компилятор R