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

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

easy
Пишем и публикуем свою первую библиотеку для Python

Это несложно, но можно запутаться

hard
Разработчикам на заметку: UX-паттерны на сайтах

Как сделать так, чтобы пользователю было удобно

easy
Запускаем Stable Diffusion и рисуем нейроарт на MacOS за один простой шаг

Инструкция для тех, кто не хочет долго копаться

easy
Подборка сайтов, где тестировщики могут проверить свои силы

Пройди их все

easy
Какое выбрать решение в сложной ситуации: призываем теорию игр

Разбираем дилемму заключённого — самую интересную и неочевидную ситуацию в математике

medium
Как разрезать торт так, чтобы никто не обиделся

Звучит смешно, но эту проблему уже 80 лет решают математики и программисты

medium
easy
[anycomment]
Exit mobile version