English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Функция - это группа выражений, выполняемых вместе для выполнения задачи. Язык R himself предоставляет множество встроенных функций,当然我们也 можем создать свои собственные функции.
Вы можете разделить код на различные функции. Как разделить код на различные функции зависит от вас, но в логическом плане разделение обычно производится на основе выполнения каждой функцией определенной задачи.
ФункцияДекларацияИнформирует компилятор о نامе функции, типе возвращаемого значения и параметрах. ФункцияОпределениеПредоставляет фактическое тело функции.
Функции в языке R являются объектами и могут иметь атрибуты.
Определение функции в языке R использует ключевое слово function, обычно в следующем формате:
function_name <- function(arg_1, arg_2, ...) { // Тело функции }
Описание:
function_name : имя функции
arg_1, arg_2, ... : список формальных параметров
Значение функции возвращается с помощью return().
Язык R предоставляет множество полезных встроенных функций, которые можно использовать без их определения.
Например: seq(), mean(), max(), sum(x) и paste(...) и т.д.
# Вывод всех чисел от 32 до 44 print(seq(32, 44)) # Вычисление среднего двух чисел print(mean(25:82)) # Вычисление суммы всех чисел от 41 до 68 print(sum(41:68))
Выполните следующий код, результат вывода будет:
[1] 32 33 34 35 36 37 38 39 40 41 42 43 44 [1] 53.5 [1] 1526
Мы можем создать свои собственные функции для выполнения специфических задач и использовать их, как内置 функции.
Ниже показано, как можно определить пользовательские функции:
# Определение функции для подсчета系列的 квадратов new.function <- function(a) { for(i in 1:a) { b <- i^2 print(b) } }
Далее мы можем вызвать функцию:
new.function <- function(a) { for(i in 1:a) { b <- i^2 print(b) } } # Вызов функции и передача параметров new.function(6)
Выполните следующий код, результат вывода будет:
[1] 1 [1] 4 [1] 9 [1] 16 [1] 25 [1] 36
Мы также можем создать функцию без параметров:
new.function <- function() { for(i in 1:5) { print(i^2) } } # Вызов функции, без передачи параметров # Вызов функции, не передавая параметров, будут использоваться значения по умолчанию
Выполните следующий код, результат вывода будет:
[1] 1 [1] 4 [1] 9 [1] 16 [1] 25
Параметры функции могут передаваться в порядке создания функции, а также не по порядку, но необходимо указать имена параметров:
# Создание функции new.function <- function(a, b, c) { result <- a * b + c result <- a * b } # Без параметров по имени # Без параметров по имени new.function(5,3,11) # С параметрами по имени
Выполните следующий код, результат вывода будет:
new.function(a = 11, b = 5, c = 3) [1] 26
[1] 58
# При создании функции можно также определить значения параметров по умолчанию, если при вызове функции не передаются параметры, будут использоваться значения по умолчанию: # Создание функции с параметрами по умолчанию new.function <- function(a = 3, b = 6) { result <- a * b } print(result) # Вызов функции, не передавая параметров, будут использоваться значения по умолчанию # Вызов функции, передача параметров new.function(9,5)
Выполните следующий код, результат вывода будет:
[1] 18 [1] 45
Ленивые вычисления откладывают вычислительную работу до тех пор, пока система не потребует результатов этих вычислений. Если результаты не требуются, вычисления не выполняются.
По умолчанию, функции R выполняют вычисления лениво, то есть они вызываются только при вычислении:
f <- function(x) { 10 } f()
Выполните следующий код, результат вывода будет:
[1] 10
Выполнение этого кода не выдало ошибок, хотя мы не передали параметры, но в теле функции не используется параметр x, поэтому не будет вызова и не будет ошибки.
new.function <- function(a, b) { print(a^2) print(a) print(b) # Используется b, но не передан, поэтому будет выдаваться ошибка } # Передать один параметр new.function(6)
Выполните следующий код, результат вывода будет:
[1] 36 [1] 6 Error in print(b) : отсутствует параметр "b", также нет значения по умолчанию Calls: new.function -> print Остановить выполнение