Приступим к нашему первому компьютерному занятию. Запускаем в первый раз R-Studio. И после запуска R-Studio, мы сразу попадаем при первом запуске в консольный режим, в консольный или, по-другому, диалоговый режим работы. В чем его особенность? Его особенность состоит в том, что как только вы набрали команду, она сразу будет исполнена. Ну, например, я могу использовать R как простой калькулятор. Возможно, это не самое лучшее использование R, но тем не менее я могу набрать 5 + 6 и получить ответ 11. Ну, соответственно, я могу выполнять и более сложные вычисления. Могу, например, посчитать факториал числа 10. Ну, вернемся к более сложным задачам. Давайте попробуем создать переменную, в которую поместить число 11. Ну, например, создадим переменную b, в которую поместим число 11. Для этого мы напишем b, вместо равно мы будем использовать такой значок: <- (меньше, стрелочка). Ну и потом число 11, которое мы хотим поместить в переменную b. И после того как мы нажимаем Enter, число 11 поместится в переменную b. Вот здесь вот справа в уголке мы увидим, что, список переменных с их значениями. Вместо стрелочки в виде значка <- можно, в принципе, использовать =, но это считается не таким стильным присваиванием. То есть, в принципе, можно написать d = 99, и это тоже будет верно, R тоже поймет такое присваивание, но стилевой гид Гугла, в частности, рекомендует использовать присваивание из двух значков. Ну, например, потому, что его можно провести в обе стороны. Например, можно написать 5 -> a (5 поместить в другую сторону в переменную а). Соответственно, надо первое, что отметить, когда мы создаем переменные, ну, помимо того, что теперь можно с ними работать, например, можно сейчас набрать a + b и получить, естественно, ответ 16, потому что в b лежит число 11, а в переменной a лежит число 5. Нужно отметить маленький нюанс, что R отличает большие, заглавные и строчные буквы. То есть если я создам переменную A (большое), куда помещу 55, то а (маленькое) и А (большое) — это две разные переменные. Я, например, могу написать: а + А, и результат будет 60, потому что в а (маленьком) лежит число 5, а в А (большом) лежит число 55. Можно создавать переменные не из одной буквы, а длинные, которые, может быть, не так удобно печатать, но зато они более читабельны. То есть вы можете, например, написать: moe_lubimoe_chislo, ну и, скажем, поместить в эту переменную, пусть будет число 12. И здесь сразу следует сказать, что когда вы работаете с функцией, которая имеет какое-то длинное название, типа factorial или вот moe_lubimoe_chislo, тут очень много символов, это очень долго набирать. Имеет смысл помнить, что есть такая полезная кнопка как табуляция. По кнопке Tab мы можем дополнить длинную надпись, если она допускает единственное толкование. Ну, например, если я начну писать moe_, то поскольку сейчас в памяти компьютера на эти четыре символа (moe и нижнее подчеркивание) начинается только объект moe_lubimoe_chislo, то как только я сейчас нажму Tab, я нажимаю одну кнопку Tab, и автоматом компьютер мне дополнит, допишет все до конца. Я могу посмотреть на moe_lubimoe_chislo, оно по-прежнему равно 12-ти. Соответственно, точно так же и с функциями. Если я знаю какую-нибудь функцию, ну, например, facto и могу нажать Tab и посмотреть все функции, которые начинаются на facto. На facto вот в R начинаются три функции: factor, которая создает качественные переменные, factor.scope — это я, честно говоря, даже не знаю, что это такое, ну и factorial — считает факториал числа. Нажимаю Escape, поскольку мне сейчас эти функции не нужны. Помимо обычных чисел R легко работает с большими объемами чисел, ну, в частности с векторами. Я могу, например, задать вектор чисел. Ну пусть, например, вектор w. Не, давайте, пусть будет вектор y. Вектор у. Это будет вектор из нескольких чисел. Вектора начинаются, их описания с буковки c. c, а в скобках через запятую пишутся необходимые числа. Ну, например, будет (3, -2, 5, 6, давайте дальше я напишу загадочное число NA и потом 9). с (3, -2, 5, 6, NA и 9). Могу посмотреть на у, то есть нажимаю у и Enter и вот вижу свой вектор: 3, -2, 5, 6, NA и 9. NA — это такое особое наблюдение, пропущенное наблюдение. В реальных данных, к сожалению, часто встречаются случаи, когда либо респонденты отказываются отвечать на вопросы анкеты, либо по каким-либо другим причинам нет данных. Ну, ну там, скажем, за какой-то год вы не знаете, чему равнялся ВВП, или есть пропущенная какая-то переменная, то, соответственно, вот NA означает, что у вас нет данных. Это сокращение от английского not available. И с вектором у можно так же, как и с числом выполнять операции. Ну, например, я могу написать у + 2 и получить вектор у, увеличенный на два. Естественно, там, где не было наблюдений, если к NA прибавить 2, получится NA. Но никакой ошибки при этом компьютер не выдаст. Среди особых объектов помимо NA есть еще такой объект, как «не число». Ну, например, вот 0 поделить 0 — это «не число». Если я напишу 0/0, это NaN (not a number). Но тем не менее компьютер не выдает ошибки, просто предупреждает о результате выполнения операции. Например, я могу поместить результат деления 0 на 0 в переменную t. (t <- 0/0) Ну, вот можно посмотреть на переменную t. t — это not a number. И еще один особый объект, с которым приходится работать — это бесконечность. Иногда процедура оптимизации, там при методе максимального правдоподобия или какие другие, в результате выходят какие-нибудь там, какая-нибудь оценка, равная бесконечности. Этого не стоит пугаться. R умеет работать корректно с таким объектом, как бесконечность. Например, я могу один. Ну, во-первых, как будет бесконечность? Если 1 поделить на 0, то получится Infinity, вот английскими Inf. Соответственно, например, если я 1 поделю на Inf (обратите внимание, Inf надо написать с большой буквы, R отличает строчные и заглавные буквы), если 1 поделить на Inf, будет 0. Если, например, взять арктангенс atan(Inf) арктангенс от Infinity, то получится 1, 57. Может быть, кто-то даже узнает, что 1,57 — это пи пополам. Давайте сравним. Если я пи поделю пополам, я получу 1, 57. То есть компьютер корректно берет арктангенс от бесконечности, и какие-то другие операции с бесконечностью тоже выполнять можно. Соответственно, когда создается вектор, ну, обычно, он либо читается из реальных данных, то есть у вас где-то есть файл, который, там, те люди, которые собирали анкеты, заполнили в каком-нибудь формате его, и вы его читаете в R. Ну, иногда нужно создать вектор руками. Как правило, часто нужны бывают вектора последовательных чисел. Ну, например, если я хочу задать вектор z чисел последовательных от 100 до 200, то я напишу 100:200, нажму Enter и вот могу посмотреть на z. Вот z — это у меня вектор чисел от 100 до 200. Ну и сразу можно сказать, что означают числа сбоку. Числа сбоку — это номер первого элемента. Поскольку z — это вектор из 101-го числа (от ста до двухсот — сто одно число), то поэтому вот 118 — это 19-е число, а 137 — это 38-е число. Ну, пойдем дальше. Если вы ошиблись, например, вы набрали coss(pi) косинус с двумя «s» от пи, то компьютер таки выдаст ошибку, что не может найти функцию косинус. Ну, если вы все-таки наберете косинус правильно, не с двумя «s», а с одним, то никаких проблем не будет. Косинус от пи по-прежнему равен -1. Еще один важный момент, на который часто напарываются новички, а опытные пользователи используют, это то, что R позволяет ввести одну команду в две строчки. Ну, например, если я, допустим, о чем-то задумался, начал вводить косинус пи, да забыл закрыть скобку и нажал Enter, то компьютер понял, что ввод не окончен. То ли я хотел внутри косинуса к пи что-то прибавить, то ли просто скобку закрыл? Но если вы видите, знак треугольничка (приглашение) сменился на плюсик. А раз он, это означает, что компьютер ждет продолжения ввода. Ну, если я обратил на это внимание, если это там ошибка, которую я заметил, или это было сделано сознательно, то я могу закончить просто ввод, добавить скобку, нажать Enter и получить тот же самый -1. Ну, используют это часто, когда у вас большое выражение, там, допустим: 5 + 6 + 7- 9, потом еще решили что-то прибавить, нажали Enter, вот опять приглашение сменилось на плюс. Еще раз, этот плюс не потому, что я прибавляю, а плюс — это в смысле, что ждет еще плюс одну строку, может быть, плюс две. Не в том смысле, что это последний знак строки. Это так случайно совпало сейчас. Ну, соответственно, + 10 + 7. Ну вот прекрасно посчитал: 26. Но очень часто бывает у новичков это, вот это появление этого плюса из-за ошибки. Вы начали писать: cos(pi), потом прибавили sin(, скобку вот не закрыли, появился плюс. И вы просто поняли, ой, да не хочу я продолжать эту строчку. Ну, тогда просто нажимаете Escape, и плюсик сменяется на треугольничек, который говорит, что можно вводить команду заново с нуля. И, соответственно, на этом наше короткое введение в консольный решим закончится, а дальше мы поговорим о режиме написания скрипта, с которым нам приходится работать основное время.