Введення в R та RStudio

Огляд

Викладання: 20 хв
Вправи: 5 хв
Питання
  • Як зорієнтуватися в RStudio?

  • Як працювати з R?

  • Як встановити пакети?

Цілі
  • Описати призначення та використання кожної панелі в RStudio IDE

  • Знайти кнопки та налаштування в RStudio IDE

  • Визначити змінну

  • Присвоїти дані змінній

  • Використати математичні оператори та оператори порівняння

  • Викликати функції

  • Керувати пакетами

Мотивація

Наука - це багатоступеневий процес: як тільки ви розробили експеримент і зібрали дані, починаються справжні веселощі! Цей урок навчить вас, як почати цей процес з використанням R та RStudio. Ми почнемо з необроблених даних, проведемо дослідницький аналіз і вивчимо, як відобразити результати графічним способом. Цей приклад починається з набору даних з gapminder.org, який містить інформацію про населення багатьох країн в різні часи. Чи можете ви прочитати дані в R? Чи можете ви побудувати діаграму для населення Сенегалу? Чи можете ви розрахувати середній дохід для країн, які знаходяться в Азії? До кінця цих уроків ви зможете зробити такі речі, як будувати графіки населення для всіх цих країн менше ніж за хвилину!

Перед початком семінару

Будь ласка, переконайтесь, що на вашому комп’ютері встановлена останні версії R та RStudio. Це важливо, оскільки деякі пакети, які використовуються у семінарі, можуть встановитись неправильно (або взагалі не встановитись), якщо R не останньої версії.

Вступ до роботи з RStudio

Протягом цього уроку ми навчимо вас певним основам мови програмування R, а також деяким кращим практикам організації коду для наукових проєктів, які полегшать ваше життя.

Ми будемо використовувати RStudio: безкоштовне інтегроване середовище розробки (IDE, від англ. Integrated Development Environment) з відкритим кодом для мови R. Воно забезпечує вбудований редактор, працює на всіх платформах (у тому числі на серверах) і забезпечує багато переваг, таких як інтеграція з управлінням версіями і управлінням проєктами.

Базове розташування

Відкривши RStudio вперше, Ви побачите три панелі:

RStudio layout

Як тільки ви відкриєте файли, такі як скрипти R, відкриється також і панель редактора зверху ліворуч.

Вигляд RStudio з відкритим .R-файлом

Послідовність дій в RStudio

Існує два основних способи роботи в RStudio.

  1. Перевірте та грайте в інтерактивній консолі R, потім скопіюйте код в файл .R, щоб запустити пізніше.
    • Це добре працює під час виконання невеликих тестів та початкового запуску.
    • Це швидко стає трудомістким.
  2. Почніть писати у файлі .R і використовуйте гарячі клавіші для команди “Виконати” (“Run”) щоб перемістити поточний рядок, виділені рядки чи змінені рядки на інтерактивну консоль R.
    • Це хороший спосіб почати; весь ваш код зберігається пізніше.
    • Ви будете мати змогу запустити файл, створений в RStudio або з використанням функції R’s source().

Порада: Запуск сегментів вашого коду

RStudio пропонує вам велику гнучкість у виконанні коду з вікна редактора вікна редактора. Для цього є кнопки, пункти меню та комбінації клавіш. Для запуску на виконання поточний рядок, ви можете

  1. натиснути кнопку Run, тобто “Виконати” над панеллю редактора, або
  2. вибрати “Run Lines”, тобто “Запустити рядки” у меню “Code” (“Код”), або
  3. натиснути 1Ctrl1+2Enter2 у Windows, 3Ctrl3+4Return4 у Linux, або 5⌘5+6Return6 в OS X. (Це поєднання також можна побачити, якщо навести курсор миші на кнопку мишею на кнопку). Щоб запустити блок коду, виберіть його і натисніть Run(Виконати). Якщо ви змінили рядок коду у блоці коду, який щойно було запущено, немає потреби повторно виділяти ділянку і натискати Run (Виконати), ви можете скористатися наступною кнопкою поряд, Re-run the previous region(Повторно виконати попередню ділянку). У результаті буде виконано попередній блок коду включно із внесеними вами змінами.

Вступ в R

