[Играет музыка] DUSTIN TRAN: Привет. Дастин Меня зовут. Так что я буду представлять Анализ данных в R. Просто немного о себе. Я в настоящее время аспирант Инженерная и прикладной науки. Я изучаю пересечение машинное обучение и статистика так Анализ данных в R является действительно основополагающее значение для Я делаю на ежедневной основе. И R особенно хорошо для анализа данных потому что это очень хорошо для прототипирования. И, как правило, когда вы делаете какие-то анализа данных, много проблем собираются познавательной. И так вы просто хотите иметь некоторые действительно хороший язык, что это просто хорошо для этого встроенные функции, в отличие для того, чтобы иметь дело с низкими вещей уровня. Таким образом, в самом начале, я просто хочу, ввести то, что R, то почему бы Вы хотите, чтобы использовать его, и затем переходят в какой-то демо, и просто пойти дальше. Так что же такое R? R только язык развился для статистических расчетов и визуализация. Так что же это означает, что это очень хороший язык для любого рода вещи, что имеет дело с неуверенность или визуализации данных. Так что вы должны все это вероятностных распределений. Там собираются быть встроенные функции. Вы также будете иметь отличный построение пакетов. Python является еще одним конкурирующих язык для данных. И еще одна вещь, которую я нахожу, что R гораздо лучше визуализация. Так что вы увидите в демо как а просто очень интуитивным язык , который просто работает очень хорошо. Это также является бесплатным и открытым исходным кодом, а любой другой хороший язык, я думаю. И вот, куча всего Ключевые слова брошены на вас. Это динамический, то есть если у вас есть Конкретный тип присвоен объекту чем просто изменить его на лету. Это ленивый, так что это умно, о как он это делает расчеты. Функциональное значение это может действительно работать основаны от функций, так anything-- любой вид манипуляций вы делать, он будет основан офф функций. Так бинарные операторы, например, просто по своей сути функции. И все, что Вы собираетесь сделать, это будет бежать функции самостоятельно. А потом объектно-ориентированный, а также. Так вот сюжет XKCD. Не только потому, что я чувствую, что XKCD имеет фундаментальное значение для любого вида презентации, а потому, что Я чувствую, что это действительно молотки пункт, что много время, когда вы делаете какие-то данные анализ, проблема заключается не в так как быстро он работает, но как долго это будет вас программировать задачи. Так вот, это просто анализируя ли Стратегия или б является более эффективным. Это будет то, что вы будем иметь дело много с в Сортировать низкоуровневые языки где вы имеете дело с SEG неисправностей, выделение памяти, инициализация, даже делая встроенные функции. И этот материал все обрабатывается очень, очень элегантно в R. Так что просто забить этот Дело, самое узкое место будет познавательным. Так анализ данных очень сложная проблема. Если вы делаете машинное обучение, или вы делать просто какое-то Основная разведка данных Вы не хотите, чтобы взять документ а затем скомпилировать то, что каждый раз, когда вы хочу посмотреть, что колонна выглядит, какие именно записи в матрице выглядит. Таким образом, вы просто хотите иметь некоторые действительно приятный интерфейс Вы можете запустить простую функцию что индексы к тому, что Вы хотели бы и просто запустить его оттуда. И вы должны домен конкретные языки для этого. И R действительно поможет вам определить Проблема и решить эту проблему таким образом. Так вот график, показывающий программирования Популярность R, как это пошло с течением времени. Итак, как вы видите, как 2013 или так что просто взорвали чрезвычайно. И это было только из-за этого Огромный тенденция в индустрии высоких технологий о больших данных. Кроме того, не только технология промышленность, но на самом деле Любая отрасль that--, потому что много отраслей являются своего рода основой для пытаются решить эти проблемы. И, как правило, вы можете иметь некоторые хорошие способ измерения этих проблем или даже определяя их или их решения, используя данные. Так что я думаю, сейчас R является 11- самый популярный язык на Tiobe и это растет с тех пор. Так вот некоторые более особенности R. Он имеет Огромное количество пакетов и для всех этих различных вещей. Так в любое время у вас есть определенная проблема, большинство Время R будет иметь что функция для вас. Так ли вы хотите, чтобы построить какое-либо машины Алгоритм обучения называется Случайные Лес или деревья решений, или даже пытаются взять среднее функция или какой-либо из этого материала, R будет иметь это. И если вы делаете вы заботитесь о оптимизация, одна вещь, которая общая является то, что после того как вы сделали прототипы какая-то языке высокого уровня, вы будете бросать, что in-- Вы просто порт, который более в какой-то язык низкого уровня. То, что хорошо о R является то, что, как только вы сделано прототипов, вы можете запустить C ++, или Fortran, или любой из них нижние уровня непосредственно в R. Так вот один действительно круто особенностью R, Если вы действительно заботитесь о Дело в оптимизации. И это тоже очень хорошо для веб-визуализации. Так D3.js, например, Я думаю, еще один семинар что мы представили сегодня. И это действительно удивительным для делать интерактивные визуализации. И D3.js предполагает, что у вас есть своего рода данных, которые будут нанесены и R является отличным способом, чтобы быть способным делать Анализ данных, прежде чем экспортировать его к D3.js или даже просто работать D3.js команд в самой R, а также все эти другие библиотеки, а также. Так что просто внедрение что R и почему его можно использовать. Так, мы надеемся, у меня убеждены, что вы что-то о просто пытаюсь увидеть, что это такое. Так что я собираюсь идти вперед и пройти через некоторые основы об объектах R и то, что вы действительно можете сделать. Так вот просто куча команд математику. Так говорят you're-- вы хотите построить язык самостоятельно, и вы просто хотите иметь кучу разных инструментов. Любой вид работы вы думаете, вы хочу в значительной степени будет в R. Так вот 2 плюс 2. Вот 2 раза пи. R имеет кучу встроенных констант что вы будете часто использовать как пи, е. И потом, вот 7 плюс runif, так runif 1. Это функция, которая генерирует одно случайное равномерное от 0 до 1. А тут еще от 3 до степени 4. Там это квадратные корни. Там же журнала. Так, авторизуйтесь будет делать базу Экспоненциальный сам по себе. И потом, если вы укажете базу, то Вы можете делать все, что база вы хотите. И тогда, вот некоторые другие команды. Так что вы должны 23 мод 2. Тогда у вас есть остаток. Тогда у вас есть научно обозначения, если вы также хочу сделать просто больше и более сложные вещи. Так вот назначение. Так типичные задания в R выполняется со стрелкой так что это меньше, чем а затем дефис. Так вот, я просто назначения 3 с переменной Вал. И тогда я печатаю Val а затем выводит три. По умолчанию в R переводчика, его будет печатать вещи для вас так что вам не нужно указывать печати Val в любое время вы хотите, чтобы что-то напечатать. Вы можете просто сделать Вэл и то он будет делать это за вас. Кроме того, вы можете использовать равняется технически как оператор присваивания. Есть небольшие тонкости между использованием стрелку оператор и равенства Оператор для выполнения заданий. В основном в соответствии с Конвенцией, все просто использовать оператор стрелки. И вот, я задаю этот косой обозначения называется 1 двоеточие 6. Это генерирует вектор от 1 до 6. И это очень приятно, потому что тогда Вы просто назначить вектор Валь и что работает сама по себе. Так что это уже происходит с single-- очень интуитивный данных Структура просто двойник некоторый тип типа в вектор и который будет собирать все скалярные значения для вас. Таким образом, после перехода от скалярного, вы есть объекты R, и это вектор. Вектор любой вид Сбор и того же типа. Так вот куча векторов. Так что это цифры. Числовой, является способ R способ сказать два раза. И так по умолчанию, любой число будет в два раза. Так что, если у вас есть с 1,1, 3, отрицательной 5,7, C является функцией. Это объединяет все три числа в векторе. И это будет be-- так что если Вы заметили, 3 само по себе, как правило, вы бы предположить, что это, как целое, а потому, что все векторы тот же самый тип, это вектор парном разряде или цифровой в этом случае. RNorm является функцией, которая создает стандартная нормальная variables-- или стандартные нормальные значения. И я, указав две из них. Так что я делаю RNorm 2, назначение, что Разработчики, а затем я печатаю дэвы. Таким образом, эти только два Случайные нормальные значения. А потом целых чисел, если вы Вы заботитесь о целых чисел. Так что это просто о памяти распределение и сохранение объем памяти. Таким образом, вы должны добавить ваши номера по столице Л. В общем, это Исторический обозначения R в для того, что называется длинное целое. Поэтому большую часть времени, вы будете иметь дело с двойниками. И если вы когда-либо будет поздно на оптимизировать свой код, Вы можете просто добавить их в L'лет после или во время него если вы, как вещие о том, что Вы собираетесь сделать эти переменные. Так вот векторный характер. Так, опять же, я объединения три струны на этот раз. Обратите внимание, что двойные струны и одиночные строки же в R. Так что у меня Артур и Марвин и так когда я печатаю это, все они собираемся показать двойными струнами. И если вы также хотите, чтобы включить двойной или одинарной строки в ваших персонажей, то вы можете либо чередовать ваши строки. Так Марвин для Второй элемент, это собирается show-- вас просто двойными струнами а затем одну строку так что это переменного. В противном случае, если вы хотите использовать дважды Строка оператор в двухместном строки когда вы объявив ее, а затем вы просто используете оператор побега. Так что вам обратный слэш двойной строку. И, наконец, мы также есть логические векторы. Так logical-- так верно и FALSE, и они будет все заглавные буквы. А потом, опять же, я объединения их, а затем назначать их BOOLS. Так Bools собирается показать Вы TRUE, FALSE, и TRUE. Так вот векторизация индексации. Таким образом, в начале, я беру function-- это называется sequence-- Последовательность от 2 до 12. И я беру последовательность, 2. Так это будет делать 2, 4, 6, 8, 10 и 12. И потом, я индексирование чтобы получить третий элемент. Таким образом, одна вещь, чтобы иметь в виду, что г индексы, начиная с 1. Так Вальс 3 будет давать Вы Третий элемент. Это своего рода отличается от других языки, в которых он начинается с нуля. Таким образом, в C или C ++, например, вы собирается получить четвертый элемент. А вот вальс от 3 до 5. Таким образом, одна вещь, которая действительно здорово, что вы может генерировать временные переменные внутри а затем просто использовать их на лету. Так вот 3 до 5. Так я генерации вектор 3, 4 и 5, а затем Я индексации, чтобы получить треть, четвертый и пятый элементы. Итак, подобным образом, вы можете Аннотация просто сделать любой вид вектора Это дает вам индексацию. Так вот вальс, а затем первый, третий, шестой и элементы. И потом, если вы хотите сделать дополнение, так что вы просто сделать минус после этого и что будет дать вам все, что не первый, третий, шестой и элемент. Таким образом, это будет 4, 8 и 10. И если вы хотите получить даже более продвинутые, Вы можете объединить логические векторы. Так этот показатель будет давать вам это булева вектора длины 6. Так представитель TRUE, запятая 3. Это будет повторять ИСТИНА три раза. Так что это даст вам вектор TRUE, TRUE, TRUE. представитель FALSE 4-- это происходит, чтобы дать вам вектор FALSE, FALSE, FALSE, FALSE. И тогда с будет объединять эти два Логические вместе. Таким образом, вы собираетесь получить три Истины, а затем четыре FALSEs. Так что, когда вы форумов вальс, вы собирается получить TRUE, TRUE, TRUE. Так вот хочу сказать, да, Я хочу, чтобы эти три элемента. А потом FALSE, FALSE, ЛОЖЬ, ЛОЖЬ собирается чтобы сказать нет, я не хочу, чтобы эти элементы так что не собирается их вернуть. И я думаю, есть на самом деле опечатка здесь потому что это говорит повторите TRUE, 3 и повторять лживые 4, и технически, вам только шесть элементов, так повторять лживые, она должна быть повтор FALSE 3. Я думаю, что R также достаточно такой шикарный что если вы просто указываете 4 здесь, то Это не будет даже без ошибок. Это будет просто дать вам эту величину. Так это будет просто игнорировать, что в четвертом ЛОЖЬ. Так вот векторизация назначение. Так set.seed-- это только устанавливает семена псевдослучайных чисел. Так я устанавливаю семян с 42, это означает, что, если я могу генерировать три случайных нормально значения, а затем, если вас запустить set.seed по своему усмотрению компьютер, используя тот же значение 42, то вы также получаете Те же три случайные нормалей. Так что это очень хорошо воспроизводимости. Обычно, когда вы делаете некоторые Сортировать научного анализа, Вы хотели бы установить семя. Таким образом, другие ученые могут просто воспроизвести точно такой же код, который вы сделано потому, что они имеют точное же случайные величины that-- или случайная значения, которые вы взяли, как хорошо. И так Векторизованных назначение здесь показывает Вальс с 1 по 2. Так что занимает первые два элемента из вальса, а затем присваивает их 0. И потом, вы также можете просто сделать Подобная вещь с переключателей. Так вальс не равна 0-- эту волю дать вам вектор ЛОЖЬ, ЛОЖЬ, ИСТИНА в этом случае. И потом, это будет говорить любой из тех индексов, которые были истинными, то это будет назначить что 5. Так он принимает третий элемент здесь, а затем присваивает его 5. И это очень приятно по сравнению с низкоуровневых языках где вы должны использовать для петель сделать все это векторизованного вещи потому что это просто очень интуитивным и это единственный один вкладыш. И то, что является большим о векторизация обозначения в том, что в R, это своего рода встроены таким образом, что они почти так же быстро, как делать на языке низкого уровня, как в отличие от решений для петли в R , а затем с его делать Сам динамический индексации. И это будет медленнее, чем делать Этот вид векторизованного вещи где он может сделать это параллельно, где он делает это в заправке в принципе. Так вот векторизуется операций. Так я генерации значения 1 до 3, назначая что vec1, от 3 до 5, vec2, складывая их вместе. Он добавляет им покомпонентная так это 1 плюс 3, 2 плюс 4, и так далее. vec1 раз vec2. Это умножает два ценностный компонент мудрым. Так что это 1 раз 3, 2 раза 4, а затем 3 раза 5. А потом, так же вы можете также сделать comparisons-- логическое сравнение. Так что это ЛОЖЬ ЛОЖЬ ИСТИНА в этом так, потому что один не больше, чем 3, 2 не больше, чем 4. Это, я думаю,, другой опечатка, 3 определенно не больше, чем 5. Да. И поэтому вы можете просто сделать все Эти простые операции потому что их в наследство от самих классов. Так что было просто вектор. И это своего рода наиболее фундаментальным R объект, потому что задан вектор, Вы можете построить более сложные объекты. Так вот матрица. Это, по сути абстракция что матрица сама по себе. Таким образом, в этом случае, это три разные векторы, где каждый из колонки, или вы можете рассматривать его как каждого из них ряд. Так что я храню матрицу от 1 до 9, а затем я указанием 3 строк. Так с 1 по 9 даст вам вектор 1, 2, 3, 4, 5, 6, и вплоть до 9. Одна вещь, чтобы иметь в виду, что R сохраняет значения в столбце-майор формате. Итак, другими словами, когда вы видите 1 9, это будет хранить them-- это будет 1, 2, 3 в первом столбце, а затем он будет делать 4, 5, 6 во втором столбце, а затем 7, 8, 9, в третьем столбце. А вот некоторые другие общие функции, которые вы можете использовать. Так тусклый мат, это даст вам размеры матрицы. Это будет возвращать вас вектор размерности. Таким образом, в этом случае, поскольку наша матрица 3 на 3, это будет давать вам цифровая векторная это 3 3. А вот просто показывает умножения матриц. Так обычно, если вы просто делаете asterisk-- так коврик звездочка mat-- это будет покомпонентная работа или то, что называется продукт Адамара. Так это будет делать каждый элемент покомпонентная. Тем не менее, если вы хотите матрица multiplication-- так умножения первый раз строк Первый столбец второй матрицы в и так on-- вы должны использовать этот процент операция. И т мата просто Работа для транспозиции. Так что я говорю, принять транспонирование в матрица, умножить его на матрицу Сам. И тогда это будет вернуться к вам еще 3 на 3 матрицы показа продукт, который вы хотели. И так, чтобы было матрица. Вот то, что называется кадр данных. Кадр данных вы можете думать о качестве матрица, а сама каждый столбец будет другого типа. Так что действительно здорово о данных кадры, что в анализе данных самого, Вы будете иметь все это гетерогенные данные и все это на самом деле грязные вещи, где каждая из колонн сами по себе могут быть различных типов. Так вот я и говорю создать кадр данных, сделать целыми от 1 до 3, а затем также векторный характер. Так что я могу индекс через каждый из этих колонок и тогда я получу сами значения. И вы также можете сделать какой-то операций по фреймов данных. И большую часть времени, когда вы делать анализ данных или какой-то предварительной обработки, вы будете работать с этими структурами данных где каждый столбец будет чтобы быть другого типа. Наконец, так что это в основном только четыре основные объекты в Список Р. будет просто собирать любые другие объекты, которые вы хотите. Так он будет хранить это в одном переменная, которую можно легко получить доступ. Так вот, я беру список. Я говорю вещи равна 3. Так что я буду иметь один элемент в Список, и это называется материал, и это будет иметь значение 3. Я могу также создать матрицу. Так что это от 1 до 4 и конечного подряд равен 2, так что матрица 2 × 2. Кроме того, в списке, и это называется мат. moreStuff, строка символов, и даже один список сам по себе. Так что это список, это 5 и медведя. Так что имеет значение 5 и его имеет символьной строки медведя и это список внутри списка. Таким образом, вы можете иметь это рекурсивные вещей, где у вас есть another-- А введите в пределах типа. Итак, подобным образом, вы можете иметь матрицу в другой матрице и так далее. И список просто хороший способ сбора и агрегирования все эти различные объекты. И, наконец, здесь просто поможет в случае Это было как раз перешли очень быстро. Так в любое время вы запутались о какой-то функции, Вы можете сделать помощь этой функции. Таким образом, вы можете сделать справочную матрицу или вопросительный знак матрица. И помощь и вопросительный знак являются только обсчитывать за то же самое так что они псевдонимы. ЛМ функция, которая просто делает линейная модель. Но если вы просто понятия не имею, как это Работы, вы можете просто сделать помощь лм и это даст вам некоторые Сортировать документации, которая выглядит вроде как Человек страницы в Unix, где у вас есть краткое описание того, что он делает, и то, что ее аргументы, что это возвращается, и всего советов о том, чтобы использовать его, и некоторые примеры. Итак, позвольте мне идти вперед и шоу некоторые демо с помощью Р. OK. Так что я пошел на очень быстро только данные структуры и какой-то op-- некоторые операции. Вот некоторые функции. Так вот я просто хочу, определить функцию. Так я также использую Оператор присваивания здесь, и тогда я говорю, объявить его как функцию. И он принимает значение х. Так что это какое-либо значение вы хотите и я собираюсь вернуться х сам по себе. Так что это функция тождества. И то, что это круто об этом по сравнению с другими языками а другой с низким уровнем языков заключается в том х может быть самой различных типов и она вернет этот тип. Таким образом, вы можете imagine-- так что давайте мне просто запустить это быстро. Извините. Таким образом, одна вещь, которую я должен также упомянуть, является то, что этот редактор я использую называется RStudio. Это то, что называется IDE. И одна вещь, которая очень приятно об этом является то, что она включает в себя множество вещи, которые вы хотите сделать в R само по себе просто очень интуитивно. Так вот пульт переводчика. Итак, подобным образом, вы также можете получить это Консоль сырья просто делать большой буквы И это именно то, То же самое, как консоль. Так что я могу делать документа функция х, х, х. И then--, а затем, что будет прекрасно себя. Так RStudio велик потому что она имеет консоль. Она также имеет документы Вы хотели бы работать на. И тогда она имеет некоторые переменные что вы можете увидеть в окружающей среде. И потом, если у вас есть сделать участки, то вам можно просто видеть его здесь, в отличие от управления все эти различные окна сами по себе. Я на самом деле лично использую Vim, но я чувствую, что RStudio отлично просто для получения хорошей идеей о том, как использовать R. Обычно когда вы пытаетесь узнать некоторые новые задачи, Вы не хотите обрабатывать слишком много вещей сразу. Так R просто very-- RStudio это очень хороший способ обучения R без необходимости иметь дело с все эти другие вещи. Так вот я бегу ID Hello. Это возвращает привет. ID 123. Вот вектор целых чисел. Итак, подобным образом, потому что вы можете принимать какие-либо какую-то ценность, Вы можете сделать возвращение идентификатор х, так что возвращается 1234 и 5. И позвольте мне показать вам, что это действительно целое число. И точно так же, если вы класс ID х, это будет целое число. И потом, вы также можете сравнить два и это правда. Так я проверяю, если идентификатор X равна равна х и уведомление что она дает вам два истины. Так что это не говорит, являются два объекта идентичны, но каждый из записей в векторы совпадают. Вот bounded.compare. Так что это немного сложнее тем, что он имеет, и если условие еще а затем он принимает два Аргументы в то время. Так х любого типа. И я говорю это Второй аргумент. Это может быть что угодно, как хорошо. Но по умолчанию, это займет 5, если вы не укажете что-нибудь. Так вот я хочу сказать, если х больше. Так что, если я не указываю, его говорит, что если х больше, чем 5, потом я собираюсь вернуться TRUE. еще, я собираюсь вернуться FALSE. Итак, позвольте мне идти вперед и определить это. А теперь я собираюсь запустить bounded.compare 3. Так он говорит в 3 меньше, than-- 3 больше, чем 5. Нет, это не так FALSE. И bounded.compare 3, и я собираюсь сравнить его с помощью равняется 2. Так что теперь я говорю да, теперь я хочу, чтобы что-то другое. Так что я собираюсь сказать, вы должны быть 2. Я могу либо делать такого рода обозначения или я говорю равна 2. Это более читабельным в том, что, когда вы Глядя на эти действительно сложные функции, которые взять несколько arguments-- и это может быть десятки oftentimes-- просто говорю, равна 2 является более читаемым для Вы, чтобы потом в будущем Вы будете знать, что вы делаете. Таким образом, в этом случае, я поговорка 3 больше, чем 2. Да это так. И точно так же, я могу просто удалить это и говорят, 3 больше, чем 2 где равна 2. И это тоже правда. Да? АУДИТОРИЯ: Вы выполнение построчно? DUSTIN TRAN: Да, я. Так, что я делаю здесь воспринимает текст document-- и то, что является большим о RStudio в том, что Я могу просто запустить short-- ключевую ярлык. Так что я делаю Control-Enter. И потом, я везу строка в текстовом документе а затем положить в консоли. Так вот я и говорю, bounded.compare и я делаю Control-X. Так что я могу просто запустить здесь. И тогда возьму линии, а затем поместить его здесь. А потом так же, я могу бегут здесь. И тогда это будет просто держать определения линии в консоли, как, что. И если вы также заметите, вьющиеся брекеты там так же, как в синтаксисе C. x-- если если условие также собираетесь использовать скобки, а затем Вы можете использовать в другом месте. Еще один еще, если. Так что это будет х равна равна, например. А потом я собираюсь вернуть что-то здесь. Обратите внимание, что есть два разных вещи, которые здесь происходит. Во-первых, здесь я с указанием вернуться значение ИСТИНА. Здесь я просто говорю х. Так R будет обычно по умолчанию взять последний arguments-- или взять последнюю строку кода, и это будет то, что он вернулся. Так вот, это же вещь, как делать обратный х. И просто чтобы показать вам. И потом, он будет работать именно так. Итак, позвольте мне продолжить с этим. Так еще, если. И в самом деле, я могу вернуться все, что я хотел бы. Так что я даже не придется Обратные Логические все время, Я могу просто вернуть что-то другое. Так что я могу сделать обратный медведя. Так что, если х равен равно, это собирается вернуться медведя. В противном случае, это будет вернуть TRUE. Я также могу сделать вектор или действительно что-нибудь. И обычно в статически типизированных языках, вы должны указать тип здесь. И заметьте, что это может быть просто что-нибудь. И R достаточно умен, что он просто это сделать, и она будет прекрасно работать. Итак, позвольте мне определить это. Unexpected-- эх жаль. Она должна быть фигурная скобка здесь. ОК. Круто. Хорошо. Так что теперь давайте сравним 3 и равна 3. Так оно и должно return-- yeah-- значение медведя. Так что теперь более общий Дело в том, как как насчет других структур данных. Так что вы должны эту функцию. Это будет работать на какой-либо стоимости, как 3 или любую цифровую, Другими словами, в два раза. Но то, что о чем-то, как вектора. Так что же происходит, если вы do-- поэтому я собирается назначить Вал, скажем, от 4 до 6. Так что, если я вернусь это, это является вектором из 4, 5, 6. Теперь давайте посмотрим, что происходит если я bounded.compare Вал. Так что это будет давать вам 15 1251. Итак, другими словами, это говорит если вы посмотрите на этого условия так он говорит х меньше чем или чего-то. Так что это немного в заблуждение, поскольку в настоящее время вы просто не знаете, что происходит. Так что я думаю, одна вещь, которая действительно хорошо о просто пытаюсь отлаживать является то, что вы можете просто сделать Val больше чем и посмотреть, что там происходит. Так val-- по умолчанию 5 так давайте просто Валь больше, чем 5. Так что это вектор ЛОЖЬ ЛОЖЬ ИСТИНА. Так что теперь, когда вы смотрите на это, скажет, если, а затем он собирается дать вам это является вектор ложных ложных TRUE. Поэтому, когда вы проходите это в R, R не имеет ни малейшего представления, что вы делаете. Потому что он ожидает один сингл значение, которое является логическим, а теперь Вы даете ему вектор логических значений. Поэтому по умолчанию R просто хочу сказать, что, черт возьми, Я буду считать, что вы собирается взять первый элемент здесь. Так что я собираюсь say-- я собираюсь предположить, что это неверно. Так что собирается сказать Нет, это не правильно. Кроме того, он собирается быть Val равна равна. Нет, извините 5. И это также будет ложным, а также. Так что скажет нет, Это не правда, а поэтому собирается вернуть эту последнюю. Так это или хорошо или плохо что, в зависимости от того, как вы его просмотра. Потому что, когда вы создания этих функций, Вы на самом деле не знаю, что происходит. Так что иногда вы хотели бы ошибку, или, может быть, вы просто хотите предупреждение. В этом случае, R не делать. Так что это действительно до Вы основаны от того, что Вы думаете, что язык должен делать в этом случае если вы проходите в векторе Booleans когда вы делаете, если условия. Итак, давайте говорить, что у вас оригинал один с тем, если еще возвращает истину, и вы собирается вернуться FALSE. Так один из способов абстрагирования это сказать, что я даже не нужно эту условную вещь. Другое дело, что я могу сделать, это просто возвращение сами значения. Так что, если вы заметили, если вы Do Val больше, чем 5, это собирается вернуться вектор ЛОЖЬ ЛОЖЬ ИСТИНА. Может быть, это то, что вы хочу на bounded.compare. Вы хотите, чтобы вернуться вектор логических значений, где он сравнивает каждое из значений к себе. Таким образом, вы можете просто bounded.compare функция х, равна 5. И тогда вместо того, чтобы делать это, если еще условие, Я просто хочу, чтобы вернуться х больше 5. Так что, если это правда, то это собирается возвращаться TRUE. И потом, если это не так, это собирается вернуться FALSE. И это будет работать для любой из этих структур. Так что я могу bounded.compare с 1 6 или 9 и тогда я буду говорить равна 6, например. И тогда это будет дать вам право Boolean вектор, вы разрабатываете. Так что те просто функции и теперь мне просто показать вам некоторые интерактивные визуальные эффекты. Я не думаю, что я на самом деле есть Wi-Fi здесь, так что позвольте мне идти вперед и пропустить этот я думаю. Но одна вещь, которая круто хотя то, что, если вы просто хотите проверить кучу различные команды данных, есть куча различных наборов данных которые уже предварительно загружаются в R. Таким образом, одна из них называется набор данных ирис. Это одна из наиболее хорошо известных те, в машинном обучении. Вы, как правило, только делать какие-то тестов, чтобы увидеть, если ваш код работает. Так что давайте просто проверить, что радужная оболочка. Так что это дело будет быть кадр данных. И это своего рода долго, потому что Я просто распечатать диафрагмы. Это распечатав всю вещь. Так что есть все эти разные названия. Так диафрагмы коллекция разных цветов. В этом случае, это говорит Вы вид из него, все эти разной ширины и Длины чашелистиков и лепестков. И так нормально, если Вы хотите, чтобы распечатать диафрагмы, Например, вы не хотите, чтобы он делать все это, потому что это может взять на себя Вся ваша консоль. Таким образом, одна вещь, которая действительно приятно, функция глава. Так что, если вы просто делаете голову ирис, это даст вам Первые пять строк, или шесть лет, я думаю. И тогда хорошо, вы можно просто указать здесь. Так 20-- это даст Вы первые 20 строк. И я на самом деле был добр удивлен, что это дал мне шесть, поэтому позвольте мне идти вперед и проверьте iris-- или голову, извините. И вот он даст Вы документация что значение глава делает. Так она возвращает первый или последний из объекта. А потом я собираюсь посмотреть на значения по умолчанию. И тогда он говорит по умолчанию Метод глава х и н равна 6L. Так что это возвращает первые шесть элементов. И точно так же, если вы заметили здесь, я не нужно указывать N равно 6. По умолчанию он использует шесть, я думаю. И потом, если я хочу, чтобы указать уверен, значение, то я могу посмотреть, что хорошо. Так что несколько простых команд и вот еще один это просто-- хорошо, Я can-- это на самом деле немного сложнее, но это будет просто взять класс каждого столбца радужной оболочки данных. Так что это будет показать вам, что каждый из них колонки с точки зрения их типов. Так чашелистник длина цифровой, чашелистник ширина является числовой. Все эти значения являются лишь числовым потому что вы можете сказать по этим данным структурировать эти все собираемся числовой. И колонна Виды будет фактором. Так нормально, можно подумать, что это как строку символов. Но если вы просто делаете irisSpecies, и тогда я буду делать голову 5, и это будет распечатать из первых пяти значений. И обратите внимание на то это уровни. Так что это saying-- это способ R в того, категориальные переменные. Таким образом, вместо того, чтобы просто имея символьных строк, она имеет Настройка уровней какие из этих вещей. Итак, давайте говорить irisSpecies 1. Так что вы хотите сделать здесь я подмножества в этой колонке видов. Так это происходит Колонка вида и затем он индексирует, чтобы получить первый элемент. Так что это должно дать вам setosa. И это также дает вам уровень здесь. Таким образом, вы можете также сравнить это к setosa символов и это не будет правда, потому что один это другого типа, чем другие. Или я предполагаю, что это правда, потому что R умнее, чем это. И он смотрит на это, а затем говорит, может быть, это то, что вы хотите. Так что скажет характер Строка setosa является такой же, как этот. А потом так же, вы можете также просто захватить эти как так далее. Так что это просто какое-то быстрых команд, набора данных. Так вот некоторые исследования данных. Так что это немного больше, участвует в анализе данных. И это берется из некоторых Bootcamp в R для в Беркли. Так библиотека иностранной. Так что я собираюсь загрузить в библиотека, которая называется внешней. Так что это даст мне read.dta поэтому предположим, что у меня есть этот набор данных. Это хранится в настоящее время Рабочий каталог моей консоли. Итак, давайте посмотрим, что рабочий каталог. Итак, вот мой рабочий каталог. И читать точечные данные, это вещь, говорит этот файл находится в папке данных это текущий рабочий каталог. И read.dta это не Команда по умолчанию. Я предполагаю, что я загрузил его в уже. IEI предположил, что я нагружена в уже. Но так read.dta не собирается быть команда по умолчанию. И вот почему вы будете иметь для загрузки в этой библиотеке package-- Этот пакет называется внешней. И если у вас нет Пакет, я думаю, внешняя является одним из встроенных в них. В противном случае, вы можете также сделать install.packages и это будет установить пакет. И это даст вам Р. Э-э, нет. А потом я просто хочу, чтобы остановить Это потому, что я уже есть. Но то, что действительно хорошо о R является то, что управление пакетами Система очень элегантно. Потому что это будет хранить все действительно хорошо для вас. Таким образом, в этом случае, это будет для хранения это, я считаю, эта библиотека здесь. Так в любое время вы хотите установить новые пакеты, это так же просто, как делать install.packages и R обойдется всего пакеты для вас. Таким образом, вы не должны делать что-то в Python, где у вас имеется внешний пакет менеджеры как бумага Anaconda, где вы doing-- установки пакеты вне Python а затем попробуйте запустить их самостоятельно. Так что это действительно хороший способ. И install.packages требуется доступ в Интернет. Она принимает от сервера и хранилище, в котором собирает все пакеты, называется КРАН. И вы можете определить, какой вид зеркала Вы хотите, чтобы загрузить пакеты. Так вот, я беру этот набор данных. Я читаю его при помощи этой функции. Итак, позвольте мне идти вперед и делать это. Итак, давайте предположим, что у вас есть этот набор данных и у вас есть абсолютно Не знаю, что это такое. И это на самом деле происходит до довольно часто в промышленности где вы просто должны это тонны и тонны грязной вещи и они невероятно немеченый. Так вот у меня есть это набор данных, и я не знаю, что это такое, так что я просто показывая, чтобы проверить его. Так что я собираюсь сделать с головой. Так что я проверить первые шесть колонны, что это набор данных. Так что это государство, pres04, а затем Все эти различные рода столбцов. И что интересно, здесь, я думаю, является то, что вам было бы предположить, что это выглядит как своего рода выборов. И я думаю, только из глядя на файл назвать это какой-то коллекции данных о кандидатах или избирателей кто голосовал за конкретных президентов или президента кандидаты для избрания в 2004 году. Так вот значения 1, 2 так один способ хранения кандидаты президент их имена. В этом случае, похоже, они просто целые значения. Так 2004 году он был Буш по сравнению с Керри я верю. А теперь, предположим, что вы просто не знаете, ли 1 соответствует Буша или 2 соответствует Керри или и так далее, и так далее, не так ли? И это, только мне, довольно распространенная проблема. Так что вы можете делать в данном случае? Так давайте проверим все эти другие вещи. состояние, я предполагаю, что это приходит из разных государств. partyid, доход. Давайте посмотрим на partyid. Так, может быть, одна вещь, вы можете сделать это рассмотрим каждый из наблюдений которые имеют partyid республиканского или демократ или что-то. Так что давайте просто посмотрим на то, что partyid есть. Так что я собираюсь взять DAT, а затем я иду сделать это знак доллара оператор, что я сделал ранее и это будет подмножество в этом столбце. А потом я собираюсь возглавить это 20, просто чтобы посмотреть, как это выглядит. Так что это просто куча NAS. Итак, другими словами, у вас есть отсутствуют данные об этих парней. Но вы также заметите, это DAT partyid является фактором так что это дает вам различные категории. Итак, другими словами, partyid может занять Демократ, республиканец, Независимая, или что-то еще. Так что давайте идти вперед и давайте узнать, какие из них is-- О, хорошо. Так что я собираюсь подмножества в partyid, а затем посмотреть на те, которые являются Демократ, например. Это будет давать вам логический, Огромный Boolean истин и FALSEs. А теперь, давайте говорить, что я хочу подмножеству с этими парнями. Так что это собираюсь принять мои DAT и подмножество к какому бы наблюдения есть partyid равных равно демократ. И это довольно долго, потому что есть так многие из них. Так что теперь, я собираюсь возглавить это в 20. И, как вы заметили, принимается равным равных Интересно, что вы already-- вы также включая NAS. Таким образом, в этом случае, вы все равно не можете получить любая информация, потому что теперь у вас есть NAS и вы просто хотите, чтобы увидеть, какие из наблюдение соответствуют демократ а не эти недостающие себя ценит. Так как же избавиться от этих ВПЛ? Так вот я только с помощью клавишу вверх на моем курсора, а затем говорят передвигаться. А потом вот я просто хочу, сказать is.na datpartyid. Так это и и будет принимать два разных булевы векторы и сказать, что это будет ИСТИНА и ЛОЖЬ например. Так что будет делать этот компонент Мудрый. Так вот я и говорю взятие кадр данных, подмножества на те, которые соответствуют демократ, и удалить любой из них, которые не являются NA. Так что это will-- должны дать вам что-то. Давайте посмотрим, is.na. Давайте попробуем is.na datpartyid. И это должно дать you-- sorry-- только логическое вектор. И потом, потому что это так долго, Я собираюсь подмножество до 20. ОК. Так что это должно работать. И на этот раз также будет истин. Ах, так моя ошибка в том, что I'm-- Я использовать C ++ и R взаимозаменяемы, так что я сделать эта ошибка все время. И оператор на самом деле тот, который вы хотите. Вы же не хотите, чтобы использовать два амперсанды, просто один. ОК. Итак, давайте посмотрим. Таким образом, мы subsetted в partyid, где они демократ и они не хватает значений. А теперь давайте посмотрим на какие они голосовали. Так что, похоже, как и большинство из них проголосовали за 1. Так что я собираюсь идти вперед и сказать, что Керри. И точно так же, вы можете также пойти в Республиканский и, надеюсь, это должно дать вам 2. Это просто куча разных колонках. И в самом деле, это 2. Так partyid всех республиканских, большинство из них голосуют за 2. Так что похоже, просто глядя на это, Республиканский будет very-- или partyid будет очень важным фактором в определении какой кандидат они собирается голосовать. И это, очевидно, верно в целом. И это соответствует вашему интуиция, конечно. Так что, похоже, как будто я не хватает времени, чтобы позвольте мне идти вперед и показать несколько быстрых снимков. Так вот то, что это немного Чем сложнее с визуализацией. Таким образом, в этом случае, это очень Простой анализ просто проверка, что Президент '04 есть. Таким образом, в этом случае, допустим, что вы хотел ответить на этот вопрос. Поэтому предположим, что мы хотели знать голосования поведение в 2004 выборов президента и как это зависит от расы. Так что не только вы хотите посмотреть поведение голосования, но вы хотите, чтобы подмножество друг расы и рода резюмировать, что. И можно только сказать, этой комплексной записи что это своего рода получения туманными. Итак, один из более продвинутых R пакеты, которые также вид недавнее называется dplyr. Так что это прямо здесь. И ggg-- ggplot2 просто приятно способ сделать лучше визуализации чем встроенная в одном. Так что я собираюсь загрузить Эти две библиотеки. И потом, я собираюсь пойти вперед и выполните следующую команду. Вы можете рассматривать это как черный ящик. Что происходит, что эту трубу Оператор проходит в этом споре в здесь. Так что я говорю, группу, DAT Гонка, а затем президентом 04. И потом, все эти другие команды фильтруются, а затем подведение итогов где я делаю счетчик и то я в заговоре его здесь. ОК здорово. Так что давайте идти вперед и см, как это выглядит. Так, что здесь происходит, что я просто нанесены каждой из рас, а затем какие они голосовали. И эти два разных значения соответствуют 2 и 1. Если вы хотите быть более элегантный, вы также можете просто указать, что 2 Kerry-- или 2 Буш, а затем 1 Керри. И вы также можете иметь что в свою легенду. И вы также можете разделить эти гистограммы. Потому что одно дело что, если вы заметили, это не очень легко определить какой из этих двух значений больше. Таким образом, одна вещь, которую вы хотели бы сделать, это принять эту синюю область и просто переместить его сюда, чтобы вы Можно сравнить эти два бок о бок. И я думаю, что это то, что я не было времени, чтобы сделать прямо сейчас, но это также очень легко сделать. Вы можете просто посмотреть в в человеко страницы ggplot. Таким образом, вы можете просто ggplot как что и читать в этом справочной странице. Так позвольте мне быстро показать вам некоторые интересные вещи. Давайте идти вперед и идти to-- только Применение машинного обучения. Так что давайте, у нас есть эти три пакеты, так что я собираюсь загрузить их в. Так что это просто выводит некоторые Информация после того как я загружен в вещи. Так что я говорю это read.csv, Этот набор данных, и теперь Я собираюсь идти вперед и смотреть и посмотреть, что внутри этого набора данных. Таким образом, первые 20 наблюдений. Так что я просто X1, X2, и Y. Таким образом, Похоже, кучей этих значений которые, возможно, в пределах от 20 до 80 или около того. А потом так же для X2, а затем Этот Y-видимому, этикетки 0 и 1. Чтобы убедиться в этом, я могу просто делать сводные данные X1. А потом так же для все эти другие столбцы. Так краткое изложение быстрый способ просто показывая вам быстро значения. Эх, жаль. Это надо быть Y. Таким образом, в этом случае, дает квантили, медиана, исчерпан, а также. В этом случае, dataY, вы можете увидеть что это просто будет 0 и 1. Также средняя говорит 0,6, означает лишь то, что оно Похоже, у меня есть еще 1с, чем 0s. Итак, позвольте мне идти вперед и шоу Вы, как это выглядит. Так что я просто хочу, чтобы построить это. Давайте посмотрим, как очистить этот. О OK. ОК. Так что это, как он выглядит. Так что похоже желтых Я указанных 0, а затем красный я указал в виде 1. Так вот, похоже, точки меток и это Похоже, вы просто хотели некоторые Сортировать кластеризации по этому вопросу. И позвольте мне просто идти вперед и шоу вам некоторые из этих встроенных функций. Так вот лм. Так что это просто пытается чтобы соответствовать строку к этому. Так что лучший способ что я могу соответствовать линии таких что он будет лучше разделить Этот вид кластеризации. А в идеале, вы можете просто посмотреть что я просто запустить все эти команды а затем, я собираюсь вперед и добавьте строку. Так это кажется наиболее вероятное предположение. Это занимает лучшее, что сводит к минимуму Ошибка при попытке, чтобы соответствовать этой линии. Очевидно, что это выглядит вроде хорошо, но это не самое лучшее. И линейные модели, в вообще, будет действительно отлично подходит для теории, так и только вид строительных основ машины обучение. Но на практике, вы собираетесь хочу сделать что-то более общее. Таким образом, вы можете просто попробовать запустить то, что называется нейронной сети. Эти вещи большее распространение. И они просто работают фантастически для больших наборов данных. Таким образом, в этом случае, мы только have-- давайте see-- у нас есть nrow. Так nrow просто говорю число строк. Таким образом, в этом случае, я есть 100 наблюдений. Итак, позвольте мне идти вперед и сделать нейронную сеть. Так что это очень приятно потому что я могу только сказать, Nnet а потом я регресс Y. Так Y является то, что колонка. А потом регресс его на две другие переменные. Так что это короче Обозначения X1 и X2. Так что давайте идти вперед и запуска этого. Эх, жаль. Мне нужно, чтобы запустить все это дело. И это только печать обозначения о том, как быстро или не быстро она сходились. Так это выглядит, как это было сходятся. Итак, позвольте мне идти вперед и печати , что это выглядит. См вот картина и здесь Контур показывает, насколько хорошо она подходит. И это просто-- вы можете увидеть это, что это очень, очень приятно. Это может быть даже переобучения, но вы также можете приходится это с другими такие методы, как кросс-проверки. И это также встроены в R. И позвольте мне показать вам, Машина опорных векторов. Это еще один очень распространенный Техника в машинном обучении. Это очень похоже на линейных моделей, а он использует то, что называется метод ядра. И давайте посмотрим, как хорошо, что делает. Таким образом, это одна очень похожа на том а Нейронные сети выполняет, но это гораздо более гладкой. И это базируется из что-- хау SVMs работу. Так что это просто очень краткий обзор некоторых из встроенных функций вы можете сделать а также некоторые из исследования данных. Итак, позвольте мне просто идти вперед и вернуться к слайдам. Так очевидно, что это не очень всеобъемлющий характер. И это на самом деле просто тизер показывая вам, что вы действительно можете сделать в R. Так что если вы просто хотел чтобы узнать больше, здесь куча разных ресурсов. Так что если вы любите учебников или вы просто люблю читать вещи в Интернете, то это фантастический один Хэдли Уикхемом, который также создал все это действительно здорово пакеты. Если вы любите видео, то Berkeley имеет отличную буткемп это several-- это какие-то длинные. И он будет учить вас почти все, что вы хотели бы знать о R. И точно так же, есть Codeacademy и все это другого рода интерактивных веб-сайтов. Они также получают common-- более и более распространенным. Таким образом, это очень похоже на Codeacademy. И, наконец, если вы просто хотите сообщества и помочь, это куча вещи, которые вы можете пойти. Очевидно, что мы до сих пор использовать почтовые рассылки, просто как и почти все другие язык программирования сообщества. И #rstats, это Наше сообщество Twitter. Это на самом деле довольно распространенным явлением. И тогда пользователь! Это просто наша конференция. И тогда, конечно, вы можете использовать все эти другие Q & A вещи, как переполнение стека, Google, а затем GitHub. Поскольку большинство из этих пакетов и много сообщества будет сосредоточена вокруг разработки Код, потому что это с открытым исходным кодом. И это очень-очень хороший на GitHub. И, наконец, вы можете связаться со мной, если вы просто есть какие-либо простых вопросов. Таким образом, вы можете найти меня на Twitter здесь, мой сайт, и только мой адрес электронной почты. Так, мы надеемся, что было something-- только краткий тизер чего R действительно способен. И мы надеемся, Вы просто проверить эти три ссылки и посмотреть, что можно сделать еще больше. И я думаю, что это как раз об этом. Спасибо. [Аплодисменты]