Вступ до функцій в R
Функція визначається як набір висловлювань для виконання та виконання будь-якого конкретного логічного завдання. Функція приймає деякі вхідні параметри, які відомі як аргументи для виконання цього завдання. Функції допомагають розбити код, на простіші фрагменти, організуючи його логічно, що простіше читати та розуміти. У цій темі ми дізнаємось про функції у Р.
Як записати функції в R?
Щоб записати функцію в R, ось синтаксис:
Fun_name <- function (argument) (
Function body
)
Тут можна побачити, що в R використовується специфічне зарезервоване слово, яке використовується для визначення будь-якої функції. Функція приймає дані, які є у вигляді аргументів. Орган функції - це набір логічних висловлювань, які виконуються над аргументами, а потім він повертає результат. "Fun_name" - ім'я, яке надається функції, за допомогою якої її можна викликати в будь-якому місці програми R.
Подивимось приклад, який буде більш зрозумілим у розумінні поняття функції у Р.
R код
Multi <- function(x, y) (
# function to print x multiply y
result <- x*y
print(paste(x, "Multiply", y, "is", result))
)
вихід:
Тут ми створили назву функції “Multi”, яка приймає два аргументи як вхідні дані та забезпечує множений вихід. Перший аргумент - x, а другий - y. Як бачимо, ми назвали функцію назвою "Multi". Тут, якщо хтось хоче, для аргументів також можна встановити значення за замовчуванням.
Різні типи функцій в R
Різні функції R із синтаксисом та прикладами (вбудований, математичний, статистичний тощо)
1) Вбудована функція -
Це функції, які поставляються з R для вирішення конкретної задачі, беручи аргумент як вхід і даючи вихід на основі заданого вводу. Давайте тут обговоримо деякі важливі загальні функції R:
a) Сортування: Дані можуть бути сортованими у порядку зростання чи спадання. Дані можуть бути будь вектором тривалої змінної чи коефіцієнтом змінної.
Синтаксис:
Ось пояснення його параметрів:
- x: Це вектор неперервної змінної чи коефіцієнта
- Зменшується: Це може бути встановлено як True / False, щоб контролювати порядок шляхом зростання або зменшення. За замовчуванням це FALSE`.
- останнє: Якщо вектор має значення NA, чи слід його ставити останнім чи ні
R код і вихід:
Тут можна помітити, як значення "NA" вирівнюються в кінці. Як наш параметр na.last = True був вірним.
б) Послідовність : Вона генерує послідовність числа між двома вказаними числами.
Синтаксис
Ось пояснення його параметрів:
- від, для початкового та кінцевого значення послідовності.
- за: Збільшення / проміжок між двома послідовними числами послідовно
- length.out: необхідна довжина послідовності.
- Along.with: Посилається на довжину від довжини цього аргументу
R код і вихід:
Тут можна помітити, що послідовність, що генерується, має приріст 2, оскільки визначається як 2.
c) Toupper, tolower: Дві функції: toupper і tolower - це функції, застосовані на рядку для зміни регістрів букв у реченнях.
R код і вихід:
Можна помітити, як змінюються регістри букв при застосуванні до функції.
г) Rnorm: Це вбудована функція, яка генерує випадкові числа.
R код і вихід:
Функція rnorm приймає перший аргумент, який говорить, скільки чисел потрібно генерувати.
e) Повтор: Ця функція повторює значення стільки разів, скільки зазначено.
R синтаксис: rnorm (x, n)
Тут х представляє значення для реплікації, а n представляє кількість разів, яку необхідно повторити.
R код і вихід:
f) Вставити: Ця функція полягає в об'єднанні рядків разом з певним символом між ними.
синтаксис
paste(x, sep = “”, collapse = NULL)
R код
paste("fish", "water", sep=" - ")
R вихід:
Як бачите, ми також можемо вставити більше двох рядків. Sep - це конкретний символ, який ми додали між рядками. За замовчуванням sep - це простір.
Ще одна подібна функція існує на зразок цієї, про яку повинні знати усі, це paste0.
Функція paste0 (x, y, згортання) працює аналогічно paste (x, y, sep = “”, згортання)
Дивіться приклад нижче:
Простими словами, узагальнити paste and paste0:
Paste0 швидше, ніж вставити, якщо мова йде про конкатенацію рядків без жодного роздільника. Оскільки паста завжди шукає "sep", і це місце за замовчуванням у ній.
g) Strsplit: Ця функція полягає в розділенні рядка. Давайте розглянемо прості випадки:
h) Зв'язування: функція rbind допомагає розчісувати вектори з однаковою кількістю стовпців, одна над одною.
Приклад
i) cbind: Це поєднує вектори з однаковою кількістю рядків, поруч.
Приклад
Якщо кількість рядків не збігається, нижче ви знайдете помилку:
Як cbind, так і rbind допомагає в маніпулюванні та переформатуванні даних.
2) Математична функція -
R забезпечує широкий спектр математичних функцій. Давайте докладніше розглянемо декілька з них:
a) Sqrt: Ця функція обчислює квадратний корінь числа або числового вектора.
R код і вихід:
Можна побачити, як було обчислено квадратний корінь числа, складного числа та послідовності числового вектора.
б) Exp: Ця функція обчислює експоненціальне значення числа або числового вектора.
R код і вихід:
c) Cos, Sin, Tan: Це функції тригонометрії, реалізовані тут у R.
R код і вихід:
г) Abs: Ця функція повертає абсолютне додатне значення числа.
Як бачите, негативне чи позитивне число повернеться в абсолютному вигляді. Давайте подивимось це на складне число:
д) Журнал: це пошук логарифму числа.
Ось приклад, показаний нижче:
Тут ви отримуєте можливість змінювати базу відповідно до вимог.
f) Cumsum: Це математична функція, яка дає сукупні суми. Ось приклад нижче:
g) Cumprod: Як і математична функція Cumsum, ми маємо cumprod там, де відбувається кумулятивне множення.
Дивіться приклад нижче:
h) Max, Min: Це допоможе вам знайти максимальне / мінімальне значення у наборі чисел. Дивіться нижче приклади, пов’язані з цим:
i) Стеля: Стеля - це математична функція, яка повертає найменше ціле число вище зазначеного.
Розглянемо приклад:
стеля (2, 67)
Як ви можете помітити, стеля застосовується як над числом, так і над списком, а вихідний результат є найменшим із наступних вищих цілих чисел.
j) Поверх: Підлога - це математична функція, яка повертає найменше значення цілого числа із зазначеного числа.
Приклад, показаний нижче, допоможе вам зрозуміти це краще:
Це працює так само і для негативних значень. Будь ласка, подивіться:
3) Статистичні функції -
Це функції, що описують пов'язаний розподіл ймовірностей.
а) Медіана: Це обчислювало медіану з послідовності чисел.
Синтаксис
R код і вихід:
б) Днорма: Це стосується нормального розподілу. Функція dnorm повертає значення функції щільності ймовірності для нормального розподілу заданих параметрів для x, μ та σ.
R код і вихід:
c) Cov: Коваріація говорить про те, чи є два вектори позитивно, негативно чи повністю не пов'язані між собою.
R код
x_new = c(1., 5.5, 7.8, 4.2, -2.7, -5.5, 8.9)
y_new = c(0.1, 2.0, 0.8, -4.2, 2.7, -9.4, -1.9)
cov(x_new, y_new)
R вихід:
Як видно, два вектори позитивно пов'язані, це означає, що обидва вектори рухаються в одному напрямку. Якщо коваріація від’ємна, це означає, що x і y є зворотно пов'язаними, а значить, рухається у зворотному напрямку.
г) Кор: Це функція пошуку кореляції між векторами. Це фактично дає коефіцієнт асоціації між двома векторами, який відомий як "коефіцієнт кореляції". Кореляція додає коефіцієнт ступеня над коваріацією. Якщо два вектори є позитивно корельованими, кореляція також підкаже вам, на скільки вони позитивно пов'язані.
Ці три типи методів, за допомогою яких можна знайти кореляцію між двома векторами:
- Пірсонова кореляція
- Кендалл кореляція
- Співвідношення Спірмена
У простому форматі R це виглядає так:
cor(x, y, method = c("pearson", "kendall", "spearman"))
Тут х і у - вектори.
Подивимось практичний приклад співвідношення вбудованого набору даних.
Отже, тут ви бачите, що функція "cor ()" дала коефіцієнт кореляції 0, 41 між "qsec" і "mpg". Однак була показана ще одна функція, тобто "cor.test ()", яка не тільки вказує на коефіцієнт кореляції, але і на значення p, пов'язане з нею. Інтерпретація стає набагато простішою за допомогою функції cor.test.
Аналогічно можна зробити і з двома іншими методами кореляції:
R код методу Пірсона:
my_data <- mtcars
cor(my_data$qsec, my_data$mpg, method = " pearson ")
cor.test(my_data$qsec, my_data$mpg, method = " pearson")
R код методу Кендала:
my_data <- mtcars
cor(my_data$qsec, my_data$mpg, method = " kendall")
cor.test(my_data$qsec, my_data$mpg, method = " kendall")
R код методу Спірмена:
my_data <- mtcars
cor(my_data$qsec, my_data$mpg, method = "spearman")
cor.test(my_data$qsec, my_data$mpg, method = "spearman")
Коефіцієнт кореляції коливається в межах від -1 до 1.
Якщо коефіцієнт кореляції від'ємний, це означає, що х збільшується y зменшується.
Якщо коефіцієнт кореляції дорівнює нулю, це означає, що між x і y не існує зв'язку.
Якщо коефіцієнт кореляції позитивний, це означає, що x збільшується, також має тенденцію до збільшення.
e) T-тест: T-тест підкаже, чи надходять два набори даних від одного і того ж (припускаючи) нормального розподілу чи ні.
Тут слід відкинути нульову гіпотезу про те, що два засоби однакові, оскільки значення р менше 0, 05.
Цей показаний екземпляр має тип: парні набори даних з неоднаковими дисперсіями. Так само можна спробувати з парним набором даних.
f) Проста лінійна регресія: Це показує взаємозв'язок між предиктором / незалежною та змінною, що залежить від відповіді.
Простим практичним прикладом може бути прогнозування ваги людини, якщо зріст відомий.
R синтаксис
lm(formula, data)
Тут формула зображує відношення між вихідним сигналом, тобто y, і вхідною змінною iex Дані представляють набір даних, на якому формулу потрібно застосувати.
Давайте подивимось один практичний приклад, де площа підлоги є вхідною змінною, а орендна - вихідною змінною.
x <- c (1510, 1000, 600, 500, 1280, 136, 1790, 1630)
y <- c (15000, 10000, 6000, 5000, 12800, 13600, 17900, 16300)
Тут значення Р становить не менше 5%. Отже, нульову гіпотезу не можна відкинути. Немає великого значення для доказу зв'язку між площею підлоги та орендної плати.
Тут значення R-квадрата дорівнює 0, 4813. Це означає, що лише 48% дисперсії у вихідній змінній можна пояснити вхідною змінною.
Скажімо, зараз нам потрібно передбачити значення площі підлоги, грунтуючись на вищезгаданій моделі.
R код
x_new <- data.frame(x = 1700)
result <- predict(relation, x_new)
print(result)
R вихід:
Після виконання вищевказаного коду R вихід буде мати такий вигляд:
Можна помістити і візуалізувати регресію. Ось код R для цього:
# Дайте ім'я файлу png-діаграми.
png(file = "LinearRegressionSample.png.webp")
# Складіть графік.
plot(y, x, col = "green", main = "Floor Area & Rent Regression",
abline(lm(x~y)), cex = 1.3, pch = 16, xlab = "Floor area in sq m", ylab = "Rent in Rs")
# Збережіть файл.
dev.off()
Цей графік "LinearRegressionSample.png.webp" буде сформований у вашому поточному робочому каталозі.
g) Тест Chi-Square
Це статистична функція в Р. Цей тест має важливе значення для того, щоб довести, чи існує кореляція між двома категоричними змінними.
Цей тест також працює, як і будь-які інші статистичні тести, засновані на p-значенні, можна прийняти або відхилити нульову гіпотезу.
R синтаксис
chisq.test(data), /code>
Давайте подивимось один практичний приклад цього.
R код
# Завантажте бібліотеку.
library(datasets)
data(iris)
# Створіть фрейм даних з основного набору даних.
iris.data <- data.frame(iris$Sepal.Length, iris$Sepal.Width)
# Створіть таблицю з необхідними змінними.
iris.data = table(iris$Sepal.Length, iris$Sepal.Width)
print(iris.data)
# Виконайте тест Chi-Square.
print(chisq.test(iris.data))
R вихід:
Як видно, тест-квадрат-тест був проведений над набором даних райдужної оболонки, враховуючи дві його змінні “Sepal. Довжина "та" ширина ширини ".
Значення р не менше 0, 05, отже, кореляція між цими двома змінними не існує. Або можна сказати, що ці дві змінні не залежать одна від одної.
Висновок
Функції в R прості, легкі в установці, легко зрозуміти і при цьому дуже потужні. Ми побачили різноманітні функції, які використовуються як частина основ у Р. Як тільки вам стане комфортно з цими функціями, обговореними вище, можна вивчити інші різновиди функцій. Функції допомагають вам, змушуйте ваш код працювати просто і стисло. Функції можуть бути вбудованими або визначеними користувачем, все залежить від потреби під час вирішення проблеми. Функції надають програмі гарну форму.
Рекомендовані статті
Це посібник з функцій у Р. Тут ми обговорюємо, як записати функції в R та різні типи функцій в R за допомогою синтаксису та прикладів. Ви також можете переглянути наступну статтю, щоб дізнатися більше -
- R Строкові функції
- Функції струнних SQL
- Функції рядків T-SQL
- Функції рядків PostgreSQL