Возвращаемые значения
Часть раздела Основы путешествия по R на Coddy — урок 48 из 78.
До сих пор наши функции выводили результат напрямую. Но часто требуется, чтобы функция вычислила значение и вернула его, чтобы вы могли использовать его в другом месте вашего кода. Именно здесь на помощь приходят возвращаемые значения.
Используйте функцию return(), чтобы вернуть значение из вашей функции:
add <- function(a, b) {
return(a + b)
}
result <- add(5, 3)
print(result)Вывод:
[1] 8Вместо того чтобы выводить результат внутри функции, мы возвращаем сумму. Затем возвращаемое значение можно сохранить в переменной, использовать в вычислениях или передать в другие функции.
Это делает функции гораздо более универсальными:
double <- function(x) {
return(x * 2)
}
print(double(5) + double(3))Вывод:
[1] 16В языке R, если вы не используете return(), функция автоматически возвращает последнее вычисленное выражение. Однако явное использование return() делает ваш код более понятным и особенно полезно, когда вам нужно досрочно выйти из функции.
Задание
ЛегкоСоздайте функцию с именем calculate_power, которая принимает два аргумента: base и exponent. Функция должна возвращать результат возведения основания в степень экспоненты (используя оператор ^).
Прочитайте два числа из входных данных, преобразуйте их в числовые значения и вызовите свою функцию. Сохраните возвращаемое значение в переменной с именем result, затем выведите result.
Например, если входные данные — 2 и 3, результат должен быть:
[1] 8Если входные данные — 5 и 2, результат должен быть:
[1] 25Шпаргалка
Функции могут возвращать значения с помощью функции return(). Это позволяет сохранять результат в переменной или использовать его в других операциях:
add <- function(a, b) {
return(a + b)
}
result <- add(5, 3)
print(result) # [1] 8Возвращаемые значения можно использовать непосредственно в выражениях:
double <- function(x) {
return(x * 2)
}
print(double(5) + double(3)) # [1] 16В R функции автоматически возвращают последнее вычисленное выражение, если return() не используется. Однако явное использование return() делает код более понятным и позволяет осуществлять досрочный выход из функций.
Попробуйте сами
# Чтение входных данных
con <- file("stdin", "r")
base <- as.numeric(suppressWarnings(readLines(con, n = 1)))
exponent <- as.numeric(suppressWarnings(readLines(con, n = 1)))
# TODO: Создайте функцию с именем calculate_power, которая принимает base и exponent
# и возвращает base, возведенное в степень exponent, используя оператор ^
# TODO: Вызовите свою функцию с входными значениями и сохраните результат в 'result'
# Вывод результата
print(result)В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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)Функции для работы со строками