R — это язык программирования и одноименная среда для статистических вычислений, анализа данных и построения графиков. Код на R выполняет интерпретатор: команду можно ввести в консоль и сразу увидеть результат, без отдельной компиляции. R распространяется бесплатно под лицензией GNU GPL и работает на Windows, macOS и Linux.
Содержание
- Мини-словарь: R, RStudio, CRAN, пакет
- Для чего нужен язык R
- Как установить R и RStudio
- Первые команды в консоли R
- Таблицы: data.frame и первая сводка
- Статистика в базовом R: регрессия и t-тест
- Пакеты: установка и подключение
- Типичные ошибки новичка
- Если не получилось
- Выводы
- Где применяется / связь с практикой
- FAQ
Ниже — для каких задач R подходит лучше других языков, чем R отличается от RStudio, как установить обе программы и какие команды выполнить в первые полчаса. Примеры кода прогнаны в R 4.3.3, вывод скопирован из консоли. На сентябрь 2026 актуальна ветка R 4.6 (4.6.1 вышла в июне 2026); для функций из этой статьи в списке изменений версий 4.4-4.6 несовместимых правок нет.
Мини-словарь: R, RStudio, CRAN, пакет
Новички часто путают эти четыре вещи, поэтому сразу разведем их.
| Термин | Что это | Нужно ли ставить отдельно |
|---|---|---|
| R | Язык и интерпретатор: то, что реально выполняет код | Да, в первую очередь |
| RStudio | Среда разработки (IDE) от компании Posit: редактор, консоль, окно графиков. Сама код не выполняет, а передает его R | Да, вторым шагом, по желанию |
| CRAN | Официальный архив R: там лежат установщики R и тысячи пакетов | Нет, это сайт-хранилище |
| Пакет | Набор функций сверх базового R (например, ggplot2 для графиков) |
Да, командой install.packages() |
Главное следствие: RStudio без установленного R не запустит ни одной строки кода. Порядок установки всегда такой — сначала R, потом IDE.
Для чего нужен язык R
R создали Росс Айхэка и Роберт Джентлмен в Оклендском университете в начале 1990-х как свободную реализацию языка S. Отсюда его специализация: он проектировался для статистиков, а не для разработчиков приложений.
Где R силен:
- Статистика и эксперименты. Регрессии, t-тесты, дисперсионный анализ, A/B-тесты — в базовой поставке, без установки пакетов.
- Анализ данных и отчеты. Таблицы (
data.frame), группировки, сводки; отчет можно собрать в документ вместе с кодом и графиками. - Визуализация. Базовая графика плюс
ggplot2— один из самых распространенных инструментов для научных графиков. - Наука. Биоинформатика (репозиторий пакетов Bioconductor), эконометрика, эпидемиология, социология.
Где R обычно не выбирают: веб-бэкенд, мобильные приложения, игры, высоконагруженные сервисы. Технически на R можно поднять веб-приложение (пакет shiny) или API, но это ниша для дашбордов аналитиков, а не замена языкам общего назначения.
R или Python для анализа данных
Выбор зависит от задачи и команды, а не от «какой язык лучше».
| Задача | Что обычно берут | Почему |
|---|---|---|
| Статистический анализ, научная статья | R | Классические тесты и модели в базе, много узкоспециальных пакетов |
| Аналитика в продуктовой компании | Python или R | Зависит от стека команды: SQL + Python встречается чаще |
| Машинное обучение в продакшене | Python | Экосистема ML и интеграция с сервисами |
| Графики для публикации | R (ggplot2) или Python |
Оба справляются, в R код графиков обычно короче |
Как установить R и RStudio
- Установить R. На странице CRAN (адрес
cran.r-project.org) выбрать свою ОС. Windows: раздел base, обычный установщик. macOS: пакет.pkg, причем для Mac на Apple Silicon (процессоры M-серии, сборкаarm64) и для Intel (x86_64) установщики разные. Linux (Ubuntu/Debian):sudo apt install r-base— в репозитории дистрибутива версия может отставать, свежую дает apt-репозиторий CRAN. - Проверить. Открыть программу R (или в терминале набрать
R) и ввестиR.version.string— в ответ придет строка с номером версии. - Установить RStudio Desktop с сайта Posit (бесплатная версия). При запуске RStudio сама находит установленный R.
- Создать проект. В RStudio: File -> New Project -> New Directory. Проект задает рабочую папку, и относительные пути к файлам данных начинают работать предсказуемо.
Новые минорные версии R (4.4, 4.5 и так далее) выходят примерно раз в год, весной. Для учебы подходит любая актуальная версия ветки 4.x: базовые функции из этой статьи в них работают одинаково.
Первые команды в консоли R
Минимальный набор, который стоит набрать руками (не копировать) в консоли RStudio:
2 + 2
x <- c(12, 15, 9, 20, 14)
x * 2
mean(x)
x[1]
x[x > 13]
length(x)
Результат в консоли:
[1] 4
[1] 24 30 18 40 28
[1] 14
[1] 12
[1] 15 20 14
[1] 5
Что здесь важно:
<-— оператор присваивания. Знак=тоже работает, но в сообществе принят<-.c()склеивает значения в вектор — основную структуру R. Даже одно число — это вектор длины 1, отсюда[1]перед каждым ответом (номер первого элемента в строке вывода).x * 2умножает сразу все элементы, без цикла. Это и есть векторизация: большинство операций в R применяются к вектору целиком.- Индексы начинаются с 1, а не с 0, как в Python или C:
x[1]— первый элемент. x[x > 13]— фильтр: условие дает вектор TRUE/FALSE, и R оставляет элементы, где TRUE.
Справка по любой функции — ?mean или help(mean), она откроется во вкладке Help.
Таблицы: data.frame и первая сводка
Данные в R чаще всего живут в data.frame — таблице, где каждый столбец это вектор одного типа. Создадим файл sales.csv в папке проекта:
city,orders,cheque
Москва,120,1500
Казань,45,1200
Москва,98,1650
Пермь,30,1100
Казань,61,1250
Москва,110,1580
И скрипт analysis.R (в RStudio: File -> New File -> R Script, запуск всего файла — кнопка Source):
# analysis.R - первый законченный скрипт на R
sales <- read.csv("sales.csv", encoding = "UTF-8")
str(sales)
by_city <- aggregate(orders ~ city, data = sales, FUN = sum)
by_city <- by_city[order(-by_city$orders), ]
print(by_city)
png("orders_by_city.png", width = 800, height = 500)
barplot(by_city$orders, names.arg = by_city$city,
main = "Заказы по городам", ylab = "Заказов")
invisible(dev.off())
cat("График сохранен:", file.exists("orders_by_city.png"), "\n")
Вывод:
'data.frame': 6 obs. of 3 variables:
$ city : chr "Москва" "Казань" "Москва" "Пермь" ...
$ orders: int 120 45 98 30 61 110
$ cheque: int 1500 1200 1650 1100 1250 1580
city orders
2 Москва 328
1 Казань 106
3 Пермь 30
График сохранен: TRUE
str() показывает структуру: 6 строк, 3 столбца и тип каждого (chr — строки, int — целые). aggregate() суммирует заказы по городам, order(-...) сортирует по убыванию. В папке проекта появится файл orders_by_city.png со столбчатой диаграммой. Это уже законченный артефакт: данные -> сводка -> график.
Статистика в базовом R: регрессия и t-тест
В R встроены учебные наборы данных. mtcars — 32 автомобиля с расходом топлива (mpg), массой (wt), типом коробки (am: 0 — автомат, 1 — механика).
model <- lm(mpg ~ wt, data = mtcars)
coef(model)
summary(model)$r.squared
t.test(mpg ~ am, data = mtcars)$p.value
(Intercept) wt
37.285126 -5.344472
[1] 0.7528328
[1] 0.001373638
lm() строит линейную регрессию: каждая тысяча фунтов массы связана с падением примерно на 5.3 мили на галлон, а масса объясняет около 75% разброса расхода (R-квадрат). t.test() сравнивает средний расход у автоматов и механик; p-value около 0.0014 говорит, что разница вряд ли случайна.
Граница вывода: это связь в конкретной выборке из 32 машин, а не причинный эффект. Регрессия с одним признаком не учитывает, что тяжелые машины обычно еще и мощнее. Запись mpg ~ wt (формула «что объясняем ~ чем объясняем») используется в R повсюду: в lm(), t.test(), aggregate().
Пакеты: установка и подключение
Пакет ставится один раз, а подключается в каждой новой сессии:
install.packages("ggplot2") # скачать с CRAN, один раз
library(ggplot2) # подключить в текущей сессии
Частые стартовые пакеты: ggplot2 (графики), dplyr и tidyr (обработка таблиц), readr (чтение файлов), data.table (быстрая работа с большими таблицами). Первые четыре входят в набор tidyverse, который ставится одной командой.
Типичные ошибки новичка
Функция из неподключенного пакета.
ggplot(mtcars)
Error in ggplot(mtcars) : could not find function "ggplot"
Исправление: выполнить library(ggplot2). Если в ответ пришло there is no package called ‘ggplot2’ (R берет имя пакета в типографские кавычки), пакет еще не установлен — сначала install.packages("ggplot2").
Пропуски NA ломают расчет.
temps <- c(21.5, 23.0, NA, 19.8)
mean(temps)
mean(temps, na.rm = TRUE)
[1] NA
[1] 21.43333
Любая арифметика с NA дает NA. Параметр na.rm = TRUE исключает пропуски, но решение осознанное: сначала стоит посчитать, сколько их (sum(is.na(temps))).
Вектор молча сменил тип.
v <- c(1, "2", 3)
class(v)
as.numeric(c("10", "7,5", "abc"))
[1] "character"
[1] 10 NA NA
Warning message:
NAs introduced by coercion
Вектор хранит один тип, поэтому одна строка превратила все числа в строки. А при обратном преобразовании «7,5» с запятой стало NA: R ждет десятичную точку. Для CSV с запятыми в числах и разделителем «;» есть read.csv2().
Векторы разной длины. 1:6 + 1:4 выполнится, но с предупреждением longer object length is not a multiple of shorter object length: короткий вектор повторяется по кругу. Предупреждение в R — не мелочь, а повод проверить данные.
Если не получилось
- RStudio пишет, что не нашла R. R не установлен или установлен после RStudio — поставить R и перезапустить RStudio (путь можно указать в Tools -> Global Options -> General).
cannot open file 'sales.csv'. Файл лежит не в рабочей папке. Проверитьgetwd(), открыть проект или указать полный путь.- Кириллица превратилась в «кракозябры». Файл сохранен не в UTF-8: пересохранить в UTF-8 или указать кодировку в
read.csv(..., fileEncoding = "cp1251"). install.packages()на Linux падает с ошибкой компиляции. Пакет собирается из исходников, и не хватает системных библиотек (например,libcurl4-openssl-dev,libxml2-devв Ubuntu). Название нужной библиотеки обычно есть в тексте ошибки.
Выводы
- R — язык и интерпретатор для статистики, анализа данных и графиков; RStudio — отдельная IDE, которая без установленного R не работает.
- Установка: сначала R с CRAN, потом RStudio Desktop, затем проект в RStudio для предсказуемых путей к файлам.
- Базовые идеи на старте: присваивание
<-, векторы и векторизация, индексы с 1,data.frameдля таблиц. - Регрессия, t-тест и графики доступны в базовом R без пакетов; пакеты ставятся
install.packages()один раз и подключаютсяlibrary()в каждой сессии. - Большинство первых ошибок — неподключенный пакет,
NAв данных, смешение типов и неверная рабочая папка.
Где применяется / связь с практикой
R чаще всего встречается в аналитике исследований и экспериментов, в научных командах и там, где отчет строится вокруг статистической проверки гипотез. Для аналитика данных R обычно идет в связке с SQL и одним из BI-инструментов, а умение объяснить результат теста или регрессии ценится не меньше, чем сам код.
Освойте тему на практике
Если хочется освоить работу с данными системно — от выгрузки и очистки до статистики и визуализации, — посмотрите программу курса «Аналитик данных». Разобрать отдельные темы бесплатно можно на открытых уроках Otus.
FAQ
Нужно ли знать математику, чтобы начать учить R?
Для первых команд и таблиц — нет. Для осмысленной работы с регрессиями и тестами нужна базовая статистика: среднее, дисперсия, p-value, доверительный интервал.
R медленный?
Векторизованный код на R работает быстро, потому что тяжелые операции выполняются в скомпилированном C и Fortran. Медленными обычно оказываются циклы по элементам, которые можно заменить векторной операцией, или очень большие таблицы, для которых есть data.table.
Можно ли вызывать R из Python и наоборот?
Да: из Python — через пакет rpy2, из R — через пакет reticulate. Это удобно, когда часть команды пишет на одном языке, а нужная модель есть только в другом.



