Основы преобразования типов
Часть раздела Основы путешествия по R на Coddy — урок 30 из 78.
Как упоминалось в предыдущем уроке, readline() всегда возвращает строку символов. Если пользователь вводит "25", вы получаете текст "25", а не число 25. Это важно, потому что вы не можете выполнять математические операции с текстом.
Чтобы преобразовать строку символов в число, используйте as.numeric():
input <- "42"
number <- as.numeric(input)
cat(number + 8, "\n") # Вывод: 50Это важно при работе с пользовательским вводом. Вот распространенный шаблон, который вы будете использовать:
age_text <- readline()
age <- as.numeric(age_text)
cat("In 10 years, you will be", age + 10, "\n")Вы также можете выполнить преобразование в обратном направлении, используя as.character():
number <- 100
text <- as.character(number)
cat("The value is:", text, "\n")Преобразование чисел в символы полезно, когда вам нужно объединить их с другим текстом или когда функция специально требует ввода символов. Эти функции преобразования — ваши инструменты для перехода между типами данных всякий раз, когда это требуется вашей программе.
Задание
ЛегкоПрочитайте два числовых значения в качестве входных данных, выполните расчет и выведите результат с меткой.
Вы получите два входных значения:
- Цена (в виде строки)
- Количество (в виде строки)
Преобразуйте оба входных значения в числовые с помощью as.numeric(), затем рассчитайте общую стоимость, умножив цену на количество.
Выведите результат в следующем формате:
Total: [result]Используйте cat() для вывода и добавьте символ новой строки \n в конце.
Например, если входные данные — 15.50 и 4, результат должен быть:
Total: 62Шпаргалка
Используйте as.numeric() для преобразования текстовой строки в число:
input <- "42"
number <- as.numeric(input)
cat(number + 8, "\n") # Вывод: 50Распространенный шаблон для преобразования пользовательского ввода:
age_text <- readline()
age <- as.numeric(age_text)
cat("In 10 years, you will be", age + 10, "\n")Используйте as.character() для преобразования числа в текстовую строку:
number <- 100
text <- as.character(number)
cat("The value is:", text, "\n")Попробуйте сами
# Чтение входных данных
con <- file("stdin", "r")
price_str <- suppressWarnings(readLines(con, n = 1))
quantity_str <- suppressWarnings(readLines(con, n = 1))
close(con)
# TODO: Напишите ваш код ниже
# 1. Преобразуйте price_str и quantity_str в числовые значения с помощью as.numeric()
# 2. Рассчитайте общую стоимость (цена * количество)
# 3. Выведите результат с помощью cat() в формате "Total: [result]\n"В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы (AND, OR)Логические операторы. Часть 2 (NOT)Повторение: простая логикаВекторизованная логика. Часть 1Векторизованная логика. Часть 27Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Векторы: продвинутый уровень
Срезы и индексация векторовЛогическая индексацияАрифметика и ресайклинг векторовОператор %in%2Переменные и типы данных
Числовой тип данныхЦелочисленный тип данныхСимвольный тип данныхЛогический тип данныхПроверка типов данныхПравила именованияПропущенные значения: NAИтоги — создание переменных5Принятие решений
Оператор ifКонструкция if - elseПовторение: Простой калькуляторВложенные конструкции if - else8Циклы
Цикл ForЦикл WhileBreakNext (Continue)Повторение: ФакториалГенерация последовательностей (seq, :)Вложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыЦелочисленное деление и остаток от деленияОператоры присваиванияПовторение: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод через printКоманда cat для выводаВывод с переменнымиЧтение ввода через readline()Основы преобразования типовПовторение — Калькулятор возрастаПовторение — Истина или ложь9Функции
Объявление функцииАргументы функцииВозвращаемые значенияПовторение — функция SigmaПовторение — функция валидацииЗначения параметров по умолчанию12Итерация по последовательностям
Итерация по элементам вектораИспользование seq_along()Итерация по символам (strsplit)Функции для работы со строками