[1] 10
[1] 3.872983
R
є безкоштовним програмним забезпеченням, що розповсюджується за умовами GNU General Public License. Код, написаний на R
компілюється та запускається на різних платформах: UNIX, Windows, MacOS (R Core Team 2020).
Для завантаження актуальної версії R
варто перейти на сайт проекту https://cran.r-project.org/.
На сайті обираємо завантаження R
для потрібної операційної системи. У межах курсу ми вокристовуємо ОС Windows
, проте на синтаксис мови програмування та процес написання коду це не впливає:
У наступному вікні клікаємо на install R for the first time:
Далі обираємо Download R 4.X.X for Windows, де 4.X.X
версія R
, яка може бути відмінною на момент вивчення курсу:
Після завантаження файлу інсталяції потрібно його запустити. Зазвичай завантажений файл можна побачити у лівому нижному кутку браузера або у розділі “Завантаження” Вашого браузера. Наприклад, у браузері Google Chrome
знайти цей пункт меню так:
Google Chrome
R GUI
За замовчуванням під час інсталяції R
у ОС Windows
пропонується шлях C:\Program Files\R\R-4.X.X
.
Для запуску R GUI
(стандартного графічного інтерфейсу для роботи з R
) потрібно зайти у папку bin\x64
(або i386
, якщо у Вас 32-х розрядна ОС) та запустити файл Rgui.exe
.
Вигляд вікна R GUI
зображено нижче:
RGui
GUI (Graphical User Interface) - набір візуальних компонентів для інтерактивної взаємодії користувача з програмним забезпеченням.
У вікні R Console
можна вводити команди/інструкції R
, що будуть виконуватися:
Результати виконання команд зберігаються у памяті програми і можуть бути використані у наступних блоках коду:
RGui
Середовище R GUI
має широкий спектр функцій і дозволяє написати будь-якого рівня складності проекти на R, проте він є лише базовою графічною обгорткою для R
. Розглянемо інші зручніші середовища для написання R
-коду.
У процесі виконання коду створені об’єкти/змінні та функції зберігаються у поточній сесії. У R
є можливість переглянути список збережних елментів, видалити усі або окремі, зберегти стан поточної сесії диск та завантажити його пізніше, щоб не проходти усі етапи виконання коду повторно (інколи дуже складний код може виконувати досить довго і збереження проміжних результатів може бути хорошим рішенням).
Для прикладу створимо дві змінні var1
, var2
та виведемо на консоль їх значення:
Для того аби переглянути список змінних у поточній сесії варто скористатися ls()
:
Якщо виникає потреба очистити робочий простір і звільними пам’ять використовується команда rm()
. Так, щоб очистити усі змінні можна скористатися rm(list = ls())
, якщо ж Ви хочете видалити якусь одну/дві змінних, то просто вкажіть імена:
Таким чином, після виконання коду вище, залишиться лише змінна var2
.
Зберігання образу (image
) робочого простору на диск здійснюється за допомогою команди save.image("шлях до файлу.RData")
, а його зчитування за допомогою load("шлях до файлу.RData")
.
Код збереження даних:
Код читання та виведення даних:
[1] 10
[1] 25
У прикладі 2 не створюєть жодного параметра, проте вони збережні у файлі сесії.
Для того аби зберегти та зчитати окремий об’єкт, а не всі елементи сесії у R
є спеціальний формат .RDS
, який реалізовується методами saveRDS(об'єкт, file="шлях_файлу.rds")
та readRDS(file="шлях_файлу.rds")
.
Робота в будь-якому середовищі передбачає зв’язок із поточним каталогом, відносно якого будуються шляхи до файлів. Звичайно можна писати завжди повний шлях до файла, проте такий підхід є досить негнучким і під час перенесення коду між ПК створює чимало проблем розробникам.
Для визначення базового каталогу R
в поточній сесії використовують команду getwd()
. Якщо Ви користуєтеся RStudio
та створили проєкт, то цей каталог буде відповідати повному шляху до папки проєкту:
Для того аби змінити поточний робочий каталог використовують команду setwd(шлях)
. Після запуску цієї команди функцій getwd()
буде вказутивати уже на нову адресу/шлях.
Варто знати та вміти будувати абсолютні та відносні шляхи до каталогів та файлів, ці знання корисні для роботи з усіма мовами програмування та більшістю ПЗ для роботи з даними.
Для запису шляху у ОС Windows можна скористатися 2-ма способами:
/
- слеш, записується як один знак;\\
- бекслеш, записується як два знаки.У прикладі нижче обидва шляхи ведуть до тієї ж папки (drive
- буква диска):
Для перегляду інформації про наявні каталоги та файли у поточній робочій папці можна скористатися командою dir()
або list.files()
:
[1] "_language-ua.yml" "_quarto.yml"
[3] "00-intro.html" "00-intro.qmd"
[5] "01-what-is-r.html" "01-what-is-r.qmd"
[7] "02-r-history.html" "02-r-history.qmd"
[9] "03-r-environment.qmd" "03-r-environment.rmarkdown"
[11] "03-r-environment_files" "04-r-help.qmd"
[13] "05-r-packages.qmd" "06-r-input-output.qmd"
[15] "07-r-variables.qmd" "08-r-basic-types.qmd"
[17] "09-r-operators.qmd" "10-r-conditions-if-else.qmd"
[19] "11-r-loops.qmd" "12-userful-math.qmd"
[21] "13-r-functions.qmd" "14-r-vectors.ipynb"
[23] "15-r-matrices.ipynb" "16-r-factors.ipynb"
[25] "17-r-data-frames.ipynb" "18-r-lists.ipynb"
[27] "19-r-apply-functions.ipynb" "commands"
[29] "css" "demo.qmd"
[31] "docs" "identity"
[33] "img" "index.html"
[35] "index.log" "index.qmd"
[37] "index.tex" "index_files"
[39] "intro-to-r-source.Rproj" "references.bib"
[41] "references.qmd" "site_libs"
[43] "solved-tasks.qmd" "summary.qmd"
[45] "tasks.qmd" "tmp.RData"
[47] "Untitled.ipynb"
[1] "_language-ua.yml" "_quarto.yml"
[3] "00-intro.html" "00-intro.qmd"
[5] "01-what-is-r.html" "01-what-is-r.qmd"
[7] "02-r-history.html" "02-r-history.qmd"
[9] "03-r-environment.qmd" "03-r-environment.rmarkdown"
[11] "03-r-environment_files" "04-r-help.qmd"
[13] "05-r-packages.qmd" "06-r-input-output.qmd"
[15] "07-r-variables.qmd" "08-r-basic-types.qmd"
[17] "09-r-operators.qmd" "10-r-conditions-if-else.qmd"
[19] "11-r-loops.qmd" "12-userful-math.qmd"
[21] "13-r-functions.qmd" "14-r-vectors.ipynb"
[23] "15-r-matrices.ipynb" "16-r-factors.ipynb"
[25] "17-r-data-frames.ipynb" "18-r-lists.ipynb"
[27] "19-r-apply-functions.ipynb" "commands"
[29] "css" "demo.qmd"
[31] "docs" "identity"
[33] "img" "index.html"
[35] "index.log" "index.qmd"
[37] "index.tex" "index_files"
[39] "intro-to-r-source.Rproj" "references.bib"
[41] "references.qmd" "site_libs"
[43] "solved-tasks.qmd" "summary.qmd"
[45] "tasks.qmd" "tmp.RData"
[47] "Untitled.ipynb"
RStudio
RStudio Desktop
RStudio - це інтегроване середовище розробки для R
. Воно включає у себе консоль, підсвічування синтаксису (підказки), прямий запуск коду, інструменти для візуалізації графіків, html-коду, історію виконаних команд, відлагоджування коду, управління робочими просторами, підтримка різних видів розмітки та багато іншого. RStudio має версію з відкритим кодом та комерційну версію для Windows
, Linux
та Mac
, а також веб-версію для серверів на Linux RStudio Server
та RStudio Server Pro
(RStudio Official Website 2021).
IDE (integrated development environment
) - комплексне програмне рішення для розробки програмного забезпечення. Зазвичай, складається з редактора початкового коду, інструментів для автоматизації складання та відлагодження програм. Більшість сучасних середовищ розробки мають можливість автодоповнення коду. Wikipedia
Завантажити продукти можна з сайту https://rstudio.com
. Щоб знайти середовище, яке ми будемо використовувати під час вивчення курсу варто виконати наступні кроки:
Products > RStudio
.RStudio Desktop
версії Open Source
та натискаємо DOWNLOAD RSTUDIO DESKTOP:RStudio Desktop
RStudio Desktop
з наданого переліку:RStudio Desktop
Після завантаження запускаємо інсталятор RStudio
. Особливих кроків у цьому процесі немає.
Після запуску IDE RStudio зазвичай складається з 3-х або 4-х блоків: * Файл, з яким працювали останнім (зліва зверху). * Консоль для введення коду та виведення результатів (зліва знизу). * Змінні середовища (Environment
) (справа зверху) + Історія команд (History
), Зєднання з зовнішніми ресурсами даних, наприклад, бази даних (Connections
), навчальна інструкція (Tutorial
). * Файли каталогу або проекту (Files
), Інстальовані пакети (Packages
), Допомога (Help
), Візуалізація результатів (Plots
, Viewer
).
RStudio Desktop
Для першої демонстрації роботи виконаємо у консолі 2 рядки коду:
RStudio Desktop
Перший рядок з кодом data <- c(3,7,1,6,3,4,5,4,2)
створює у пам’яті колекцію чисел. Зверніть увагу, що у блоці Environments відобраюаться усі змінні, що уснують у поточному робочому просторі (про це буде далі).
Другий рядок plot(data, type="l")
дозволяє побудувати простий лінійний графік (type="l" - linear, "p" - point
, help(plot)
для деталей). Графіки, що “промальовуються” як картинки выдображаються у блоці Plots. Якщо ж графік має більш складну візуалізацію з інтерактивними елементами, що використовують уже засоби html/css/js, то він буде відображений у блоці View.
Якщо перемкнутися на вкладку History, то ми побачимо перелік раніше виконаних команд.
Для швидкого “гортання” уже виконаних раніше команд на консолі (Console) можна скористатися клавішами Up/Down на клавіатурі:
На відміну від R Gui
в RStudio
реалізовано концепцію проектів, що дозволяє організувати код та поєднати різні його частини у межах певного рішення.
Створимо наш перший проект.
Для початку оберемо з верхнього меню пункт File > New Project
. У вікні вибору способу створення проекту клікаємо New Directory
. Такий спосіб передбачає, що жодного файлу проекту поки не існує або ми пізніше туди скопіюємо уже готовий код.
RStudio Desktop
. Новий проєктНа наступному кроці обираємо New Project
:
RStudio Desktop
. Новий проєкт. Тип проектуПісля кліку на Create Project
буде створено папку за попередньо обраним шляхом. Для запуску проєкту або швидкого перемикання між проектами можна скористатися як пунктами головного меню, так і підменю проектів справа. Також відкрити проект можна запуском файлу *.Rproj
у провіднику Windows
.
RStudio Desktop
. Новий проєктЩоб додати новий файл з кодом R
потрібно обрати з головного меню File > New file > R Script
або скористатися командою Ctrl+Shift+N
. Новий файл буде створено з назвою Untitled[X]
, тому рекомендую одразу його зберегти, наприклад, як TestCode.R
Для першого проекту розвяжемо наступну задачу:
Написати програму, що генерує вектор з 20-ти випадкових чисел у межах [1;5], обчислює середнє та суму чисел, а також виводить гістограму частоти кожного значення (скільки разів дане число повторюється у векторі).
Код для генерації 20-ти випадкових чесел у діапазоні [1;5] матиме наступний вигляд:
Результати виконання на Вашому ПК будуть іншими, адже псевдогенератор випадкових чисел буде брати іншу “точку відліку” для генерування чисел. Рекомендую перегляду функцію set.seed(точка відліку - число)
.
Обчислення та виведення на консоль інформації про суму та середнє значення:
[1] "Sum: 57"
[1] "Mean: 2.85"
Виведемо гістограму:
Примітка. Детальніше про параметри функції hist()
можна почитати тут: https://www.rdocumentation.org/packages/graphics/versions/3.6.2/topics/hist.
Орієнтовний вигляд вікна RStudio
після викоання усіх описаних вище операцій матиме настпуний вигляд:
RStudio Desktop
. Перегляд зміннихВарто звернути увагу на виділений блок Environment
, де можна переглянути усі доступні змінні, що є на даний момент у пам'яті
. До цих параметрів можна звертатися у коді чи з консолі у будь, який момент. Детальну інформацію про робоче середовище розглянуто нижче.
Jupyter Notebook
Ноутбуки стали зручним та поширеним інструментом для аналізу даних, а також послідовного викладення матеріалів чи результатів дослідження. Перевагою такого інструменту є перемішування коду, результатів його виконання та іншого текстового наповнення, що дозволяє сформувати “на льоту” готові до читання документи.
Використання ноутбуків у навчальному процесі дозволяє описати не лише теоретичний матеріал, але приклади коду, що будуть виконувати безпосередньо під час ознайомлення з лекцією. Також слухач курсу може відредагувати наявний код та перевірити результати його виконання.
Розгялнемо процес інсталяції та запуску Anaconda
(середовище з відкритим кодом для вирішення задач Data Science
) та Jupyter Notebook
на ПК.
Для встановлення середовища Anaconda
потрібно перейти на сайт проекту та завантажити індивідуальну версію продукту: https://www.anaconda.com/products/individual (Anaconda. The World’s Most Popular Data Science Platform 2021).
_*Примітка. Усі операції у даному курсі виконуються під операційну систему Windows 11 Education Edition
_.
Процес інсталяції середовища Anaconda не відрізняється від стандарного покрокового вставнолення програм у Windows
.
Після запуску Anaconda Navigator
для початку потрібно створити нове середовище та налаштувати роботу R
:
Anaconda Navigator
Для початку потрібно перейти на вкладку Environments
та натиснути Create
:
Anaconda Navigator
У вікні, що відкрилося потрібно відмітити [x]
вставновлення інструментів для роботи з R
:
R
у Anaconda Navigator
Після встановлення R-інструментів оптрібно переключитися на вкладку Home
та робочий простір:
Anaconda Navigator
Після завантаження робочого простору оберіть Launch
для запуску Jupyter Notebook
з переліку встановлених засобів. Jupyter Notebook
буде запущено у браузері за замовчеванням Вашого ПК. Відкрити ноутбук можна обравши потрібний файл, а створити новий у меню справа New
> Notebook
> R
:
Jupyter Notebook
Окрім середовищ описаних вище існує ряд досить цікавих інструментів, що роблять досить зручною роботу з R
-кодом. Розглянемо ці інструменти.
Visual Studio Code - безкоштовний редактор коду від Microsoft
, орієнтовний на велику кількість мов програмування та фреймворків (Visual Studio Code 2021). Серед інших іструментів у VS Code доступні також розширення для роботи з R
:
Visual Studio Community Edition - безкоштовне середовище розробки від компаній Microsoft. VS створено з самого початку для розробки під платформу .NET та мови програмування C#, VB.NET, F# тощо, але з часом отримало багато розширень, що дозволяють у тому числі, працювати і з проектами в R
(Visual Studio Community Edition 2021).
Google Collab - онлайн сервіс для роботи з ноутбуками для Data Science
від компанії Google
(Google Colaboratory 2021):
Примітка. Код у прикладі вище написаний на Python
.
kaggle.com - сервіс для змагань з Data Science
та Machine Learning
. Окрім переліку змагань, наборів даних сервіс має досить зручні ноутбуки.
Загалом сервісів та середовищ для розробки в R
існує досить багато і їх кількість зростає, але це не впливає на принципи написання коду та роботу з даними.