R належить до динамічно типізованих мов, тож загалом не потрібно вказувати тип змінної. Для присвоєння бажано використовувати оператор <-
x <- 42
avogadro <- 6.02e23
mystr <- "Hello, World!"
Використання = замість <- часто, але не завжди, працює, і вважається поганим стилем.
Якщо ми працюємо в RStudio, його можна ввести за допомогою комбінації клавіш Alt-minus.
Оператори здебільшого звичні, але звернімо увагу на %/% і %%:
2 + 3 # 5
2 - 3 # -1
2 * 3 # 6
2 / 3 # 0.6666667
8 %/% 3 # 2 (integer division)
8 %% 3 # 2 (remainder)
2 ^ 3 # 8 (exponential)
У R символ # починає однорядковий коментар.
Окремого синтаксису для багаторядкових коментарів немає.
Щоб визначити функцію:
squareit <- function(x) {
x * x
}
Функції можуть мати нуль або більше аргументів, розділених комами.
Круглі дужки () потрібні разом із function(), навіть якщо параметрів немає.
Для аргументів функції можна вказати типові значення, але вони мають іти після всіх аргументів без типових значень, і для присвоєння типового значення використовують =, а не <-.
Досить безглуздий приклад:
squareit <- function(x = 42) {
x * x
}
squareit()
#> [1] 1764
Фігурні дужки { } не є строго обовʼязковими для однорядкових тіл функцій, але їх додавання вважається добрим стилем.
R автоматично повертає останнє значення функції, як у прикладах вище.
return() можна використати будь-де в тілі функції, щоб явно вказати повернене значення.
Функцію викликають так само, як і в багатьох інших мовах:
squareit(3)
#> [1] 9
У цій вправі ми напишемо трохи коду, який допоможе приготувати розкішну лазанью з улюбленої кулінарної книги.
На нас чекають чотири завдання, усі повʼязані з часом приготування лазаньї.
Визначте функцію expected_minutes_in_oven(), яка не приймає жодних параметрів і повертає, скільки хвилин лазанья має бути в печі. Згідно з кулінарною книгою, очікуваний час у печі становить 60 хвилин.
> expected_minutes_in_oven()
[1] 60
Визначте функцію remaining_time_in_minutes, яка приймає як параметр фактичну кількість хвилин, які лазанья вже провела в печі, і повертає, скільки хвилин їй ще залишилося бути в печі, виходячи з очікуваного часу в печі з попереднього завдання.
> remaining_time_in_minutes(50)
[1] 10
Визначте функцію prep_time_in_minutes(), яка приймає як параметр кількість шарів, доданих до лазаньї, і повертає, скільки хвилин ми витратили на підготовку лазаньї, якщо припустити, що на кожен шар іде 2 хвилини.
> prep_time_in_minutes(2)
[1] 4
Визначте функцію elapsed_time_in_minutes, яка приймає два аргументи: першим аргументом є кількість шарів, доданих до лазаньї, а другим параметром - кількість хвилин, які лазанья провела в печі. Функція має повернути, скільки хвилин усього ми витратили на приготування лазаньї, тобто суму часу підготовки в хвилинах і часу в хвилинах, який лазанья на цей момент провела в печі.
> elapsed_time_in_minutes(3, 20)
[1] 26
Зареєструйтеся на Exercism, щоб вивчати й опановувати R, а також 21 концепція111 вправ та справжнє наставництво від людей, і все це безкоштовно.