📌 Структура R

R - это статистический язык программирования

1

Язык программирования:
  • новые слова: основные команды;
  • новая грамматика: правила сопряжения слов, чтобы передать смысл;
  • стили употребления: конвенции;
  • диалекты, например tidyverse.

2

Язык используется для коммуникации:
  • со средой R,
  • с внешними программами,
  • с интернет-сайтами, с мессенджерами и др.,
  • с другими исследователями.

3

Статистический язык
  • в первую очередь направлен на создание статистических моделей и манипуляций с данными;
  • сбор данных, обработка текстов, генерирование отчетов;
  • другие возможности открыты, но меньше средств.

Базовые команды, пакеты в R.

R состоит из двух принципиальных частей:

  • базовый R, т.е. сам язык, т.е. среда, которая понимает несколько команд и дает ответ;
  • пакеты R, т.е. надстройки, программы, написанные на языке R, решающие специфические задачи.

a) Базовый R

  • Устанавливается исходно, когда вы устанавливаете R
  • В практической работе используется для базовых команд, таких как сохранение, фильтрация, перекодирование, линейные регрессии, корреляции.
  • Больше полезен для создания собственных пакетов и функций.
  • Работает на большинстве операционных систем: Windows, MacOS, Linux.

b) Пакеты в R

  • Большая часть практической работы в R связана с пакетами.
  • Пакеты пишутся добровольно силами статистиков со всего мира. Пакеты хранятся в репозиториях CRAN, Bioconductor и иногда в отдельных репозиториях GitHub.
  • Существует более 18.000 пакетов R (только на CRAN, на сентябрь 2021 г.).
  • Многие из пакетов решают одни и те же задачи разными путями. Выбор пакета из альтернатив - одна из новых задач.
  • (Почти) все пакеты имеют открытый код и бесплатны. Через короткое время вы сможете читать код и смотреть, как они работают изнутри.
  • Статистический анализ перестает быть “черным ящиком”.

Как ориентироваться в мире пакетов R ?

Знакомство с RStudio

IDE - integrated development environment, программные пакеты, которые облегчают программирование.

RStudio - интегрированная система для программирования в R. Нужно дополнительно устанавливать.

❗️Есть пробная онлайн-версия: https://rstudio.cloud/ - но медленная.

Установка и использование пакетов

install.packages("readxl") # Один раз на каждом компьютере
library("readxl")          # Перед использованием. После каждого перезапуска R.
# Кстати, хэштэгом обозначают комментарии, которые не считываются R.

🐣 Ключевые структуры R

Объекты

Об R можно думать как об умном калькуляторе.

5+5
[1] 10

В верхнем окошке вы видите то, что вводит человек, в нижнем - то, чем отвечает на это компьютер.
[1] в ответе компьютера обозначает порядковый номер значения.

В дополнение к вычислениям, R может хранить в памяти различные данные (в широком смысле) - они называются объектами.

❗️Названия объектов должны начинаться c буквы или точки.

❗️R различает большие и маленькие буквы.

Виды (классы) объектов

Объектами могут быть любые фрагменты информации. Это может быть одно значение, вектор однотипных значений (переменная), список разнотипных значений, таблица, или даже список других объектов. И многое другое. Вид информации, хранящейся в объекте, называется класс объекта.

a) Типы переменных

  • числовые numeric для интервальных непрерывных переменных;
  • так называемые факторы factor для номинальных и порядковых (ordered factor) переменных;
  • строчные string или character - для текстовых переменных;
  • логические logical, переменные принимающие только значение TRUE или FALSE.

При чтении данных многие функции автоматически определяют тип переменных, но все равно лучше проверять.

numeric
[1] 1.10 2.50 3.23 4.00 5.00
string/character
[1] "cat"   "dog"   "mouse"
factor (unordered)
[1] horsebean horsebean horsebean
Levels: casein horsebean linseed meatmeal soybean sunflower
ordered factor
[1] Primary Primary
Levels: Primary < Secondary < Higher
logical
[1] FALSE  TRUE  TRUE  TRUE

b) Структуры хранения данных

  • векторы 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
matrix
     [,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
array
, , 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
list
$`можно дать имя одному или всем элементам`
[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"

In and Out

В каждой функции есть вводные параметры (аргументы), и ее продукт, результат, или то, что функция возвращает.

Форма

Большинство функций имеет форму:

НАЗВАНИЕ_ФУНКЦИИ(аргумент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"))  

❗️Если не сохранить результат работы функции в объект, вы увидите только часть информации в консоли, а сам результат потеряется.

Если результат сохранен в объект, в консоли обычно ничего не выводится.

Новые слова на языке R (функции):

  • Операторы: <- и =, +, -, *, /, ^.
  • c
  • data.frame
  • subset
  • list
  • function
  • class

Вопросы?


🐑 | 🐕 | 🐈 | 🐌 | 🐸 | 🐵




Максим Руднев, 2018-2021 на основе RMarkdown.