Коннор Харріс: Проте я думаю деякого захоплюючого відео проводиться за допомогою професійного консультування який використовує R багато у своїй роботі. Оповідач: Що за статистикою, аналітика, і візуалізація яскраві вчені даних, що сьогоднішні і бізнес-лідери покладаються на зробити потужні рішення? Ви не можете завжди бачити його. Але вона є. Це називається R, з відкритим вихідним кодом r-- Статистична мова програмування що експерти даних світові за використанням для всього від широких соціальних карт і маркетингові тенденції онлайн до розробки фінансових і клімат Моделі, які допомагають керувати наших економік і спільноти. Але те, що саме R і де R почати? Ну спочатку, R почав тут з двома професорами хто хотів краще статистичний Платформа для своїх студентів. Таким чином, вони створили один моделюється після статистичної мові С. Вони, поряд з багатьма іншими, продовжував працювати і за допомогою R, створення інструментів для R і знайти нові програми для R щодня. Завдяки цьому є по всьому світу зусилля спільноти, R росла з тисячами створених користувачем бібліотек, побудованих для розширення функціональності і R Натовп-джерел перевірки якості та підтримка найбільш визнаних лідерами галузі в кожній області, що використовує Р. І це здорово, тому що R є кращим, що він робить. Швидко Багатообіцяюча експертів і легко інтерпретувати, взаємодіяти, і візуалізувати дані, що показують, їх швидко зростаюче співтовариство користувачів по всьому світу R і подивитися, як з відкритим вихідним кодом R продовжує формувати майбутнє статистичний аналіз і наука даних. Коннор Харріс: ОК, відмінно. Так моєї презентації буде трохи більш тверезим. Це не буде включати так багато захоплюючою фонової музики. Але, як ви бачили у відео, R є свого роду мови загального призначення програми. Але вона була створена в основному для статистичної роботи. Так він призначений для статистики, для аналізу даних, для аналізу даних. І таким чином Ви можете бачити це у великій кількості вибір дизайну, що творці R зробив. Це значною мірою призначені для, люди, які не Експерти в області програмування, які просто піднімаючи програмування на стороні, так що вони можуть зробити свою роботу в соціальній науці або в статистиці або щось. Вона має багато дуже важливі відмінності від С. Але синтаксис і парадигми що він використовує в цілому те ж саме. І ви повинні відчувати себе досить як вдома прямо з місця в кар'єр. Це імперативний мову. Не турбуйтеся надто багато про те, що якщо ви не знаєте, термін. Але є відмінність між імперативним, декларативний, і функціональний. Імператив просто означає, що ви зробити заяви, які в основному команди. І тоді інтерпретатор або Комп'ютер слід їх по одному. Це слабо набрали, є немає опису типу в R. А потім лінії між різними типами трохи більш вільно, ніж вони знаходяться в C, наприклад. І, як я сказав, що є дуже широкі можливості для побудови графіків, в статистичних аналіз, для видобутку даних. Вони обидва вбудовані в мову, і, як сказав відео, тисячі бібліотек сторонніх виробників, Ви можете завантажити і використовувати безкоштовно з дуже сипучих ліцензійних умов. Таким чином, загалом, я рекомендую що ви дивитеся на цих двох книг якщо ви збираєтеся працювати на Р. One з них є офіційним R початківців направляти. Це підтримується Основні розробники R. Ви можете завантажити його знову, без зарядки і юридично на цим посиланням там. Всі ці слайди збирається йти на Інтернет, на сайті CS50 після цього робиться. Так що не треба копіювати речі вниз відчайдушно. Іншою є підручник Cosma Шалізі, який є професором статистики в Карнегі-Меллона, називається Advanced Data Аналіз із Початкова точка зору. Це не принципово таке г Книга. Це статистика книга і це книга для аналізу даних. Але це дуже доступним для людей, які є крапельку статистики знань. Я ніколи не брав формального курсу. Я просто знаю, біти і шматки з різних союзних суб'єктів що я пройшла курси в. І я був в змозі зрозуміти це прекрасно. Всі цифри наведені в R. Вони виконані в R і вони також мають лістингів нижче кожної фігури, що вам сказати, як ви робите кожну фігуру з R коду. І це дуже корисно, якщо Ви намагаєтеся наслідувати деякі фігури ви бачите в книзі. І знову завантажити безкоштовно stat.cmu.edu/cshalizi/ жаль, які повинні бути слеш тильди cshalizi. Я простежу, щоб виправити те, що коли офіційні слайди вгору. / ADAfaEPoV який є тільки акронім назви книги. Так взагалі caveats-- R є багато можливостей. Я тільки буде в змозі покрити поверхню багато речей. Крім того, перша частина семінару буде щось з дампа. Я абсолютно шкодую про це. В принципі, я збираюся познайомити вас з великою кількістю речей, з місця в кар'єр, збирається якомога швидше. І тоді ми отримуємо кумедна частина, яка демо, де я можу показати вам все, що ми говорили про на екрані. І ви можете пограти самостійно. Так що буде багато технічні речі кинуті на тут. Не хвилюйтеся про копіювання все, що вниз. Тому що, ви можете отримати всі матеріал на сайті CS50 пізніше. І B, це не так важливо запам'ятати цього від слайдів. Це більш важливо, що ви отримаєте деякі інтуїтивно об'єкт з нею і, що виходить від просто грати навколо. Так навіщо використовувати R? В принципі, якщо у вас є проект, який включає в себе видобуток великих наборів даних, даних візуалізації, ви слід використовувати R. Якщо ви робити складні статистичні аналізи, що буде важко в Excel, Наприклад, було б також good-- також якщо ви робите статистичний Аналіз, який автоматизований. Скажімо, ви підтримання веб-сайту. І ви хочете, щоб прочитати журнал сервера кожен день, і скомпілювати список, як провідних країн, що Ваші користувачі з, деякі зведені статистичні дані про те, як довго вони витрачають на свій веб-сайт або щось. І ви хочете, щоб запустити це кожен день. Тепер, якщо ви робите це в Excel, Ви повинні були б піти в журнал сервера, імпортувати, що в Excel таблиці даних, запустити весь процес аналізу вручну. З R, ви можете просто написати один сценарій. Графік його для запуску щодня від вашої операційної системи. А потім щовечора в 2:00, або коли ви планувати його запустити, це буде виглядати через ваш інтернет-трафік для цього дня. І тоді на наступний день, ви будете Тобто цей блискучий, новий доповідь або щось з усіма Інформація, яку ви просили. Так в основному R для Cisco програмування в порівнянні з аналізом Cisco. Попередній робиться. Давайте в реальних речах. Таким чином, є три реальні типи в мові. Там же числовий тип. Там начебто різниця між цілі і плаваючі точки, але не зовсім. Там це персонаж введіть, яка струни. І є логічне введіть, яка Booleans. І ви можете конвертувати між типами за допомогою цих функцій, як цифрова, як характер, як логічно. Якщо ви зателефонуєте, наприклад, як числовий на рядок, він намагатиметься читати цей рядок як число, так само, що a2i і зсапЕ робити, і C. Якщо Ви називаєте як числовий на істинним чи хибним він буде конвертувати в 1 або 0. Якщо ви зателефонуєте в характері на що-небудь це буде конвертувати, що в Строкове представлення. І тоді є вектори і матриці. Так вектори основному 1 масиви. Вони, що ми називаємо масивів у С. Матриці, 2 одномірні масиви. А потім вище масиви ви можете є 3, 4, 5 або всі розміри числових значень, рядків, логічних значень. У вас також є списки, які свого роду асоціативного масиву. Я отримаю в цьому трохи. Так одна важлива річ, що поїздки людей в R не те, що їсти не реальні чисті атомні, типи. Там немає ніякого фактичного відмінність між число, як числове значення, і список числових значень. Числові значення фактично так само, як вектори довжини 1. І це має ряд важливі наслідки. Один з них, це означає, що ви можете зробити, речі дуже легко, які включають як додати номер вектора. R буде в основному фігура те, що Ви маєте на увазі. І я повернуся до цього в секунду. Це також означає, що немає ніякого способу для типу checker-- до такої міри, що щось подібне існує в r-- сказати коли ви пройшли в одному значенні коли він очікує масив або навпаки. А що може викликати деякі дивним неприємності, які я зіткнувся, коли Я використовував R під час мого річної роботи. І немає масиви змішаного типу. Таким чином, ви не можете мати масив були Перші елементи, я не знаю рядок "Джон" і Другим елементом є число 42. Якщо ви спробуєте це зробити, то ви отримаєте все просто перетворюється в рядок. Отже, ми маємо рядок Джон, рядок 42. Так незвично синтаксичний features-- найбільш з R синтаксис дуже схожий на C. Є кілька важливих відмінностей. Введення дуже слабка. Так немає опису змінних. Призначення використовує дивний Оператор помилка менше, ніж дефіса. Коментарі є з хеш-мітки. Я думаю, тепер дні ми називаємо це хештегом хоча це насправді не accurate-- НЕ подвійний слеш. Модульні залишки з %% знаків. Ціле поділ з% /%, що дуже важко читати, коли він проектується на екрані. Ви можете отримати діапазони цілі числа, в товстій кишці. Так 2,5 дасть вам вектор всіх чисел від 2 до 5. Масиви один індекс, який гвинтів багато людей , Якщо вони з більш типові мови програмування, як C, де більшість речі нульовий проіндексовані. Знову ж, це де спадщина R в як мова для що не професійні програмісти входить. Якщо ви соціолог або економіст або щось і ви намагаєтеся використовувати R в основному як доповнення щоб ваш важливіше професійна робота, Ви збираєтеся знайти одна індексації трохи більш природним. Тому що ви почати відлік на 1 в повсякденному житті, а не 0. Для-петлі, це схоже на Еогеасп побудувати в PHP, які ви отримаєте, щоб дізнатися in-- досить скоро. Що за цінність в вектор і то ви можете зробити щось зі значенням. АУДИТОРІЯ: Це придумали в лекції. Коннор Харріс: О, це придумати лекцію, відмінно. Аудиторія: призначення, це Передбачається, вказують справа наліво? Коннор Харріс: Справа наліво, так. Ви можете думати про нього, як про вартість право сунув у змінній зліва. АУДИТОРІЯ: ОК. Коннор Харріс: І, нарешті Синтаксис функції трохи дивно. У вас є ім'я функції Foo, призначений щоб це ключове слово функції, а потім по всіх аргументів, а потім Тіло функції після цього. Знову ці речі можуть здається трохи дивним. Вони стали другою натурою після Ви працюєте з мовою для трохи. Так векторів, так Ви побудувати вектор це ви типу С, який є ключовим словом, то всі номери, які ви хочете або рядки або щось. Аргументи також вектори. Але результуючий масив отримує сплющені. Таким чином, ви не можете мати масиви де це деякі елементи є однієї цифри і деякі елементи самі є масивами. Так що, якщо ви намагаєтеся побудувати Масив були перший елемент 4 а другий елемент це масив 3,5 ви просто отримати масив з трьох елементів, 4,3,5. Вони не можуть бути змішаного типу. Якщо ви спробуєте прочитати або написати поза межами вектора Ви отримаєте це значення називається Н.А. яка виступає за відсутнє значення. І це призначено для як статистиків, працюють з неповними набори даних. Якщо застосувати функцію, яка, як передбачається взяти тільки один номер на масив те, що ви отримаєте, тим Функція буде відображати по масиву. Так що, якщо ваша функція, скажімо, приймає число і повертає його площі. Ви застосовуєте, що в масив 2,3,5 Те, що ви отримаєте це масив 4,9,25. І, що дуже корисно тому що це означає, що ви не потрібно писати для петель для робить дуже прості речі, як застосування функція для всіх членів набору даних. Які, якщо ви працюєте з великим набори даних, що вам потрібно зробити багато. Бінарні функції прикладне запис за записом. Я отримаю на це. Ви можете отримати доступ до їх масивів або вектори в квадратних дужках. Так вектор ім'я квадратні дужки 1 дасть вам перший елемент. Вектор ім'я квадратні дужки 2 дасть вам другий елемент. Ви можете пройти по вектору індексів, і ви отримати назад в основному на південь фактора. Таким чином, ви можете зробити вектор ім'я дужки C, 2,4 і ви отримаєте з вектора, що містить другий і четвертий Елементи масиву. І якщо ви хочете просто короткий огляд статистики вектора, як ймовірних Діапазон, середній, максимальний, що завгодно, Ви можете просто ввести короткий вектор ім'я і отримати це. Це не дуже корисно в програмування, але якщо ви граєте навколо наборів даних, це зручно. Matrices-- основному вище масиви. Вони мають спеціальний синтаксис цієї нотації. Матриця з масивом, який отримує заповнене in-- шкода, матриці з даними, Кількість рядків, число стовпців. Якщо у вас є якісь дані, вона заповнює масив в основному відбувається зверху вниз перший. Потім зліва направо. Так що, як це. І R має вбудований множення матриць, спектральне розкладання, діагоналізації, багато речей. Якщо ви хочете більше мірне масиви, так що 3, 4, 5, або щось розміри можна зробити. Синтаксис масив Dim дорівнює с, то список розмірів. Так що, якщо ви хочете 4 одновимірний масив з розмірами 4, 7, 8, 9, масив, тьмяний дорівнює с (4,7,8,9). Ви отримуєте доступ до окремі значення з кронштейнами Перший запис Другий запис коми. Ви можете отримати весь скибочки з рядків або стовпців. З цього неповного синтаксису це просто номер рядка або стовпця кому запитом число. Так списки є свого роду, пов'язаного масиву. Вони мають свій власний синтаксис тут. Знову не відчайдушно скопіювати все це вниз. Це просто, щоб люди переживає слайдів пізніше Тобто все це в хорошій якості посилання. І це стане дуже природно, як тільки Я насправді пройти через демо. Так перераховує в основному пов'язані масиви. Ви можете отримати доступ до значень з Ім'я списку, знак долара, ключ. Так що, якщо ваш список названий Foo, то ви можете звертатися до нього як що. Ви можете отримати всю пару ключ-значення шляхом передачі на площі індексу кронштейна. Якщо Ви читаєте з неіснуючого Ключ, ви отримаєте нульовий. Це не буде помилок. Справа в тому, R буде робити, багато з нульовою, як це можливо. І це може означати, що, якщо ви без вичікування отримати нульовий з який список читання, ви отримаєте деякі непередбачувані помилки додатково вниз лінія. Це трапилося зі мною мій річна робота, коли я був за допомогою R де я змінив, як якийсь Список був визначений в одному місці але не змінити пізніше на код, який читання значень з нього. І так, що сталося, я був читати нульові значення з цього списку, передаючи їх у функції, і, будучи дуже збентежений коли я отримав всі види Випадкові нескінченності з'являється в цій функції. Тому що, якщо ви застосовуєте певне максимальне або мінімальні функції на нуль, Ви отримаєте нескінченні значення з. Кадри даних, вони підклас списку. Кожне значення являє собою вектор однакової довжини. І вони використовуються для представлення, в основному, таблиці даних. Там же цей синтаксис ініціалізації. Це все, знову ж таки, набагато ясніше, коли ви отримуєте на демо. І хороша річ про кадри даних є те, що вам може дати імена всіх стовпцях та імена для всіх рядків. І так, що робить доступ їх небагато дружелюбніше. Крім того, це, як більшість функцій, які читати дані з електронних таблиць Excel або з текстових файлів, наприклад, читатиме свої дані. Посадять його в свого роду кадру даних. Так functions-- функцій Синтаксис трохи дивно. Знову це ім'я функції, призначати, цю функцію ключове слово, а потім список аргументів. Таким чином, є деякі приємні речі про те, як функції працюють тут. З одного боку, ви можете призначити значення за замовчуванням в деяких аргументів. Таким чином, ви можете сказати, R1 equals-- ви можете сказати Foo є функцією, де R1 дорівнює то за замовчуванням, якщо користувач вказує немає аргументів. В іншому випадку, це все, що він поклав в. І це дуже зручно, бо багато наших функцій часто мають десятки або сотні аргументів. Наприклад ті, для побудови графіків графіки або діаграми розсіювання креслення є аргументи, які контролюють всі з заголовка і осі етикетки з кольором ліній регресії. І так, якщо ви не хочете, щоб люди, сформулюйте кожний один з них сотні аргументів управління кожний аспект сюжет або регрес або будь-який інший, це добре, коли є ці значення за замовчуванням. І тоді ви можете насправді написати, як ви бачили сюди. Або знайти кращий приклад. При виклику функцій ви можете насправді називати їхні імена, використовуючи аргумент. Так ось приклад конструктор матриця. Це приймає три аргументи. Зазвичай у вас є дані, яка представляє собою вектор. Ви повинні N рядок, яка це кількість рядків. Ви повинні N cols-- число стовпців. Справа в тому, якщо ви наберете N ряд дорівнює незалежно і N кол одно що б то ні коли Ви виклику цієї функції, Ви можете фактично відновлювати їх. Таким чином, ви можете помістити N сідловини перший і N рядків секунду, і це не буде мати ніякого значення. Так що це гарна маленька особливість. Хіба імпорт і експорт. Це може бути зроблено, в основному. Є також кошти, щоб виписати довільне R об'єктів в двійковий файл а потім прочитати їх назад пізніше. Що дуже зручно, якщо ви робите велика інтерактивна сесія R і ви повинні зберегти речі дуже швидко. За замовчуванням R має робочий каталог що файли будуть виписані в і читати ще в с. Ви можете бачити, що з getwg, змінити його з setdw. Нічого особливо цікаво тут Так що тепер фактичні статистичні дані stuff-- полілінейное регресії. Так звичайним синтаксисом це трохи складніше. Модель є великий об'єкт в принципі. Він отримує призначений Л.М., що виклик функції. Перший елемент, то у Тільда ​​x1 плюс все. Мій Синтаксис тут трохи заплутаним. Я абсолютно вибачте, це є стандартним способом що комп'ютерні науки книги цього. Але це трохи дивно. Тому в основному, це лм дужки, перший пункт в переменная-- вибачте, залежить змінної x1 Тільда ​​плюс х2 плюс Однак багато незалежні Змінні у вас є. І тоді вони можуть бути або Вектори, все ж довжини. Або вони можуть бути колонки Заголовки в кадрі даних що ви просто вказуєте в Другий аргумент кадр даних. Ви також можете вказати більш складна формула так що вам не доведеться лінійно регрес залежну змінну один, або один вектор на вже існуючій вектора. Ви можете зробити, наприклад, компонент вектора у в квадраті плюс 1 і регрес, що проти увійти в який-небудь інший вектор. Ви можете роздрукувати Анотації модель з назвою цієї команди summary-- тільки короткий дужки модель. Знову щось ще, що я повинен уточнити. Щось ще, що буде виправлено отримати коли слайди вгору в Інтернеті. Якщо ви просто хочете, щоб обчислити простий кореляції Ви можете використовувати кореляції вектор 1 вектор 2 основна функція. Метод за замовчуванням Кореляції Пірсона. Такі стандартними ви можете зробити. Там також Спірмена і Кенделл кореляції які є одними різноманітність Оцінка кореляції порядку. Ну вони не розраховують продукт моменти між самими векторів, але рангу замовлень вектора. Я поясню пізніше. АУДИТОРІЯ: Швидкий питання CONNER Харріс: Звичайно. АУДИТОРІЯ: Отже, коли ви розрахунку З тієї простої кореляції дійсно Ви припускаєте, що є статистичний Значення кореляції? CONNER Харріс: Ви не повинні. ЛМ в основному просто машина. Це займе дві речі і він буде випльовувати Коефіцієнти для кращої підгонки лінії. Він також повідомляє, стандарт Помилки на цих коефіцієнтів. І він скаже вам, як це перехоплення статистично значущим або різниця від 0. Хіба нахил з кращих підходящу лінію статистично відмінний від нуля, і так далі. Так що не припускає нічого, я думаю, краще відповідь на ваше запитання. ДОБРЕ. Plotting-- тому основною причиною ви повинні використовувати R, як полілінейного регресії. В основному кожна мова має деякі засіб для цього. І, чесно кажучи синтаксис R для регресії трохи таємницею. Але побудова, де це дійсно сяє. Функція робочою конячкою є ділянка і це займає два вектори х та у. А потім еліпси виступає за дуже велика кількість додаткових аргументів, які контролювати все, починаючи від назв квітів до різних ліній або різних точках, типу ділянки. Ви можете мати розкид ділянки або ділянки лінії. [Нерозбірливо] 2 вектори однакової довжини. Ви можете передувати це з прикріпіть кадр даних в сценарії. І це дозволить вам використовувати стовпець тільки Заголовки замість окремих векторів. Ви можете додати оптимальне прилягання лінії та локальної регресії кривих на ваш графіці. Ці команди перераховані тут, лінії AB і ліній, за замовчуванням це отримати написано в поп вікнами оскільки він припускає, що Ви використовуєте R в інтерактивному режимі. Якщо ви не ви можете написати два файли, що в будь-якому форматі дійсно хочете. На жаль, у мене є опечатку Я просто зрозумів. Якщо ви хочете, щоб відкрити інший графічний пристрій Ви можете використовувати цю функцію під назвою PNG або JPEG або багато інших форматів. І ви можете написати графіки на будь-яке ім'я файлу, який ви вкажете. Щоб скасувати, що ви повинні use-- Я не пишу це в slide-- але є функція називається DEV точка с, що не приймає аргументів. Тоді є об'єкти для 3D креслення та контуру змові якщо ви хочете, щоб зробити Графіки двох незалежних змінних. Я не буду вдаватися в ці зараз. Є також деякі засоби для анімації ті, як правило підтримуються третіми сторонами. Я зробив анімацію з R графіків, але я не використав ці третя сторона бібліотеки. Так що я не можу підтвердити про те, як вони гарні. Те, що я рекомендую, якщо ви хочете зробити анімацію, використовуючи R що ви можете виписати всі кадри для анімації а потім ви можете використовувати program-- третя сторона типові з них називається FFmpeg або ImageMagick-- зшити всі ваші кадри в одну анімацію. Так час для демонстрації. Так що, якщо ви використовуєте який-небудь Unix, як системи що Linux BSD, але хто використовує BSD. OS X відкрийте вікно терміналу і Type R в командному рядку. Якщо у вас є R студію або і т.п., які також працює. Для користувачів Windows, ви повинні бути в змозі знайти R в меню Пуск. Слід назвати те як R x64 3 Справа все. Відкрийте, що там. Так що тепер дозвольте мені відкрити вікно терміналу. Гаразд, пошук. АУДИТОРІЯ: Команда-космічної CONNER Харріс: Команда-космічної, спасибі. Я зазвичай не використовувати комп'ютери Mac. Термінал, показати нове вікно. Нове вікно налаштування Основний, Р. Таким чином, ви повинні отримати вітальне повідомлення, щось на зразок цього. Так що я за допомогою R в інтерактивному режимі. Ви також можете написати R скрипти звичайно. В основному сценарії виконуються точно таким же чином, як якби ви сиділи за комп'ютером набравши в кожному рядку по одному за раз. Отже, давайте почнемо з створення вектора. Стрілка C 1, 2. 1, 2, 4. Так, звичайно. Я можу зробити розмір шрифту більше. АУДИТОРІЯ: Команда-Плюс CONNER Харріс: Команда-Плюс. Команда-Плюс. Гаразд, як це? Добре? ДОБРЕ. Отже, давайте почнемо з оголосивши список вектор. Зробіть, стрілка, C 1,2,4. Ми можемо побачити. Не турбуйтеся про кронштейні там. У дужки так що якщо ви роздрукувати дуже довгі масиви, ми можемо, де ви знаходитесь. Одним із прикладів може бути, якщо я просто хочу діапазоні від 2 до 200. Якщо я надрукував дуже довго масив, кронштейни просто так я можу тримати трек, який індекс ми на, якщо я шукаю через це візуально. Так чи інакше, у нас є. Так що я сказав раніше, ніж взаємодіяти, що масиви дуже красиво, наприклад, унарні операції, як це. Так що ви думаєте, я буду отримати, якщо я друкую плюс 1? Так. Добре, а тепер я буду робити це відрізняється масив. Скажімо б в 20,40, 80. Так що ж ви думаєте ця команда буде робити? Додати елементи. І так в основному це, що він робить. Так що це досить зручно. Так що я, як про я роблю це. З Тобто, скажімо, в 6 разів з 1 по 10. Так що я хочу, щоб побачити міститься, як ви думаєте? Так що все кратні шести. Тепер, що ви думаєте, станеться, якщо я це зробити? Я зроблю це трохи ясніше, C, C. Так що ж відбувається, чи не так думаю, якби я це зробити? плюс гр. [Нерозбірливо] АУДИТОРІЯ: Або помилка або тільки додає перші три елемента. CONNER Харріс: Не зовсім. Це те, що ми отримали. Що відбувається, є більш короткий Масив, а, отримав циклічне. Таким чином, ми отримали 124, 124, 124. Так. І в принципі, ви можете переглянути це поведінка раніше, плюс 1, як підклас цієї поведінки, де найкоротший масив тільки кількість 1, який є масивом один елемент. Я просто говорю вектор все час замість масиву, тому що це те, що г Документація зазвичай робить. Це вкоренилося зі звичкою. ОК, і тепер у нас є цей масив. Отже, ми маємо цей масив, гр. Ми можемо отримати зведення Статистика по C, зведеної гр. І це приємно. Так що тепер давайте зробимо деякі матричні речі. Скажімо, м являє собою матрицю. Давайте зробимо йому три на три один. Так Nrows дорівнює 3, і Ncols дорівнює 3. І для даних давайте do-- так, що Як ви думаєте, це буде робити? Право, це наступний. Це nrow і ncolumn. Так що я зробив, я маю оголосив трьох по три матриці і я пройшов в масиві дев'яти елементів. Так логарифма все Елементи одного до дев'яти. І всі ці значення заповнюють вгору по array-- вибачте? АУДИТОРІЯ: Це базові 10 журнали? CONNER Харріс: Ні, журнал натуральні логарифми, так підло електронної. Так, якщо ви хочете база 10 журналу, я думаю, ви повинні увійти всі, ділиться на журнал 10. І тому дані з [нерозбірливо] тільки заповнює масиву, так і зверху вниз, потім зліва направо. І якщо ви хочете, щоб зробити деякі інші Масив, скажімо п матриця. Давайте робити, я не знаю, від 2 до 13 років. Або я зроблю щось більш цікаве. Я зроблю 2 до 4. nrow дорівнює, скажімо, 3. Ncol дорівнює 4. п. Таким чином, ми отримали це. А тепер, якщо ми хочемо, щоб помножити них ми хотіли б зробити п відсотків раз відсотків, бо це н. І у нас є твори матриць. За їх речі, ви побачити, як коли я заявив, п, 2 до 4 вектор не отримав поки циклічне наповнив всю п? Якщо ви хочете взяти власне розкладання, це те, що ми можемо зробити дуже легко. Ми можемо зробити власні вектори п. І так це наш перший стикаються зі списком. Так власне п список з двома ключами. Значення, який є цей масив тут. І вектори, які це масив тут. Так що, якщо ви хочете, щоб витягти, говорити, що це третій стовпець з матриці власних векторів, через власні вектори-стовпці векторів. Таким чином, ми можемо зробити VEC власні вектори знак долара н Вектори, кома 3, з [нерозбірливо]. Століття. Хіба що, як ви могли б очікувати. Тоді скажіть п раз відсотків раз VEC. Таким чином, результат тут, безумовно, виглядає як якщо ми посіли третє власне тут, що відповідає третій власний. Це просто помножити все в це власний компонент-мудрий, за власним. І це те, що ми могли б очікувати, тому що це те, що власні значення. Хто-небудь тут не приймати лінійну алгебру? Пару чоловік, ОК. Просто включите свої мізки від небагато. І справді, якщо ми візьмемо власні вектори п долар значення знак 3 рази VEC, а отримати те ж саме. Це відформатований інакше як поспіль вектор замість вектора-стовпця, але велика справа. І тому ті, в основному симпатична речі, які ми можемо зробити з матрицями, продемонстрували списки. Я повинен продемонструвати хороший речі про функції, а також. Отже, давайте say-- [нерозбірливо] Функція, виклик давайте це функ проти функції N N squared-- насправді, це не дійсно кращий. а, б, а квадрат плюс б. Таким чином, одна річ про Функції, знову ж, вони не потрібно явні повернення заяви. Таким чином, ви можете просто-- Останнє твердження оцінюється буде заява, повернувшись, або повертається значення. Таким чином, в цьому випадку, ми тільки оцінки одна заява, прямокутної плюс б. Це буде повернення значення за замовчуванням. Він ніколи не зашкодить, щоб покласти в повертати значення явно, особливо якщо ви маєте справу з Функція дуже складної логіки текти. Але ви не потребуєте в них. Так що тепер ми можемо зробити FUNC 5, 1, і це в основному те, що ви очікували. Щось ще ми можемо зробити, ми можемо насправді Func б дорівнює 1, дорівнює 5. Так що, якщо ми визначаємо, який номер тут, який аргумент йде, який аргумент у функції, ми можемо перевернути навколо ці значення, куди ми хочемо. АУДИТОРІЯ: Є причина, написати його з б дорівнює, а не просто за допомогою цифри і кома? CONNER Харріс: Так, як правило, це зробити, якщо у вас є функції з великою кількістю аргументів. Це може часто бути, як Прапори, ви б тільки хочете використовувати в рідкісних випадках. І таким чином можна only-- вас можете звернутися до конкретних аргументів що ви хочете використовувати значення не за замовчуванням для, і ви не повинні виписати купа прапорів дорівнює брехня за ними. Або я можу написати це знову значення за замовчуванням, як б дорівнює 2. І тоді я міг би зробити ф FUNC, Я зроблю 4, 1 на цей раз. І 17, що квадрат 4 плюс 1, як ви могли б очікувати. Але я міг також просто називаємо це з FUNC 4, і я отримаю 18, бо Я не вказати б. Так б отримує значення за замовчуванням 2. ОК, так що тепер, якщо ви наступних разом з демо, введіть наступний рядок у вашому розпорядженні підкажіть і подивитися, що йде вгору. Насправді, цього не роблять. Введіть цей. Ви повинні отримати щось на зразок цього. Так mtcars є побудований в даних набір для демонстрації Цілі, що приходить with--, що спадає в за умовчанням з вашого дистрибутива р Це збірка статистичних даних з 1 974 випуск журналу Motor Trend в по ряду різних моделей автомобілів. Так що миль на галон, cylinders-- Я забув, що DISP is-- кінських сил. Ймовірно. Якщо ви просто автомобілі Google МТ, то один з перших результатів буде від Офіційний г документація і він буде пояснити всі ці поля даних. Так вага is-- мас є Вага автомобіля в тоннах. Питання сек час чверть милі. Так що тепер ми можемо зробити деякі забавні речі про автомобілі МТ це поле даних. Таким чином, ми можемо зробити щось як імена рядків, Mt автомобілів. І це список всіх рядків в Набір даних, які Імена автомобілів. Ми можемо зробити COLNAMES, Mt автомобілів в цьому. Якщо ви MT автомобілі, суб-числовий індекс, як 2. ми отримуємо другу колонку з це, яке було б циліндри. АУДИТОРІЯ: Що ви робили? CONNER Харріс: Я набрав м автомобілі, кронштейни е, який дав мені другий колонка з МТ автомобілів. Або, якщо ми хочемо рядок, я можу ввести mtcars коми 2, наприклад. Інша раунд 2 кома, як це. І, що йде в рядку. Це ось якраз дає вам стовпець, але колона в якості вектора. Я просто зрозумів, тепер я забув, щоб продемонструвати деякі цікаві речі про вектори що ви можете зробити з індексами. Отже, дозвольте мені зробити це прямо зараз. Так давайте зробимо з gets-- покласти це на pause-- 2 рази з 1 по 10. Так з просто буде вектор 2 по 20. Я можу взяти елементи, такі як це, с2. Я можу передати у векторі як це, дозвольте мені C-- використовувати інше ім'я, ніж з, як VEC гр. В принципі, я роблю це так ви не отримаєте плутати між C як Функція будівництво вектор, а потім з ім'ям змінної. Vec дужки гр 4, 5, 7. Це буде витягти мене четвертий, п'ятий, і сім елементів масиву. Я можу зробити VEC, покласти в негативній Індекс, як негативного 4. Це допоможе мені це з четвертий елемент видаляється. Тоді, якщо я хотів зробити зрізи, Я можу зробити VEC 2 до 6. 2 товстої кишки 6 це просто ще один вектор, який є 2, 3, 4, 5, 6. Випльовує що. Так чи інакше, назад до горе автомобілів. Так давайте зробимо деякі регресії. Скажімо, модель gets-- давайте лінійно regress-- я не знаю. Перш за все, давайте надаємо mtcars, звичайно. Так Модель LM, нехай [нерозбірливо] -х регрес mpg на тильди ваги. І тоді фрейм даних mtcars. Так Резюме модель. ОК, так що це виглядає трохи складніше. Але в принципі, бачачи, як якби ми спробувати виразити миль на галон у вигляді лінійної функції ваги, Потім ми отримали цю лінію тут, який перехоплює на 37.28. 37.28 буде теоретичні милях за галон автомобіля, який важить нулю. А потім за кожен додатковий тонну, ви стукаєте близько п'яти миль на галон від цього. Обидва цих коефіцієнтів ви бачите, стандартні помилки є. І вони дуже статистично значущим. Таким чином, ми можемо бути дуже впевнені в 1 адреса 10 з негативним 10. Таким чином, 1 раз щось негативне 10, що, якщо ви зробите важче автомобіль, вона буде мати гірші миль на галон. Або ми можемо перевірити деякі інші моделі. Як замість регресують це на вазі, давайте регрес його на журнал ваги, Тому що, можливо ефективного ваги на пробігом якось не лінійно. Це дало нам г квадрат 0.7528. Так давайте спробуємо це. На цей раз давайте робити різні змінні, теж. Model2. Так резюме, модель2. Гаразд, так що знову, ми отримав кращі підходять лінію. І це time-- це говорить, в основному, що кожен раз, коли ви збільшити вагу автомобіль з коефіцієнтом е Ви втрачаєте це багато миль на галон. І тому цього разу наша залишкове стандартне помилка it--, що не має значення, насправді. Залишкова стандартна помилка в основному тільки стандартна помилка що ви залишили після вас забрати лінію тренда. І наша R квадрат тут 0.81, який трохи краще, ніж те, що ми мали до 0,52. І ось тепер давайте додамо термін цієї регресії. Отже, давайте регрес миль на галон і на колоді ваг і давайте робити, ● миль, чверть милі час. ОК, він повинен мати the-- все правильно, qsec. Qsec. Actually-- вибачте, що? Дозвольте мені назвати цей-то ще, окрім моделі 2. Дозвольте мені назвати цей model3. І ось тепер ми можемо зробити короткий model3. І так знову, це в основному те, що ви могли б очікувати. Ви позитивно перехоплення. Ефективна збільшення Вага негативний. І ефективна збільшення часу чверть милі є позитивним, але, хоча менше, ніж вага. Тепер інтуїтивно, ви можете зрозуміти це, кажучи думати про спортивних автомобілів. Там дуже швидке прискорення, дуже короткий час чверть милі. Вони також збираються використовувати більше газу, в той час як більш розумні автомобілі збираються мати повільне прискорення, вище рази на чверть милі, і використовувати менше газу ,, так вище миль на галон. Відмінно. І ось тепер прийшов час побудувати щось на зразок цього. Отже, давайте do-- так голі кістки ми можемо зробити plots-- бо я прикріплений цей кадр даних before-- ми можемо тільки зробити сюжети, вага миль на галон. Зробити це трохи більше. Там ми в основному мають Розкид ділянку, але точки є свого роду важко побачити на цьому. Я не пам'ятаю, експромтом, що Синтаксис для зміни ділянку. Тому я думаю, що це буде гарний час, щоб виховувати, є дуже хороший вбудована допомога функція, допомога котирування функціонувати ім'я. Ми привеземо до основному що ви хотіли. Я думаю, що я насправді зробити це тип дорівнює р для точок ділянок. Хіба щось міняти? І ні, не зовсім. Добре. З якоїсь причини, коли я зробив це на моєму власному комп'ютері деякий час назад, всі крапки розсіювання були набагато ясніше. У всякому разі, це розкид вид видно? Там один там. Деякі там, деякі. Ви можете сортувати їх бачити, чи не так? Так що, якщо ми хочемо, щоб додати щонайкраще підходить лінії щоб цю ділянку тут, який трохи голою bones-- дозвольте мені зробити це трохи краще. Головна дорівнює проти ваги. Миль на галон. Знову ж таки, ви можете побачити, наскільки корисним необов'язкові аргументи тут з також не маючи навести в певний порядок з аргументами клавіатури коли у вас є дільниці, бо це займе багато аргументів. Xlab дорівнює вага, вага, тонн. Добре. ОК, так, це пристрій в даний час трохи дратує. Але ви можете бачити роду там, є назва графік на стороні. Сюди there's-- на дні тут є мітки осі. Я не пам'ятаю, експромтом які команди ars-- те, що функції, щоб збільшити розмір цих етикеток і назв, але вони є. І тому, якщо ми хочемо, щоб додати найкраще підходять лінії, ми могли б зробити щось like-- I є синтаксис написано тут. Так що пам'ятайте, ми просто додати модель був миль на галон, вага, mtcars. І тому, якщо я хотів би додати, найкраще відповідність лінія, я міг би зробити, б лінії моделі. І бум, у нас є найкраще відповідність лінії. Це свого роду важко побачити. Я абсолютно жалкую про технологічні труднощі. Але він працює в основному верхній лівий правий нижній. І якщо масштаб були більше, ви могли бачити що перехоплення є те, що ви можете знайти зі зведеної статистики якщо ввести зведений модель. ОК, так що я сподіваюся, що кожен отримує щось сенс того, що R є, те, що це добре для. Ви могли б зробити набагато приємніше, ніж ділянки це на вашому власному часу, якщо вам подобається. Так інтерфейсу зовнішньої функції. Це те, що зазвичай не покриті ввідних лекцій або що-небудь для вступного р. Це не імовірно, що ви збираєтеся її потребує. Тим не менш, я знайшов це корисно в мої власні проекти в минулому. І немає нічого хорошого підручник для нього в Інтернеті. Так що я просто хочу, щоб квапити вас всі через це і тоді ви можете залишити. І тому зовнішня Функція інтерфейс, що Ви можете використовувати, щоб викликати, щоб побачити Функції з Р. Внутрішньо, R побудований на арифметичне С. R знаходиться всього 64-біт з плаваючою точкою арифметика C, в який двічі введіть [нерозбірливо]. І ви, можливо, захочете зробити це для зв'язки причин. З одного боку, R інтерпретується, це НЕ компілюється в машинний код. Таким чином, ви можете переписати Внутрішні петлі в C, а потім отримати Перевага використання Р. подобається це трохи зручніше, ніж C. Він має більш графіків Зручності і ще багато чого. І в той же час можливість отримати Максимальна швидкість з внутрішніх петель, який є, де це дійсно необхідно. Повторне використання існуючих бібліотек C, це також важливо. Якщо у вас є C бібліотеки для, як, Я не знаю перетворення Фур'є, або деякі дуже архей Процедура статистики в астрофізиці високих енергій або щось, я не знаю. Астрофізика високих енергій навіть не думаю, я думаю. Але ви можете зробити це замість того, написати рідний порт R з них. А на the-- і знову, як якби вас шукати в більшості бібліотек замовчуванням R, в на внутрішніх, нутрощі є збираєтеся використовувати зовнішню функцію інтерфейс дуже широко. Вони мають такі речі, як Фур'є перетворює або обчислення кореляції Коефіцієнти написаний на С, і вони будуть просто R обгортки навколо них. Інтерфейс є трохи важко. Я думаю її складність перебільшена в Багато інструкцій ви знайдете. Але, тим не менш, це трохи заплутаною. І я не був в змозі знайти хороший підручник для нього, так що це прямо зараз. Знову ж, це весь відрізок більше для подальшого використання. Не хвилюйтеся про копіювання все вниз прямо зараз. Так наступними інструкціями призначені для Unix-подібних систем, Linux, BSD, OS X. Я не знаю, як це працює на Windows, але, будь ласка, тільки не зробити ваш Остаточний проект на Windows. Ви дійсно не хочете, щоб. Unix набагато краще набір на випадкового програмування. Так, в основному закордонних Функція інтерфейсу. Якщо ви хочете, щоб написати C Функція для використання з R, він повинен вжити всіх аргументи, покажчики. Таким чином, для окремих значень, це означає, що він вказав на значення. Для масивів, це покажчик на перший елемент, який це те, що імена масивів насправді означає. Знову ж таки, це те, що ви повинні мати досить повністю вниз після р встановити п'ять. Імена масивів просто покажчики до першого елемента, Тип з плаваючою крапкою в два рази. І ваша функція повинна повернути недійсними. Єдиний спосіб, яким вона може насправді сказати, що відбулося R є модифікацією пам'яті, R дав до нього через зовнішню функцію Інтерфейс. Так що я написав це Прикладом, це функція, яка обчислює використання Скалярний добуток двох векторів. Це приймає два аргументи, vec1, vec2, які самі вектори, і потім N, який представляє собою Довжина, бо знов, R має вбудований [нерозбірливо], щоб дізнатися, довжина векторів, але з не. У C, вектори довільне роздільниками шматок пам'яті. Таким чином, спосіб можна розрахувати точкові продукти просто встановіть цей параметр з до нуля, а потім перебору від 1 до п зірка, бо п це покажчик на довжину, просто щось додати це вихідний параметр. І це може бути гарна практика якщо ви збираєтеся зробити Цей написати дві окремі функції C. Один з них has-- Один з них просто приймає аргументи і типи що вони зазвичай бути в C. Так воно приймає масив аргументи, покажчики. Але єдиним значенням аргументу, як N, він просто приймає як значень за копії, без покажчиків. І тоді він не [Нерозбірливо] з покажчика. І тоді ви можете мати другий, в основному, Функція обгортка, що в основному обробляє вимоги зовнішньої функції інтерфейс для вас. Як ви назвати це в R Тобто, як тільки у вас є функція, написана на C, Ви TYPE R CMD shlib, R Команда розділюваний бібліотека, Foo точка с, або те, що Ваше ім'я файлу, і ОС оболонка не в R терміналу. І це створить Бібліотека називається Foo точка так. І тоді ви можете завантажити його в наш скрипт або інтерактивно з командним дин точка навантаження. Тоді існує функція в R називається точка с. Це приймає аргументи, які Спочатку ім'я функції в C що ви хочете зателефонувати. І тоді всі параметри для цієї функції, вони повинні бути в правильному порядку. Ви повинні використовувати ці тип Функції примусу у вигляді цілого числа, а двічі, а характер, і, як логічно. А потім, коли він повертає Список, який знову тільки асоціативний масив з Імена параметрів і значення після того, як функція запуску. Таким чином, в цьому випадку, тому що точка Prod має Аргументи vec1, vec2 і Int N, N поза. Для точка С маємо точка Prod, ім'я функції ми називаємо, vec1, vec2, тип примусу. Довжина вектора небудь, Я просто вибрав vec1 довільно. Було б більш надійною, щоб сказати S число довжина хв vec1, довжина vec2. Тоді як два нуля, бо ми насправді не все одно, що необхідно помістити в з параметра, тому що ми встановивши її на нуль в будь-якому випадку. І тоді результати буде великий асоціативний масив з в основному vec1 є те, що, vec2 це що завгодно. Але ми зацікавлені в , Так що ми можемо отримати, що. Це знову ж таки, дуже прикладом іграшка з інтерфейсу зовнішньої функції. Але якщо у вас є, щоб обчислити точку продукти масивних векторів петель, або якщо у вас є, щоб зробити щось ще в циклі, і ви не хочете, щоб покладатися на R, який має трохи накладних витрат вбудований в неї, це може бути корисно. Знову ж таки, це не завжди вступний тема, R. Це не дуже добре документовані. Я просто в тому числі, тому що Я знайшов його корисним в минулому. Так, погані практики. Я згадав, що є цикл у функції. Як правило, ви не повинні, в мову, а не використовувати його. Грунтуючись на тому, як R реалізує ітерації всередині, це може бути повільним. Вони якраз і виглядати непривабливо. R обробляє вектори дуже красиво, так часто вам не потрібно використовувати його. Тоді ви можете, як правило, замінити вектор часто з цими функціями, званих високого Функції порядку, Карта, зменшити, Знайти або фільтр. Я просто дати деякі приклади того, що вони роблять. Карта є висока функція замовлення, тому що він приймає функцію в якості аргументу. Таким чином, ви можете дати йому функцію, Ви можете дати йому масив, і вона буде застосувати функцію до кожного елементу масиву і повернути новий масив. Скорочення, в основному ви даєте це масив, ви даєте йому функція, яка приймає два аргументи. Це буде застосувати функцію-перше, Перший аргумент з деяким значенням стартера. Потім до цього результату в секунду. Потім до цього результату по-третє, Потім до цього результату у четвертому. А потім повернутися, коли він отримує до кінця. Так, наприклад, якщо ви хочете, щоб обчислити суму всіх елементів в масиві, ніж ви могли б назвати зменшити з [нерозбірливо] скоротити доповнення Функція, як FUNC а, б, повернутися плюс б. І потім почати значення 0. І все це, ви можете знайти їх описано в документації R, в будь-якому підручнику з функціональне програмування. Там також цей клас функції, що викликаються застосовувати функції, які я don't-- вони трохи важко пояснити, але якщо ви подивитеся на [нерозбірливо] заброньовано, що я привів на початку, він пояснює їх досить добре його додаток на R програмування. Детальніше про практику, додавання до векторів. Так? Я думаю, що я повинен виправити. У цій першій рядки, VEC стрілка, що стрілка не повинна бути там. Ви можете призначити вектор, знову, взяти її довжину плюс 1 і присвоєння деяку цінність для цього. Це продовжить вектор, або ви можна зробити Століття дорівнює с, VEC новое_значеніе. Знову ж таки, якщо ви використовуєте C з один аргумент у вигляді вектора, в результаті ієрархія отримує сплющені. Таким чином, ви будете просто отримати вектор який продовжено на 1. Ніколи не робіть цього. Причина, чому ви не повинен цього робити це. Коли ви виділити вектор, його дає йому певну ділянку пам'яті. Якщо збільшити, що вектор розмір, вона має перерозподілити вектор десь в іншому місці. І так перерозподіл досить дорого. Я не буду вдаватися в подробиці про те, як розподільники пам'яті реалізовані на рівні операційної системи, але це займає багато часу, знайти нову частину пам'яті. А також, якщо ви Re-виділяють багато-багато прогресивно більше шматки, ви в кінцевому підсумку з чимось під назвою фрагментації пам'яті, де доступна пам'ять розділений на безліч маленьких блоків в розподільники пам'яті точки зору. І це стає все важче і важче знайти пам'яті для інших речей. Таким чином, замість, якщо вам потрібно зробити це, якщо Ви повинні рости вектор з одного кінця до іншого, а не додається до нього постійно, ви повинні попередньо виділити його. Століття стрілка, довжини вектора дорівнює +1000, або щось. І тоді ви можете просто привласнити до значень одного вектора в час після того як ви виділені один раз. Я побіг в це, знову ж, мій річної роботи коли я писав NRA диференціал Рівняння вирішувач. Чи не символічно чисельну. Ідея в тому, що коли у вас є одне значення для вирішення, використовувати, що для обчислення наступний. Так що мій натуральний наївно Нахил повинен був сказати ОК, так що я почну з вектором це істотне значення. Обчислити з цього наступного значенням що йде на мій вектора рішення, і додати, що. Створити щось ще, що додати. Він пішов дуже, дуже повільно. І як тільки я зрозумів, що це і я змінив свою систему від додавання до цього вектору як 10000 до 100000 разів, просто попередньо виділити вектор і просто працює з цим. Я отримав більше, ніж в 1000 разів швидкість вгору. Так що це дуже поширена пастка для R програмування. Якщо вам потрібно побудувати вектор шматок за шматком, попередньо виділити його. Ще одна поширена поїздка up-- це мій останній слайд, що не worry-- є обробка помилок. R, будемо відверті, що не дійсно це дуже добре. Є багато проблеми, які можуть виникати. Наприклад, якщо ви отримуєте масив або вектор з функції що ви очікували одна значення прийшли, або навпаки, і ви проходите, що в функцію, яка Ви писали чекаючи одне значення, що може бути проблемою. Деякі функції повернутися NULL, як зробити, скажімо, читанні з відсутня ключ у списку. Але нуль не подобається C де, якщо ви намагаєтеся прочитати зі старого покажчика, [нерозбірливо] в порожній покажчик, це просто SEG помилки і якщо ви в вашому відладчика говорить вам, де саме ви знаходитеся. Замість цього, NULL буде do-- функції робитиме непередбачувані речі якщо вони руками нуль. Як, якщо ви передали макс нуль, це дасть вам негативну нескінченність. І так, так. І так це трапилося мені якось, коли я був змінив купу полів в моєму списку структуру коли без зміни їх в іншому місці коли я читав від них. А потім я отримав всі види випадкових Результати нескінченність з'являється і я поняття не маю, де вони не прийшли. І, на жаль, є Немає реального суворий режим R де ви можете сказати, якщо щось схоже, що це може бути помилка, просто перестати їсти, так що я може бути дисциплінованими і виправити. Тим не менш, є щось називається зупинка, якщо немає. Це еквівалентно стверджують C, в якщо ви говорили про це. Я не думаю, що стверджувати, С тема лекції, але ваш лідер розділ можливо, пішов на нього. І зупинити, якщо не в основному приймає будь предикат, так що будь-яка заява може бути істинним або хибним. І якщо це брехня, то припиняє свою програму. Це говорить вам саме те, що вам лінію були і які умови не вдалося. І це дуже корисно, наприклад, перевірка розсудливість, функціональні входи. Так що, якщо у вас є функція і ви очікуєте, скажімо, якщо ви повинні дати мені дату, я хочу дати бути тільки вектор довжини 1 і десь між 1 і 31. А якщо ні, я знаю, щось пішло не так. І я хочу зупинятися перед цим має випадковий стук ефектів з кодом що це важче простежити до кінця. Так ось одна з можливих використовувати для зупинки, якщо немає. У всякому разі, добре. Так що це кінець. Спасибі, що прийшли. Я любитель Оцінка на це. Так шкода, якщо вам нудно або плутають або що там у вас. Я із задоволенням відповім на питання по електронній пошті в connorharris@college.harvard.edu~~pobj. Це стосується і всіх дивитися це жити чи пізніше. Крім того, хоча я не ТФ, я теж дуже готові служити неофіційними радник кожного, хто за допомогою R в остаточний проект. Якщо ви хочете, щоб що то просто поговорити з вашим TF а потім написати мені листа, щоб Я знаю, що ви працюєте на і так я можу налаштувати зустріч раз з вами, якщо ви хочете. Отже, ще раз, велике спасибі. Я сподіваюся, що вам сподобалося. АУДИТОРІЯ: [нерозбірливо]. CONNER Харріс: Звичайно. АУДИТОРІЯ: Які з проекту буде студент CS використовувати R для? CONNER Харріс: Так що, якщо ви не робите те, що це чисто в гірничодобувній даних, Наприклад, і багато речей, ви могли б зробити з цим з даними видобуток і машинного навчання. Ви можете використовувати R для компонент чогось. Я вихований, спочатку, приклад від того, якщо ви пишете веб-сайт і ви хочете, щоб запустити автоматичний Статистичний аналіз вашого сервера журнали в певний час кожен день, що може бути щось, що це дуже легко зробити в тільки короткий R-скрипт, який можна запланувати для запуску щоночі, наприклад. І я впевнений, що, якщо є якась причина ви хочу статистики або графічні можливості і є цей пробіг автоматично замість того, щоб взаємодіяти з речами в Excel, наприклад, це те, що Ви можете використовувати R для. Так ще питання, перш ніж я пішов? Немає? Гаразд, добре, знову, спасибі Ви дуже багато для приходити.