Більша частина вашого часу буде витрачена в інтерактивній консолі R. Тут ви будете запускати весь свій код, і це може бути корисним середовищем, щоб спробувати свої ідеї, перш ніж додавати їх у файл скрипту R. Ця консоль в RStudio така ж, як і та, яку ви отримаєте, якщо введете R у своєму середовищі командного рядка.

Перше, що ви побачите в інтерактивному сеансі R, це купу інформації, за якою слідує знак “>” і миготливий курсор. Багато в чому це схоже на середовище оболонки, про яке ви дізналися під час уроків про саму оболонку : воно працює за тією ж ідеєю “Прочитати, оцінити, цикл читання, обчислення і виведення”: ви вводите команди, R намагається їх виконати, а потім повертає результат.

Використання R як калькулятора

Найпростішим способом використання R є виконання арифметичних операцій:

1 + 100
[1] 101

І R виведе відповідь, додавши до неї “[1]”. Не хвилюйтесь про це зараз, ми пояснимо це пізніше. Наразі уявіть, що це вказує на вихідні дані.

Як і у випадку з ударом, якщо ви введете неповну команду, R чекатиме, доки ви її завершите її:

> 1 +
+

Щоразу, коли ви натискаєте клавішу return і сеанс R показує “+” замість “>”, це означає, що вона чекає на завершення виконання команди. Якщо ви хочете скасувати команду ви можете просто натиснути “Esc” і RStudio поверне вам запит “>”.

Підсказка: Скасування команд

Якщо ви використовуєте R з командного рядка, а не з RStudio, вам слід використовувати Ctrl+C замість Esc щоб скасувати команду. Це стосується і користувачів Mac!

Скасування команди корисне не лише для знищення незавершених команд: ви також можете використовувати її для того, щоб сказати R зупинити виконання коду (наприклад, якщо він виконується набагато довше, ніж ви очікували), або позбутися коду, який ви ви пишете, або позбутися коду, який ви зараз пишете.

При використанні R як калькулятора порядок дій такий самий, як ви вивчали у школі.

Від найвищого до найнижчого пріоритету:

3 + 5 * 2
[1] 13

Використовуйте круглі дужки для групування операцій, щоб примусово змінити порядок оцінки, якщо він відрізняється від стандартного, або для того, щоб пояснити, що ви маєте на увазі.

(3 + 5) * 2
[1] 16

Це може бути громіздко, коли це не потрібно, але це прояснює ваші наміри. Пам’ятайте, що пізніше ваш код можуть прочитати інші.

(3 + (5 * (2 ^ 2))) # hard to read
3 + 5 * 2 ^ 2       # clear, if you remember the rules
3 + 5 * (2 ^ 2)     # if you forget some rules, this might help

Текст після кожного рядка коду називається “коментарем”. Все, що слідує після символу хешування (або октоторпу) # R ігнорує під час виконання коду.

Дійсно малі або великі числа отримують наукові позначення:

2/10000
[1] 2e-04

Це скорочено означає “помножити на 10^XX”. Отже, ‘2e-4’ це скорочення від 2 * 10^(-4).

Ви можете писати числа і в науковій нотації:

5e3  # Note the lack of minus here
[1] 5000

Не турбуйтеся про те, щоб запам’ятати кожну функцію в R. Ви можете шукати їх в Google, або, якщо ви пам’ятаєте початок назви функції, скористайтеся вкладкою завершення в RStudio.

Це одна з переваг RStudio над R, яка полягає у тому, що вона має автодоповнення що дозволяє вам легше шукати функції, їхні аргументи та значення, які вони приймають.

Typing a ? before the name of a command will open the help page for that command. As well as providing a detailed description of the command and how it works, scrolling to the bottom of the help page will usually show a collection of code examples which illustrate command usage. We’ll go through an example later. Введення ? перед назвою команди відкриє сторінку довідки для цієї команди. Окрім докладного опису команди і принципів її роботи прокручування до кінця сторінки довідки зазвичай показує колекцію прикладів коду, які ілюструють використання команди. Ми розглянемо один з прикладів пізніше.

Порівняння

Ми також можемо робити порівняння в R:

1 == 1  # equality (note two equals signs, read as "is equal to")
[1] TRUE
1 != 2  # inequality (read as "is not equal to")
[1] TRUE
1 < 2  # less than
[1] TRUE
1 <= 1  # less than or equal to
[1] TRUE
1 > 0  # greater than
[1] TRUE
1 >= -9 # greater than or equal to
[1] TRUE

