R Функции
Функция — это группа инструкций, которые вместе выполняют задачу. Сам язык R предоставляет множество встроенных функций, и, конечно, мы также можем создавать свои собственные функции.
Вы можете разделить свой код на различные функции. Как вы распределяете код между разными функциями — решать вам, но логически разделение обычно основано на том, что каждая функция выполняет определённую задачу.
ОбъявлениефункцииСообщает компилятору имя функции, тип возвращаемого значения и параметры. ОпределениефункцииПредоставляет фактическое тело функции.
В R функция — это объект, который может иметь атрибуты.
Определение функций
Определение функции обычно состоит из следующих частей:
- Имя функции:Присваивает функции уникальное имя для использования при её вызове.
- Параметры:Определяют входные значения, принимаемые функцией. Параметры необязательны, и их может быть несколько.
- Тело функции:Содержит фактический исполняемый блок кода, используя фигурные скобки{}чтобы заключить его.
- Возвращаемое значение:Указывает выходной результат функции, используя ключевое слово
return。
Определения функций в R используютfunctionключевое слово, общая форма выглядит так:
function_name <- function(arg_1, arg_2, ...) {
# 函数体
# 执行的代码块
return(output)
}
Описание:
- function_name : — это имя функции
- arg_1, arg_2, ... : список формальных параметров
Возвращаемое значение функции используетreturn()。
Ниже приведён простой пример, показывающий, как определить и использовать функцию:
Пример
add_numbers <- function(x, y) {
result <- x + y
return(result)
}
# Вызов функции
sum_result <- add_numbers(3, 4)
print(sum_result) # Вывод 7
В приведённом выше коде мы определили функцию с именемadd_numbers, которая принимает два параметраxиy. Код в теле функции складывает эти два параметра и сохраняет результат в переменнойresult. Наконец, используйте ключевое словоreturn, чтобы вернуть результат.
Чтобы вызвать функцию, мы используем форму имени функции, за которой следует список параметров, чтобы передать значения параметров в функцию. В этом примере мы вызываем функциюadd_numbersи передаём аргументы 3 и 4. После выполнения функции она возвращает результат 7, который мы сохраняем в переменнойsum_resultи выводим его.
Пользовательские функции
Мы можем создавать свои собственные функции для конкретных задач, и после определения мы можем использовать их как встроенные функции.
В следующем примере показано, как определить пользовательскую функцию:
Пример
new.function <- function(a) {
for(i in 1:a) {
b <- i^2
print(b)
}
}
Далее мы можем вызвать функцию:
Пример
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
Мы также можем создать функцию без параметров:
Пример
for(i in 1:5) {
print(i^2)
}
}
# Вызовите функцию, передавать параметры не нужно
new.function()
При выполнении приведенного выше кода результат будет следующим:
[1] 1 [1] 4 [1] 9 [1] 16 [1] 25
Функции со значениями параметров
Параметры функции можно передавать в порядке их создания при определении функции или в произвольном порядке, но необходимо указать имена параметров:
Пример
new.function <- function(a,b,c) {
result <- a * b + c
print(result)
}
# Без имён параметров
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()
# Вызовите функцию, передав параметры
new.function(9,5)
При выполнении приведенного выше кода результат будет следующим:
[1] 18 [1] 45Функции ленивых вычислений
Ленивое вычисление откладывает вычисления до тех пор, пока системе не понадобятся результаты этих вычислений. Если результаты не нужны, вычисление не будет выполнено.
По умолчанию функции R ленивы при вычислении параметров, то есть они вызываются только тогда, когда мы их вычисляем:
Пример
10
}
f()
При выполнении приведенного выше кода результат будет следующим:
[1] 10
Приведённый выше код выполняется без ошибок. Хотя мы не передали параметр, параметр x не используется в теле функции, поэтому он не вызывается, и ошибка не возникает.
Пример
print(a^2)
print(a)
print(b) # Использует b, но он не передан, поэтому возникнет ошибка
}
# Передайте один параметр
new.function(6)
При выполнении приведенного выше кода результат будет следующим:
[1] 36 [1] 6 Error in print(b) : 缺少参数"b",也没有缺省值 Calls: new.function -> print 停止执行
Встроенные функции
Язык R предоставляет множество полезных встроенных функций, которые можно использовать напрямую, не определяя их.
Например: seq(), mean(), max(), sum(x) и paste(...) и т. д.
Пример
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
sum(): Вычислить сумму вектора или матрицы.
Пример
x <- c(1, 2, 3, 4, 5)
total <- sum(x)
print(total) # Вывод 15
# Сумма матрицы
matrix <- matrix(1:9, nrow = 3)
total <- sum(matrix)
print(total) # Вывод 45
mean(): Вычислить среднее значение вектора или матрицы.
Пример
x <- c(1, 2, 3, 4, 5)
avg <- mean(x)
print(avg) # Вывод 3
# Среднее значение матрицы
matrix <- matrix(1:9, nrow = 3)
avg <- mean(matrix)
print(avg) # Вывод 5
paste():Объединяет несколько строк в одну строку.
Пример
y <- "World"
result <- paste(x, y)
print(result) # Вывод "Hello World"
length():Возвращает длину вектора или количество элементов в объекте.
Пример
length_x <- length(x)
print(length_x) # Вывод 5
matrix <- matrix(1:9, nrow = 3)
length_matrix <- length(matrix)
print(length_matrix) # Вывод 9
str():Отображает структуру и сводку содержимого объекта.
Пример
str(x)
# Вывод:
# num [1:5] 1 2 3 4 5
matrix <- matrix(1:9, nrow = 3)
str(matrix)
# Вывод:
# int [1:3, 1:3] 1 2 3 4 5 6 7 8 9
Выше перечислена лишь небольшая часть примеров функций языка R. В R есть большое количество встроенных функций и функций, предоставляемых пакетами расширений, которые могут удовлетворять различным потребностям, таким как обработка данных, статистический анализ, построение графиков и т. д. Более подробный список функций и инструкции по использованию можно найти в официальной документации языка R.
Другие расширения