[МУЗЫКА] [МУЗЫКА] [МУЗЫКА] Продолжим работу с нашей заранее заготовленной программой, и следующий её блок посвящён типам и структурам данных. В принципе, мы с вами уже познакомились с основными типами переменных: это числовые переменные, логические переменные, текстовые. Сейчас мы разберём их чуть более подробно. Числовые переменные делятся на основные типы, это целочисленные и вещественные. Давайте для начала зададим переменную y, которая будет состоять из одной целочисленной компоненты. В данной строке у меня выполняется сразу два действия: сначала создаётся объект, а потом данному объекту присваивается значение три. В принципе, это действие не обязательно, мы просто подчёркиваем в данном случае тип переменной, чтобы он у нас был создан корректно. Нажимаем Ctrl R — данная операция у нас выполнена и объект создан. Далее мы создадим вещественную переменную z и сразу присвоим ей значение 4,7. С помощью операции is.integer мы можем проверить, какого типа наша переменная. С помощью операции is, а дальше тип переменной, например, integer или double, мы можем проверить, какого типа наша переменная. В частности, является ли она целочисленной. Проверим, является ли переменная z целочисленной. Нажимаем Ctrl R. Мы создавали её вещественной, типа double, она у нас равна 4,7, поэтому она не является целочисленной, соответственно результатом данной операции мы получили ложь. Проверим, является ли она вещественной. Да, это действительно вещественная переменная, содержащая дробную часть. Также мы можем менять типы переменной, то есть z сейчас у нас является переменной типа double, с помощью операции as и далее, после точки, тип переменной мы можем сменить его на другой тип, в данном случае — на целочисленный. Нажимаем Ctrl R — операция выполнена, преобразование выполнено. Чему будет равно значение соответствующей переменной? Выведем его на экран. Естественно, это будет значение четыре, то есть дробная часть была отброшена и оставлена только целая часть. Проверим, является ли данная переменная целочисленной. Да. Является ли она теперь у нас переменной типа double? Нет. Функция mode показывает нам, какого типа соответствующие переменные. Выполним эту строчку — объект x у нас не найден. Я пропустила вот эту первую строку, когда было создание объекта, соответственно, программа на смогла определить, какого типа этот объект. Давайте сейчас выполним эту операцию, то есть x — это у нас будет объект типа double, содержащий три элемента. Нажимаем Ctrl R — операция выполнена. Давайте посмотрим, что у нас теперь в переменной x. Это вектор из трёх значений, каждое из которых типа double, но, поскольку мы не присваивали пока никаких конкретных значений, мы просто создали структуру, пока все эти значения равны нулю. Давайте выполним ещё раз эту операцию. Я предлагаю, пролистав список уже выполненных команд, выбрать необходимую. Нажмём Enter. Теперь все эти операции выполнены корректно, все объекты найдены и все эти объекты являются числовыми. Да, они разного типа, кто-то из них целочисленный, кто-то — double, но, тем не менее, они все являются числами. Мы с вами уже сталкивались с логическими и текстовыми переменными. Давайте обратим внимание на ещё некоторые нюансы работы с ними. Например, я хочу создать вектор C, который будет представлять собой вектор, состоящий из трёх логических переменных. Как видите, значения логических переменных — это истина и ложь. При этом в языке R они определены соответствующим образом. Для обозначения истины мы можем использовать полное слово TRUE заглавными буквами либо заглавную букву T. И аналогично для ложной переменной, то есть либо FALSE, либо F. Соответственно, вот эти вот четыре переменные должны у нас будут восприняты совершенно адекватно: истина, ложь, истина, ложь. В этой строке мы выполним сразу пять операций. Мы создадим вектор. Мы выведем полученные значения на экран. Мы посмотрим тип данных, длину этих данных и класс объекта, который мы создали. В случае, когда у нас объект представляет вектор, то класс совпадает со значением типа данных, то есть операция класс будет выдавать нам, какого типа данные в данном векторе. Ctrl R — операция выполнена, то есть создан вектор из четырёх значений: истина, ложь, истина, ложь. Обратите внимание, что здесь мы определяли их просто буквами F и T. При этом при создании этого вектора им были присвоены значения в том виде, в каком они собственно используются в языке R. Далее, тип этих данных — логический, длина этого вектора — четыре, и класс этого вектора — также логический. Теперь посмотрим текстовую переменную. Создадим объект, например, мы изучаем пакет R. Я проверяю, что у меня сейчас установлена кириллица, соответственно, вот этот текст должен быть корректно перенесён на консоль. Ctrl R — эта фраза у нас перенесена и создан объект A, который представляет собой строку «Мы изучаем пакет R». Каков тип этой переменной? Естественно, тип этой переменной character, то есть текстовая переменная. А вот какова длина этой переменной? Длина этой переменной — единичная, то есть язык R воспринимает как одну переменную всю информацию, заключённую между двумя кавычками. Если мы хотим каждое слово воспринимать как отдельный объект, мы должны заключить его в кавычки и поставить между ними запятые, создав тем самым вектор из четырех значений. Либо нужно использовать специальный метод работы с текстом, который будет воспринимать весь этот объект как текст и уже сам будет разделять его. Итак, мы изучили с вами различные типы данных языка R: это числовой, логический и текстовый. И посмотрим, как их можно преобразовывать один в другой. Для начала мы рассмотрим преобразование логических переменных в числовые. Для этого создадим вектор логических переменных. Посмотрим, чему у нас ровны его значения. Это достаточно очевидно. Это будет истина, ложь, ложь, и так далее. А теперь поменяем тип этих данных на числовой. Как видим, теперь значению истина у нас соответствует единица, а значению ложь соответствует ноль. Теперь посмотрим, как перевести текстовую информацию в числовую. Для начала сформируем вектор, состоящий из текстовых значений, но эти значения у нас будут один, два, три, четыре. В данном случае они не будут восприниматься как числа, а просто как некоторые метки. Тип этих данных будет текстовый, потому что каждое число у нас заключено в кавычки. Если мы посмотрим содержимое данного вектора, [СТУК] мы видим значения от одного до десяти, но они все заключены в кавычки как текстовые переменные. А вот теперь сохраним этот вектор как числовой. И наши единицы, двойки, тройки, которые были просто номинальными величинами, теперь превратились в числовые, и мы можем работать с ними как с числовой информацией. Теперь аналогично создадим также текстовые переменные, но это будут уже буквы A, B, C, D, E. Создаём вектор, посмотрим его содержимое. Тот же самый результат мы могли бы получить, если бы обратились к встроенному массиву латинских букв с помощью функции letters и взяв первые пять значений. Как видите, результат получается абсолютно тот же самый. Что будет, если мы попробуем эту текстовую информацию перевести в числовую? Как видите, в данном случае эта операция невозможна, и у нас вынуждено наши буквы были переобозначены значениями non available. То есть эти значения в цифровом формате оказались нам недоступны. Теперь посмотрим преобразование числового типа в логический. Сформируем вектор значений от нуля до пяти. Также посмотрим содержимое этого вектора. Очевидно, что это шесть значений: ноль, один, два, три, четыре, пять. Что будет, если мы попробуем перевести его в логический формат? Сохраняем его как логический — и видите, что значению ноль у нас соответствует ложь, единице у нас соответствует истина, и всем остальным значениями, отличным от нуля и единицы, у нас также соответствует истина. То есть при переводе числовой информации в логическую нулю будет соответствовать ложь, остальным значениям будет соответствовать истина. Далее переведём текстовую переменную в логическую. Создадим вектор текстовых переменных со следующими значениями. Например, возьмём зарезервированное имя FALSE, F заглавную, T заглавную, также значение ложь, false, но написанную строчными буквами, f маленькая, TRUE, A, некоторый символ, например, %, и значение пять. Выведем этот вектор и переведём в логический. Что у нас получилось? Слово FALSE, оно и обозначало у нас ложь, она осталось таким же. F заглавная, как мы это видели ранее, также соответствует значению переменной ложь. T заглавная соответствую значению переменной истина. false строчными буквами, оно у нас было воспринято тоже как ложная переменная, а вот f маленькое в данном случае не соответствует стандартным логическим переменным, поэтому на её месте мы видим значение non available. Дальше, аналогично, значение TRUE заглавными, оно сохранило своё значение, а вот эти все символы, буквы, числа у нас так же non available. Следующее преобразование — это числовой формат в текстовый. Выше у нас создан вектор num, переведём его в текстовый формат. Совершенно очевидно, эти числа теперь у нас стали обычными символами. И последнее преобразование — логический-текстовый. Этот вектор у нас содержит значения истина и ложь, и если мы переведём его в текстовый формат, это будет два слова: истина и ложь, соответственно. [МУЗЫКА] [МУЗЫКА]