[МУЗЫКА] [МУЗЫКА] В этом видеофрагменте мы поговорим о том, как создавать переменные. Действительно, не очень интересно было бы просто что-то считать и не уметь потом воспользоваться результатами. Переменные — это то, куда мы можем складывать результаты любых вычислений. Это почти как коробка с этикеткой. Этикетка — это имя этой переменной. Создавать переменные в R можно при помощи оператора присваивания, который выглядит, как стрелочка. Это комбинация двух символов: знака меньше и знака минус. Поэтому, может быть, в начале вам будет немного непривычно набирать его. Как выглядит присваивание? Слева мы пишем имя переменной, некий текстовый идентификатор, такой, чтобы нам легко было его запомнить, не очень длинный, не очень короткий. Далее следует знак присваивания, он направлен в сторону переменной. И потом мы пишем некоторые выражения с вычислениями, вызов какой-нибудь функции, все, что угодно. Все, что угодно, можно положить в переменную, почти все, что угодно. В результате создания переменной выражение справа будет записано в этот текстовый идентификатор. И мы потом можем вызвать все содержимое переменной по имени. Например, мы можем записать в переменную box_weight число 1.3. Допустим, это вес коробки с яблоками. А в переменную apples мы можем записать число 7, потому что в этой коробке лежит семь яблок. Потом мы сможем воспользоваться этими значениями для вычисления. Нам уже необязательно будет писать 1.3 разделить на 7, чтобы узнать, сколько весит одно яблоко. Мы можем написать box_weight / apples и получим тот же самый результат. Чтобы увидеть содержимое переменной, нам нужно вызвать ее по имени. Если мы напишем apples, в консоли будет напечатано 7, то, что мы присваивали. Если мы напишем box_weight, то в консоли будет написано 1.3. Прежде чем использовать переменные для вычисления на практике, давайте попробуем разобрать, каким образом можно их называть, потому что создание имен переменных — это такая творческая задача, может быть, немного сложная в начале, потому что не все символы можно использовать для имен. Это могут быть только символы латинского алфавита, может быть точка, нижнее подчеркивание и кое-что еще. И, самое главное, R — это язык, который чувствителен к регистру тех слов, которые вы используете. И названия переменных name и Name — это будут разные вещи. Они звучат одинаково, но большая буква создает разницу. R не поймет, если вы будете использовать регистр вперемешку. Некоторые имена и некоторые символы не являются допустимыми, например, имена переменных не могут содержать знак решетки, знак амперсанда, такие экзотические всякие знаки препинания. Нельзя использовать и пробел, то есть если мы хотим создать переменную «цвет глаз» и напишем eye colour через пробел, то для R это будут два разных слова. Не стоит использовать какие-то короткие слова. Если вы хотите посчитать средние значения и создать переменную, которая называется mean, это будет плохой идеей, потому что в R есть функция, которая считает средние значения, она называется mean, вы рискуете ее перезаписать. Это, конечно, не смертельно, но неприятно. Поэтому какие-то короткие идентификаторы, как правило, бывают заняты. Sqrt — это квадратный корень. Не стоит так что-нибудь называть. Df не стоит использовать, потому что это плотность F-распределения. Другие имена не стоит использовать, потому что они малоинформативны. Если вы создадите переменную, которую назовете английской буквой a, потом, через месяц, вы вряд ли вспомните, что это за переменная, что там лежало, потому что это имя вам ровно ничего не будет говорить. Так может называться все, что угодно. Иногда, когда нам неважно, что это за переменная, мы, бывает, что используем такие нейтральные названия, но их стоит избегать. Var1 — это тоже не очень хорошо, потому что что это за первая переменная, что вы в нее положили, очень сложно сказать по ее имени. Лучше использовать говорящие идентификаторы, чтобы было понятно, что именно вы вкладывали в эту переменную, для чего вы ее используете. Если вы хотите записать цвет глаз, назовите переменную eyecolour, это будет уже лучше. Если вы хотите посчитать число ошибок, назовите ее errorcount. Это тоже о чем-то будет вам говорить потом впоследствии. Но у таких имен есть недостаток — их довольно сложно читать, потому что мы не знаем, где граница слов, название довольно длинное, и в коде это будет всё теряться. Поэтому есть несколько вариантов разделителей между словами, которые используются в названиях переменных. Можно использовать нижнее подчеркивание, можно использовать точку, и есть еще такая вещь, которая называется «верблюжий регистр». Например, мы можем написать Distance ToWork, и каждая первая буква каждого нового слова, она будет заглавной, так будет легче вычленить границы слов. Если вы используете какой-то стиль названий переменных, лучше этого стиля придерживаться. Вообще, стиль оформления кода — это очень важная вещь, потому что она облегчает людям чтение вашего кода и облегчает вам работу с ним впоследствии. Лучше придерживаться единого стиля не только для наименования переменных. Лучше писать комментарии как-нибудь единообразно. Хорошо, если в коде все отступы одинаковой ширины или, по крайней мере, логичным образом расположены. Это довольно хорошо умеет делать сама RStudio. Вы когда разбиваете код на несколько строк, она автоматически делает отступы логичными, так, что код располагается лесенкой, и вам его легче читать. Мы еще увидим примеры длинных инструкций, которые разбиты на строки, в следующих видео. Наконец, очень важная вещь — пробелы. На них обычно никто не обращает внимания, но, поверьте мне, гораздо легче читать код, когда вокруг знаков препинания, вокруг математических операторов стоят пробелы в нужных местах, потому что такие вещи, эти сами операторы становятся гораздо более заметными, если окружены пробелами. Есть несколько примеров кодексов стилевых. В разных местах в Интернете можно найти, есть какой-то очень большой пример стиля Google. Но он, правда, длинный, его долго читать. Я вам рекомендую почитать вот этот вот источник. Это сайт книги Хедли Викхема «Advanced R», и там есть буквально одна глава, небольшой фрагмент, посвященный оформлению кода. У Хедли Викхема очень сжатые и по делу инструкции. И вам не придется соблюдать слишком много правил, и код будет выглядеть хорошо и хорошо читаться. Теперь давайте попробуем воспользоваться переменными. Что нам важно знать в первую очередь? Код — это линейная последовательность действий. В жизни есть много последовательностей действий, которые можно выполнить только в одном порядке. Например, вы сначала должны приготовиться к прыжку, только потом вы прыгнете, и только после этого вы можете приземлиться. Эти действия происходят последовательно. То же самое и в R. Если вы создаете переменную, то использовать вы ее можете только после того, как создали. Вы не можете сначала использовать переменную, а потом ее инициализировать и создать. Как это выглядит? Посмотрите, перед вами на слайде два примера. Код слева вызовет ошибку, потому что мы сначала обращаемся к переменной my_variable, а она еще не создана, она не существует в пространстве имен R, поэтому R нам отвечает: «ошибка, моя переменная не найдена». Действительно, ее еще нет. Только потом мы ее почему-то захотели инициализировать и присвоили ей значение 10. При первом исполнении этот код вызовет ошибку. Если вы второй раз прогоните те же две строки, ошибки не будет, потому что жизнь переменной в памяти R, она начинается в момент инициализации и продолжается до конца сессии. То есть один раз за сессию переменная должна быть инициализирована в начале сессии. Код справа записан более правильно, потому что переменная another_variable, она в начале инициализируется, и только потом мы к ней обращаемся. Старайтесь следить за этим, за тем, чтобы ваш код был организован как линейная последовательность действий. А теперь давайте попробуем использовать переменные в расчетах. Для этого мы решим простую задачу. Перед вами апельсин. Его радиус 4 см и 7 мм, не очень большой апельсин, прямо скажем, почти похож на мандарин, а толщина кожуры — 1 см. Непонятно, чего в этом апельсине больше, самого апельсина или кожуры. Давай попробуем выяснить. Для того чтобы ответить на этот вопрос, нам понадобится знать формулу шара. Чтобы вы не полезли ее искать где-нибудь, я ее вам здесь привела. Кстати, в ней есть число π. Мы используем константу π в вычислениях. Как мы будем решать эту задачу? Наверное, нам стоит начать с того, чтобы создать переменную, в которую мы сохраним радиус всего апельсина. Тогда можно будет ее использовать, чтобы вычислить радиус его внутренней части, она на 1 сантиметр меньше. После этого у нас есть все для того, чтобы посчитать объем апельсина целиком и объем его съедобной части. Объем апельсина целиком мы считаем и создаем переменную whole_orange, «целый апельсин». И считаем по этой формуле. Число π — это константа, которая кодируется двумя буквами, p и i. R — это радиус, который мы создали немножко раньше. В переменной whole_orange будет храниться объем целого апельсина. Чтобы посчитать объем съедобной части, мы используем ту же самую формулу и в ней меняем только один идентификатор, подставляем нужный радиус. Объем съедобной части, edible_flesh, мы можем посмотреть, чему равен. Объем съедобной части — это 212 см³. Чтобы посчитать объем кожуры, нужно из объема целого апельсина вычесть объем съедобной части, и у нас получится объем кожуры. И, оказывается, этот наш апельсин не очень... не весь он съедобен совсем. Только половина его съедобна. Кожура занимает практически столько же, даже немного больше, чем съедобная часть. Вот так вот можно использовать переменные в расчетах, а в следующем видео мы с вами пройдем еще раз код первой части этого модуля, построчно, вместе, в среде R, в интерактивном режиме.