a <- 10
b <- 5
if(a > b) {
print("A > B")
} else if (b > a){
print("B > A")
} else {
print("A equals B")
}[1] "A > B"
if-else
Якщо є потреба перевірити у коді програми виконання якоїсь умови та за її результатами перейти до одного із блоків виконання зазвичай використовують оператор if-else. Загальний вигляд формату використання оператора if-else:
Вираз умова повинен повертати результат у вигляді елемента логічного типу. Тобто, умова може бути або true, або false.
Якщо умова рівна true, то виконається інструкція (або код) записана у дужках після if. Якщо ж умова рівна false, то виконається інструкція записана у дужках після else.
Символ # перед кодом означає коментар, тобто код, який не бачитиме інтепретатор мови програмування.
Якщо після if або else тільки одна інструкція (можна ототожнити з один рядком коду), то «фігурні» дужки {} не є обов’язковими.
Конструкції if-else можуть вкладеними одна в одну без обмежень по глибині. Проте дуже глибокої вкладеності варто уникати, адже це ускладнює читання та розуміння коду програми.
if є обов’язковим і повинно існувати у всіх подібних конструкціях, у той же час else – необов’язковий.
Також конструкція if-else може мати структуру дерева із багатьма розгалуженнями. Така структура зазвичай записується як if-else-if:
Вирази обчислюються зверху-вниз. Якщо один із виразів (умова) отримає істинний результат (true), то програмний код, пов’язаний із цією гілкою розгалуження виконається, а всі інші гілки будуть пропущені. Якщо ж не виконається жодна з умов, то буде запущено код всередині останньої інструкції else (у цьому випадку else теж не обов’язковий).
Розгялнемо приклади використання конструкції if-else. Код нижче дозволяє перевірити, яке з двох цілих чисел є більшим:
Тернарний оператор – це спосіб запису умовного виразу в один рядок. Він використовується, коли потрібно присвоїти значення змінній в залежності від умови. Синтаксис тернарного оператора у R відрізняється від інших мов програмування (класично це умова ? вираз_якщо_true : вираз_якщо_false).
Оператор розгалуження if-else у R може повертати та записувати значення у змінну:
Проте сильною стороною R є саме робота з векторами. Тому, якщо потрібно виконати умовну перевірку для кожного елемента вектора, то краще використати функцію ifelse(). Синтаксис виклику:
де condition – вектор умов, a – вектор значень, які будуть повернуті, якщо умова condition істинна, b – вектор значень, які будуть повернуті, якщо умова condition не істинна.
Розглянемо приклад. Потрібно створити вектор, який містить значення 1 для значень >= 0 та 0 для значень < 0 на основі наявного вектора x:
Також оператор ifelse можна використовувати і для заміни значень вектора. Наприклад, потрібно замінити всі значення Yes/No на 1/0:
Напишіть програму, що виводить консоль інформацію про те число парне чи ні. Значення \(0\) потрібно потрібно також перевірити і вивести у разі його введення "ZERO".
Розв’язання
Результат виконання коду: