Значения параметров по умолчанию
Часть раздела Основы путешествия по R на Coddy — урок 51 из 78.
Иногда вам нужно, чтобы функция имела «стандартное» поведение, которое можно настроить при необходимости. Значения параметров по умолчанию позволяют определить, каким должен быть параметр, если вызывающая сторона его не указывает.
Вы устанавливаете значение по умолчанию, используя = в определении функции:
greet <- function(name = "Guest") {
print(paste("Hello,", name))
}
greet()
greet("Alice")Вывод:
[1] "Hello, Guest"
[1] "Hello, Alice"При вызове без аргумента функция использует "Guest" в качестве значения по умолчанию. Когда вы передаете значение, оно переопределяет значение по умолчанию.
Вы можете смешивать обязательные и необязательные параметры. Параметры со значениями по умолчанию должны идти после параметров без них:
calculate_total <- function(price, tax_rate = 0.1) {
return(price + (price * tax_rate))
}
print(calculate_total(100))
print(calculate_total(100, 0.2))Вывод:
[1] 110
[1] 120Здесь price является обязательным, в то время как tax_rate по умолчанию составляет 10%. Это делает ваши функции гибкими — простыми в использовании в обычных случаях, но настраиваемыми при необходимости.
Задание
ЛегкоСоздайте функцию с именем calculate_shipping, которая принимает два аргумента:
weight— вес посылки (обязательный)rate— стоимость за единицу веса (необязательный, по умолчанию равен5)
Функция должна возвращать стоимость доставки, вычисляемую как weight * rate.
Вы получите две строки входных данных:
- Значение веса
- Либо значение тарифа (rate), ЛИБО слово
default
Если второй входной аргумент равен default, вызовите функцию только с весом (используя тариф по умолчанию). В противном случае вызовите функцию, передав и вес, и предоставленный тариф.
Выведите возвращенный результат.
Например, если входные данные следующие:
10
defaultВыходные данные должны быть:
[1] 50Если входные данные следующие:
10
3Выходные данные должны быть:
[1] 30Шпаргалка
Вы можете задать значения параметров по умолчанию в функции, используя = в определении функции:
greet <- function(name = "Guest") {
print(paste("Hello,", name))
}
greet() # Использует значение по умолчанию: "Hello, Guest"
greet("Alice") # Переопределяет значение по умолчанию: "Hello, Alice"При смешивании обязательных и необязательных параметров располагайте параметры со значениями по умолчанию после параметров без них:
calculate_total <- function(price, tax_rate = 0.1) {
return(price + (price * tax_rate))
}
calculate_total(100) # Использует tax_rate по умолчанию: 110
calculate_total(100, 0.2) # Пользовательский tax_rate: 120Попробуйте сами
# Чтение входных данных
con <- file("stdin", "r")
weight <- as.numeric(suppressWarnings(readLines(con, n = 1)))
rate_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# TODO: Напишите ваш код ниже
# 1. Определите функцию calculate_shipping с параметрами weight (обязательный) и rate (необязательный, по умолчанию = 5)
# 2. Проверьте, является ли rate_input строкой "default" или числом
# 3. Вызовите функцию соответствующим образом и выведите результатВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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)Функции для работы со строками