[1] "some text"
8 Базові типи даних R
8.1 Типізація в R
Усі мови програмування мають власну типізацію даних з якими працюють. Тип даних - це набір властивостей певних об’єктів та операцій, що можна з ними виконувати. Так, наприклад, з цілими числами можна виконувати арифметичні операції додавання, віднімання та інші. Набори символів (простими словами текст) зазвичай можуть використовуватися для пошуку у них елементів, редагування (шляхом видалення частини існуючого або додавання нового тексту), склеювання та розділення на частини.
У R
, на відміну від строго типізованих мов програмування, тип даних визначається на основі поточного значення елемента і може змінюватися у процесі виконання.
Розгялнемо приклад коду з мови програмування C#
(мова родом із C
/Java
):
Подібний код у C#
передбачає створення нової змінної a
типу int
(integer
- ціле число), а потім відбувається присвоєння для a
текстового фрагмента (тип string
у С#
). Такий код не буде запущено і виникне помилка компіляції.
Розглянемо приклад коду з R
:
Такий код виконається і на консоль буде виведено some text
, адже у 1 першому рядку було присвоєно ціле число, у другому - текст. Таким чином R
має динамічну типізацію, що дозволяє у ту ж саму змінну записати значення різних типів. Проте варто пам’ятати, що попереднє значення буде втрачено.
До базових типів даних у R варто віднести:
- Числа з дробовою частиною (
decimal numbers
), як наприклад,4.0
,15.214
, що називаютьсяnumeric(s)
. - Натуральні числа (
natural numbers
), як наприклад,4
,15
, що називаютьсяinteger(s)
. - Логічні значення (
boolean values
), тобтоTRUE
таFALSE
(які також можна скорочено записуватиT
таF
), що називаютьсяlogical
. - Текст або рядки (
string values
), як наприклад,"Hello"
,"12 is number"
, що називаютьсяcharacter(s)
.
Оголосимо для прикладу три змінні: my_numeric
- число, my_character
- текст, my_logical
- логічне значення.
Замінимо значення my_character <- "5"
та спробуємо знайти суму значень:
У результаті виклання даного коду ми отримаємо помилку, адже значення 5
та "5"
є елементами різних типів даних, перевіримо типи за допомогю функції class()
:
Виконання коду class(5)
показує нам, що 5
є значенням числового типу даних numeric
, а class("5")
відповідає тексту character
, тому арифметична операція додавання між цими значеннями неможлива.
8.2 Перевірка та приведення типів даних
У випадку коли тип даних потрібно визначити у процесі виконання програми/коду та перетворити значення використовується приведння типів даних.
Приведення типів даних - операція перетворення значення з одного типу даних в інший. Важливо памятати, що не завжди приведення типів даних може бути здійснено. Так, наприклад, значення "5"
(character
) можна досить просто привести до 5
(numeric
), проте "five"
не буде зрозумілим для інтерпритатора.
Для перевірки належності елемента до певного типу даних використовують спеціальну функцію is.назва_типу(значення)
. Ця функція повертає TRUE
, якщо елемент належить даному типу і FALSE
, якщо не належить.
Розглянемо приклад:
[1] TRUE
[1] FALSE
Для перетворення типу даних можна скористатися функцією as.назва_типу(значення)
. У результаті виконання функції буде повернуто значення потрібного типу або пусте значення NA
, якщо таке приведення не є можливим:
[1] 10
Warning: NAs introduced by coercion
[1] NA
Результат виконання функцій можна записувати у змінні і використовувати у наступних обчисленнях:
Повний перелік типів та методів перевірки і приведення їх типів ображений нижче:
Назва типу | Метод перевірки типу | Метод приведення типу |
---|---|---|
Array | is.array() | as.array() |
Character | is.character() | as.character() |
Complex | is.complex() | as.complex() |
Dataframe | is.data.frame() | as.data.frame() |
Double | is.double() | as.double() |
Factor | is.factor() | as.factor() |
List | is.list() | as.list() |
Logical | is.logical() | as.logical() |
Matrix | is.matrix() | as.matrix() |
Numeric | is.numeric() | as.numeric() |
Raw | is.raw() | as.raw() |
Time series (ts) | is.ts() | as.ts() |
Vector | is.vector() | as.vector() |
8.3 Приклади розв’язання завдань
Завдання 1. Сума введених чисел
Знайти суму введених з клавіатури чисел. Для введення інформації скористатися функцією readline(prompt = "Text")
.
Розв’язання:
Результат виконання: