10 главных конструкций языка R

Язык для аналитиков и дата-сайентистов

10 главных конструкций языка R

Недавно мы рассказали, для чего нужен и что умеет язык R. Теперь познакомимся с ним поближе и посмотрим, из чего он состоит и как на нём пишутся программы. На самом деле здесь 9 конструкций, но 10 звучит круче.

👉 Точка с запятой в R не ставится.

Комментарии

Для комментариев в R используют решётку, как и в большинстве языков:

# это комментарий
# его можно оставлять на той же строке, что и команда, а можно выносить в отдельную строку

Переменные и векторы

Чтобы объявить переменную, достаточно объявить её имя и присвоить ей что-нибудь, а R сам разберётся, какой тип тут нужен:

x <- 120 # число
y <- "Привет" # строка
z <- 1:5 # набор чисел от 1 до 5

Если говорить совсем точно, то в R существует много структур данных: векторы, матрицы, списки, факторы и так далее. Самым важным считается вектор — это набор элементов, у которых одинаковый тип данных.

Сами типы векторов такие:

  • логический (logical), 
  • целочисленный (integer), 
  • вещественный (double), 
  • комплексный (complex), 
  • символьный (character),
  • двоичные данные (raw).

👉 С векторами можно делать любые операции из векторной алгебры. Если что — у нас есть отличный цикл про векторы и матрицы. Матрицы в R тоже есть.

Вам может быть интересно:

Внешние модули

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

Чтобы подключить внешний модуль, используют команду library():

library(pipelearner) # подключаем модуль для разбиения 
данных на блоки, чтобы лучше обучать модель

Ввод и вывод

Для вывода значения переменной достаточно просто написать её имя:

x # выведет значение x
y # выведет значение y

А для вывода сообщения нужна команда print(): print(“Привет, это журнал Код!”).

Если нужно вывести график функции, можно использовать стандартную команду plot() — она построит график в виде точек, гистограмм или соединит всё линиями.

plot(x,y) # в x и y — наборы значений

Так как R предназначен для работы с большими объёмами данных, то ввод данных идёт не с клавиатуры, а из файлов:

src <- read.table(file = "chehov.txt", header = TRUE)

Но если нужен ввод с клавиатуры, используйте команду readline():

input <- readline(prompt = "Введите возраст: ") # 
отправляем введённое число в переменную input

Присваивание и сравнение

Сравнение обозначается как обычно, двойным знаком равно:

a == 1331

А вот присваивания есть два, стрелка и знак равенства.

	x = 15
	y <- 15

Если не вдаваться в нюансы использования, то стрелка отвечает за глобальное использование переменной, чтобы она была видна всем, а знак равенства — за локальное использование, то есть внутри какой-то подпрограммы.

Условный оператор if

В нём никаких сюрпризов: фигурные скобки, как в JavaScript, и скобки для выражения, которое проверяем:

if(x >= 100 && x < 1000){
    y = 12
    print(y)
  }
  else {
    y = 0
  }

Цикл for

А вот цикл for похож уже на Python с его диапазоном для организации шага цикла. Остальное всё то же самое — фигурные скобки тоже нужны для группировки нескольких команд:

for(i in 1:100){
 	y<-y+y*0.05
 }

Функции

Работают и объявляются точно так же, как и в других языках высокого уровня. Единственное отличие в том, что функция объявляется не сама по себе, а как бы отправляется в переменную (как стрелочная функция в JavaScript):

run.10km <- function(y){
 for(i in 1:100){
 y<-y+y*0.05
 }
 print(y)
}

run.10km(0.1)

Классы, методы и объекты

R — полностью объектно-ориентированный язык. Каждый элемент в нём — это объект, даже функции и таблицы. Поэтому всё, что работает в ООП (классы, методы и объекты), работает и в R, но на более сложном уровне абстракции.

В R можно посмотреть список всех доступных методов для любого объекта с помощью команды methods(). Например, если нам нужно понять, какие методы есть у команды plot(), которая рисует нам график, то нам нужно написать в консоли среды разработки: methods(plot)

В ответ мы получим все доступные методы:

 [1] plot.acf*           plot.data.frame*    plot.decomposed.ts*
 [4] plot.default        plot.dendrogram*    plot.density*      
 [7] plot.ecdf           plot.factor*        plot.formula*      
[10] plot.function       plot.hclust*        plot.histogram*    
[13] plot.HoltWinters*   plot.isoreg*        plot.lm*           
[16] plot.medpolish*     plot.mlm*           plot.ppr*          
[19] plot.prcomp*        plot.princomp*      plot.profile.nls*  
[22] plot.raster*        plot.spec*          plot.stepfun       
[25] plot.stl*           plot.table*         plot.ts            
[28] plot.tskernel*      plot.TukeyHSD*  

Кстати, метод default срабатывает, когда plot() получает на обработку объект неизвестного ей класса.

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Знакомство с матрицами
Знакомство с матрицами

Понятие и базовые операции.

medium
Знакомимся с вектором
Знакомимся с вектором

Основы линейной алгебры для тех, кого это миновало в универе.

medium
Все знают о мужчинах в IT. А вот и женщины
Все знают о мужчинах в IT. А вот и женщины

Феминисткам всё равно не понравится эта статья, а вы прочитайте

easy
Большой разбор: как ИИ играет в змейку
Большой разбор: как ИИ играет в змейку

Современные технологии против игры прошлого века.

medium
Функция filter() в Python
Функция filter() в Python

Простой способ добавить нужное в корзину

easy
Зачем нужны счётчики аналитики на сайте и что они умеют
Зачем нужны счётчики аналитики на сайте и что они умеют

Переходим на новый уровень настройки сайтов.

easy
Как начать писать программу и не пожалеть
Как начать писать программу и не пожалеть

Простое пошаговое руководство для тех, кто решил написать свой первый полезный софт

easy
Почему второй язык программирования выучить проще, чем первый?
Почему второй язык программирования выучить проще, чем первый?

Секрет — в знании алгоритмов, а не синтаксиса

easy
Разгон: неочевидная работа программистов, о которой вы ничего не знаете (а жаль)
Разгон: неочевидная работа программистов, о которой вы ничего не знаете (а жаль)

Тайные герои нашего времени

easy
easy