Підсказка: Порівняння чисел

Кілька застережень щодо порівняння чисел: вам слід ніколи не використовувати == для порівняння двох чисел, якщо вони не є цілими числами (тип даних, який може представляти лише цілі числа).

Комп’ютери можуть представляти десяткові числа лише з певним ступенем точності, тому два числа, які виглядають однаковими при виведенні на екран за допомогою R, насправді можуть мати різне представлення, а отже, відрізнятися з невеликою похибкою (так званою машинною числовим допуском).

Замість цього вам слід використовувати функцію all.equal.

Додаткова література: http://floating-point-gui.de/

Змінні та присвоєння

Ми можемо зберігати значення у змінних за допомогою оператора присвоювання <-, наприклад, так:

x <- 1/40

Notice that assignment does not print a value. Instead, we stored it for later in something called a variable. x now contains the value 0.025:

Зверніть увагу, що присвоювання не виводить значення. Натомість, ми зберегли його для подальшого використання у місці, яке називається змінна. Тепер x містить значення 0.025:

x
[1] 0.025

Точніше, збережене значення є десятковим наближенням цього дробу, який називається число з плаваючою комою.

Знайдіть вкладку Environment(‘Середовище’) на одній з панелей RStudio, і ви побачите, що з’явився параметр x і його значення. Нашу змінну x можна використовувати замість числа у будь-яких обчисленнях, де очікується число:

log(x)
[1] -3.688879

Зверніть увагу, що змінні можна перепризначати:

x <- 100

Раніше x містив значення 0.025, а тепер має значення 100.

Значення присвоювання можуть містити змінну, якій присвоюється:

x <- x + 1 #notice how RStudio updates its description of x on the top right tab
y <- x * 2

Правою частиною присвоювання може бути будь-який допустимий вираз у мові R. Права частина повністю обчислюється перед присвоюванням.

Завдання 1

Яким буде значення кожної змінної після кожного твердження в наступній програмі?

mass <- 47.5
age <- 122
mass <- mass * 2.3
age <- age - 20

Розв’язання до завдання 1

mass <- 47.5

Це дасть значення 47.5 для змінної маси

age <- 122

Це дасть значення 122 для змінного віку

mass <- mass * 2.3

Це помножить існуюче значення 47.5 на 2.3, щоб дати нове значення 109.25 до змінної маси.

age <- age - 20

Це відніме 20 від існуючого значення 122, щоб дати нове значення 102 до змінного віку.

Завдання 2

Запустіть код із попереднього завдання і напишіть команду для порівняння маси з віком. Чи маса більша за вік?

Розв’язання до завдання 2

Одним із способів відповіді на це питання в R є використання > для налаштування наступного:

mass > age
[1] TRUE

Це повинно дати логічне значення TRUE, оскільки 109.25 більше ніж 102.

Назви змінних можуть містити літери, цифри, підкреслення та крапки. Вони не можуть починатися з цифри або взагалі містити пробілів. Різні люди використовують різні домовленості щодо довгих імен змінних, зокрема

Те, що ви використовуєте залежить від вас, але будьте послідовними.

Для присвоювання також можна використовувати оператор =:

x = 1/40

Але це набагато рідше зустрічається серед користувачів R. Найважливіше - це бути послідовним з оператором, який ви використовуєте. Іноді трапляються випадки, де використання <- менш заплутане, ніж =, і це найпоширеніший символ, який використовується у спільноті. Тому ми рекомендуємо використовувати <-.

Завдання 3

Які з них є дійсними іменами змінних R?

min_height
max.height
_age
.mass
MaxLength
min-length
2widths
celsius2kelvin

Solution to challenge 3

Як змінні R можна використовувати наступні:

min_height
max.height
MaxLength
celsius2kelvin

Наступне створює приховану змінну:

.mass

Ми не будемо обговорювати приховані змінні в цьому уроці. Ми рекомендуємо не використовувати період на початку імен змінних, якщо ви не хочете, щоб ваші змінні були приховані.

Наступні не зможуть бути використані для створення змінної

_age
min-length
2widths

Ключові моменти

  • Використовуйте RStudio для написання та запуску програм на R.

  • R має звичайні арифметичні оператори.

  • Використовуйте <- для присвоєння значень змінним.

  • Використовуйте install.packages() для встановлення пакетів (бібліотек).