tidyverse
.R состоит из двух принципиальных частей:
IDE - integrated development environment, программные пакеты, которые облегчают программирование.
RStudio - интегрированная система для программирования в R. Нужно дополнительно устанавливать.
❗️Есть пробная онлайн-версия: https://rstudio.cloud/ - но медленная.
install.packages("readxl") # Один раз на каждом компьютере
library("readxl") # Перед использованием. После каждого перезапуска R.
# Кстати, хэштэгом обозначают комментарии, которые не считываются R.
Об R можно думать как об умном калькуляторе.
5+5
[1] 10
В верхнем окошке вы видите то, что вводит человек, в нижнем - то, чем отвечает на это компьютер.
[1]
в ответе компьютера обозначает порядковый номер значения.
В дополнение к вычислениям, R может хранить в памяти различные данные (в широком смысле) - они называются объектами.
❗️Названия объектов должны начинаться c буквы или точки.
❗️R различает большие и маленькие буквы.
Объектами могут быть любые фрагменты информации. Это может быть одно значение, вектор однотипных значений (переменная), список разнотипных значений, таблица, или даже список других объектов. И многое другое. Вид информации, хранящейся в объекте, называется класс объекта.
numeric
для интервальных непрерывных переменных;factor
для номинальных и порядковых (ordered factor
) переменных;string
или character
- для текстовых переменных;logical
, переменные принимающие только значение TRUE или FALSE.При чтении данных многие функции автоматически определяют тип переменных, но все равно лучше проверять.
[1] 1.10 2.50 3.23 4.00 5.00
[1] "cat" "dog" "mouse"
[1] horsebean horsebean horsebean
Levels: casein horsebean linseed meatmeal soybean sunflower
[1] Primary Primary
Levels: Primary < Secondary < Higher
[1] FALSE TRUE TRUE TRUE
c
- для отдельных переменных;data.frame
- наиболее используемые и привычные таблицы данных;matrix
- двухмерная таблица, удобныя для матричных преобразований,array
- многомерная таблица,list
- может содержать данные разных типов и любые объекты.c()
[1] 1 2 3
data.frame
var.one var.two
1 1 A
2 2 B
3 3 C
[,1] [,2] [,3] [,4] [,5]
[1,] 1 7 13 19 25
[2,] 2 8 14 20 26
[3,] 3 9 15 21 27
[4,] 4 10 16 22 28
[5,] 5 11 17 23 29
[6,] 6 12 18 24 30
, , 1
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 7 10 13
[2,] 2 5 8 11 14
[3,] 3 6 9 12 15
, , 2
[,1] [,2] [,3] [,4] [,5]
[1,] 16 19 22 25 28
[2,] 17 20 23 26 29
[3,] 18 21 24 27 30
$`можно дать имя одному или всем элементам`
[1] 1 2 3 4 5
[[2]]
[1] "a" "c"
[[3]]
[1] "Просто единичная строка"
С объектами можно производить различные операции. Типичные операции можно осуществлять с помощью специальных символов — операторов. Создадим два объекта a
и b
и сложим их значения:
a <- 5
b <- 6
a + b
[1] 11
<-
– =
– оператор равнозначен <-
, но также используется для других целей.==
– проверяет равенство объектов (не путайте с приписыванием =
).-
, +
, /
, *
, ^
– простейшие математические операторы.Функции – это типовые операции, которые, чтобы не прописать заново, можно сохранять.
Весь R работает на функциях.
Например, можно подсчитать сумму, применив функцию sum()
к числовому вектору.
some.numbers <- c(1,3,6,0)
sum(some.numbers)
[1] 10
mean()
вычисляет среднюю, sd()
- стандартное отклонение средней.
Другая простейшая функция c()
- она объединяет ряд значений в вектор и конвертирует их в один и тот же тип.
c(1, 2, "R", "", 0)
[1] "1" "2" "R" "" "0"
В каждой функции есть вводные параметры (аргументы), и ее продукт, результат, или то, что функция возвращает.
Большинство функций имеет форму:
НАЗВАНИЕ_ФУНКЦИИ(аргумент1 = "умолчание",
аргумент2 = "умолчание2",
...)
Иногда значение по умолчанию не задано, такие аргументы нужно обязательно указывать - обязательные аргументы. Аргументы, имеющие значение по умолчанию называются необязательными.
У каждого аргумента есть имя.
Количество и имена аргументов в каждой функции свои собственные (но могут быть и одинаковыми).
Функция subset
имеет три обязательных аргумента, у которых нет умолчаний
subset(x, subset, select)
x
- массив, который фильтруем,subset
- какие строки из массива х нужно оставить,select
- какие переменные из массива нужно оставить.А в функции c()
[то есть combine] нет умолчаний, у аргументов нет имен и количество их не ограничено. Она возвращает вектор, объединяющий все данные ей аргументы.
Разные функции возвращают разные типы объектов, это может быть одно число, строка, массив данных, список, таблица, график, и так далее. В документации к каждой функции есть разел Value, где указывается, что возвращает функция.
Приписывание значений аргументам возможно только с использованием =
.
❗️Если нужно проверить равенство, необходимо использовать ==
. Например: a == b
вернет TRUE или FALSE, a = b
не вернет ничего, но создаст (перезапишет) объект а
скоровав в него значение объекта b
.
Если мы решили использовать значение по умолчанию, можно пропустить аргумент. Можно также пропустить имя аргумента, но тогда нужно вводить аргументы в правильной последовательности.
# Эти строки эквивалентны:
subset(x = mydata, subset = age > 65, select = c("health", "income"))
subset( mydata, age > 65, c("health", "income"))
В большинстве случаев результат работы функции нужно сохранять.
# Эта строка сохранит подмассив пожилых респондентов и только две переменных в объект old.respondents:
old.respondents <- subset(mydata, age > 65, c("health", "income"))
❗️Если не сохранить результат работы функции в объект, вы увидите только часть информации в консоли, а сам результат потеряется.
Если результат сохранен в объект, в консоли обычно ничего не выводится.
<-
и =
, +
, -
, *
, /
, ^
.c
data.frame
subset
list
function
class
🐑 | 🐕 | 🐈 | 🐌 | 🐸 | 🐵