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

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. А вот и женщины

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

easy
Flipper Zero: как устроен хакерский тамагочи
Flipper Zero: как устроен хакерский тамагочи

И сколько на нём можно заработать.

easy
Кто такой архитектор в ИТ и как им стать
Кто такой архитектор в ИТ и как им стать

Сам код не пишет, а другие — пишут.

easy
Как устроен российский корпоративный мессенджер «Пачка»
Как устроен российский корпоративный мессенджер «Пачка»

Технологии, разработка и перспективы российского ИТ

easy
ЭТО RAID
ЭТО RAID

Как устроено избыточное хранение данных.

medium
Почему Ассемблер — это круто, но сложно

Потому что это круто. Но сложно.

hard
За что не любят программистов

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

easy
easy