CONNOR HARRIS: Wciąż myślę kilka ciekawych wideo produkowane przez profesjonalne doradztwo który wykorzystuje R dużo w jej pracach. Narrator: Co kryje się za statystykami, Analytics i wizualizacje że dzisiejsze najzdolniejszych naukowców danych i liderów biznesu polegać na aby potężne decyzje? Nie zawsze może je zobaczyć. Ale to nie. To się nazywa R, open source r-- Język programowania statystyczna że eksperci danych Świat ponad użytku na wszystko z mapowania szerokiej społecznej i trendy marketingu online w celu rozwijania finansowej i klimat Modele, które pomagają prowadzić nasze gospodarki i społeczności. Ale co to dokładnie jest R i gdzie zacząć R? Cóż pierwotnie, R rozpoczął tu z dwoma profesorami którzy chcieli lepiej statystyczna platforma dla swoich studentów. Więc stworzyli jeden wzór po języku statystycznych S. Oni, wraz z wieloma innymi, utrzymywane do pracy przy użyciu R, tworzenie narzędzi dla R i znalezienie nowe wnioski o R codziennie. Dzięki temu jest na całym świecie wysiłek społeczności, R rósł z tysiącami bibliotek utworzonych przez użytkownika wbudowanych w celu zwiększenia funkcjonalności R i walidacja jakości tłum pozyskiwane i wsparcie z najbardziej uznanych liderów branży w każdej dziedzinie, że wykorzystuje R. Który jest wielki, ponieważ R jest najlepszy w tym co robi. Szybko początkujący ekspertów i łatwo zinterpretować, interakcji z, i wizualizacji danych pokazano ich szybko rosnąca społeczność użytkowników R na całym świecie i zobaczyć, jak open source R nadal kształtować przyszłość statystyczna Analiza i nauka danych. CONNOR HARRIS: OK, świetnie. Więc moim prezentacji będzie nieco bardziej trzeźwy. To nie będzie obejmować, że wiele ekscytująca muzyka w tle. Ale jak widzieliśmy w filmie, R jest rodzajem z języka ogólnego programu celem. Ale to został stworzony głównie dla prac statystycznych. Więc to jest przeznaczone do celów statystycznych, W celu analizy danych do analizy danych. I tak można zobaczyć w wielu wybory projektu, które twórcy R zrobiony. Jest przeznaczony dla dużej mierze, ludzie, którzy nie są Eksperci w programowaniu, którzy są po prostu podniesienie programowania na boku, aby mogli wykonywać swoją pracę w naukach społecznych lub w statystykach lub cokolwiek. Posiada wiele bardzo istotne różnice od C Ale składnia i paradygmaty że używa są ogólnie takie same. I powinien czuć się dość jak w domu tuż nietoperza. Jest to język koniecznością. Nie przejmuj się zbytnio, że jeśli nie znasz termin. Ale jest różnica między imperatywem, deklaratywnej, i funkcjonalne. Imperatyw oznacza po prostu zrobić Oświadczenia, które są w zasadzie poleceń. A potem interpreter lub Komputer następujący sposób je jeden po drugim. Jest słabo wpisane, są Brak deklaracji typu w R. A potem linie różnych typów są nieco bardziej luźne niż są w ° C, na przykład. I jak powiedział, że są bardzo bogate zaplecze do wykresów, na statystyczną Analiza, na eksploracji danych. Są to zarówno wbudowane w język i, jak powiedział wideo, tysiące bibliotek innych firm można pobrać i używać za darmo z bardzo luźne warunków licencji. Tak w ogóle, polecam że patrzysz na tych dwóch książek jeśli masz zamiar pracować na R. One z nich jest oficjalnym R Początkujący użytkownika przewodnik. Jest utrzymywany przez podstawowe deweloperzy R. Możesz pobrać go ponownie, wolne od ładowania i legalnie na tym tam link. Wszystkie te slajdy będą iść się w Internecie, na stronie internetowej CS50 Po wykonaniu tej operacji. Więc nie ma potrzeby, aby skopiować rzeczy w dół gorączkowo. Drugi jest Podręcznik przez Cosma Shalizi, który jest profesorem statystyki na Carnegie Mellon, zwany Advanced Data Analizy z Elementary punktu widzenia. To nie jest książka przede R. To książka statystyki i To książka analiza danych. Ale to jest bardzo łatwo dostępne dla osób, które mają odrobinę statystyki wiedzy. Nigdy nie miały oficjalnego kursu. Wiem tylko kawałki z różnych przedmiotów pokrewnych że wziąłem kursy. A ja byłem w stanie zrozumieć to doskonale. Wszystkie dane są podane w R. Są one wykonane w R i mają też listingów pod każdą postacią, że powiedzieć, jak zrobić każdą postać z kodu R. I to jest bardzo przydatne, jeśli starasz się naśladować niektóre rysunku widać w książce. I pobierz ponownie darmo stat.cmu.edu/cshalizi/ Niestety, które powinny być slash tyldy cshalizi. Dopilnuję, aby to poprawić gdy oficjalne slajdy w górę. / ADAfaEPoV która jest po prostu akronim tytuł książki. Więc ogólnie caveats-- R ma wiele możliwości. Ja tylko będzie w stanie pokryć powierzchnia wiele rzeczy. Również pierwsza część seminarium ma być czymś w rodzaju zrzutu danych. Jestem bardzo przykro z tego powodu. Zasadniczo, mam zamiar wprowadzenie do wielu rzeczy tuż nietoperza, będzie jak najszybciej. A następnie dostać się do się zabawa, która jest demo, gdzie mogę pokazać ci wszystko że rozmawialiśmy o na ekranie. I można bawić się na własną rękę. Więc nie będzie dużo rzeczy techniczne rzucone na tutaj. Nie martw się o kopiowanie wszystko w dół. Ponieważ można uzyskać wszystkie Rzeczy na stronie CS50 później. I B, to naprawdę nie jest takie ważne zapamiętać to ze zjeżdżalniami. To ważne, że masz niektóre intuicyjne obiekt z nim i że pochodzi z po prostu grając. Dlaczego więc używać R? Zasadniczo, jeśli masz projekt, który obejmuje wydobycie dużych zbiorów danych, dane wizualizacji, można Należy używać R. Jeśli jesteś robi skomplikowanych analiz statystycznych, które mogłyby być trudne w Excel Na przykład, byłoby również dobre-również jeśli robisz statystyczna Analiza, która jest zautomatyzowana. Powiedzmy, że jesteś utrzymanie strony internetowej. I chcesz przeczytać dziennik serwera na co dzień i skompilować jakieś listy, jak najlepszych krajów, które użytkownicy pochodzą, niektóre statystyki podsumowujące na jak długo spędzają na swojej stronie lub cokolwiek innego. I chcesz uruchomić to na co dzień. Teraz, jeśli robisz to w programie Excel, trzeba by przejść do dziennika serwera importować, że w produkt Excel arkusz danych, prowadzony Wszystkie analizy ręcznie. R, można po prostu napisać jeden skrypt. Zaplanuj go do pracy na co dzień z poziomu systemu operacyjnego. A potem co noc o godzinie 2:00, lub gdy użytkownik zaznaczy go uruchomić, będzie wyglądać przez swoje ruchu internetowego na ten dzień. A potem przez następny dzień, będziesz mają ten błyszczący, nowy raport czy cokolwiek z wszystkie z informacje prosiłeś. Więc w zasadzie R jest dla Cisco programowanie w porównaniu analizy Cisco. Wstępne odbywa. Przejdźmy do rzeczy realnych. Tak więc istnieją trzy prawdziwe typy w języku. Jest typ numeryczny. Jest swego rodzaju różnicy pomiędzy liczby całkowite i punkty szyby, ale nie bardzo. Nie ma postać typ, który jest struny. I jest to logiczne typ, który jest logicznych. I można konwertować między typami korzystania z tych funkcji, jak numeryczny, jako znak, jako logiczne. Jeśli zadzwonisz, na przykład, jak numerycznych na sznurku, będzie starał się przeczytać, że ciąg w postaci liczby, tak samo że a2i i scanf zrobić, i C. Jeśli nazywasz jak numerycznych na prawdziwe lub fałszywe będzie to konwersja do 1 lub 0. Jeśli zadzwonisz jako znak na nic nie będziesz przekonwertować do Ciąg znaków. A potem są wektory i macierze. Więc wektory są w zasadzie 1 tablice jednowymiarowe. Są to, co nazywamy tablic w C. Macierze, 2 tablice jednowymiarowe. I wtedy wyższa tablice wymiarowe zdołasz mają 3, 4, 5 wymiary lub cokolwiek wartości liczbowe, ciągi, wartości logicznej. Masz również list, które są rodzaj tablicy asocjacyjnej. Pójdę do tego trochę. Więc jedna ważna rzecz że wycieczki ludzi się w R jest to, że nie ma prawdziwe, czyste typy atomowe. Nie ma rzeczywista różnica między liczba, jak wartość numeryczną, oraz listę wartości numerycznych. Wartości liczbowe są rzeczywiście same jak wektory długości 1. I to ma szereg ważne konsekwencje. Jeden z nich, oznacza to, że można zrobić rzeczy bardzo łatwo, które dotyczą jak dodać numer telefonu do wektora. R będzie w zasadzie postać się, co masz na myśli. A ja się do tego w drugim. Oznacza to również, że nie ma mowy, do rodzaju checker-- w zakresie że coś takiego istnieje w r-- powiedzieć kiedy już przeszedł w jednej wartości kiedy oczekuje tablicy lub odwrotnie. A to może spowodować, że niektóre dziwne Kłopoty, które wpadłem, gdy I był przy R podczas mojej wakacyjnej pracy. I nie ma żadnych tablic typu mieszanego. Tak więc nie można mieć tablicą były Pierwsze elementy jest, nie wiem, napis "Jan" i Drugim elementem jest liczba 42. Jeśli próbujesz zrobić, to dostaniesz wszystko po prostu zamienione na ciąg. Mamy więc ciąg John, ciąg 42. Tak niezwykłe składniowym features-- najbardziej R składnia jest bardzo podobna do C. Jest kilka istotnych różnic. Wpisanie jest bardzo słaby. Więc nie ma deklaracji zmiennej. Cesja używa dziwne Operator błąd mniej niż myślnikiem. Komentarze są znakiem hash. Myślę, że teraz dzień nazywamy to hashtag choć nie jest to naprawdę nie accurate-- podwójny ukośnik. Pozostałości modułowe są z %% znaków. Podział Integer jest w% /%, co jest bardzo trudne do odczytania, gdy jest przewidywane na ekranie. Możesz otrzymać zakresy całkowitymi z okrężnicy. Więc 2,5 daje wektor wszystkich liczb od 2 do 5. Tablice indeksowane są jednym, które śruby wiele osób nawet jeśli są z więcej Typowe języki programowania, jak C, gdzie większość rzeczy są zero-indeksowane. Ponownie, jest to, gdzie dziedzictwo R w jako język dla jak nie profesjonalnych programistów przychodzi. Jeśli jesteś socjolog lub ekonomista, czy coś i starasz się używać R w zasadzie jako dodatek aby twój ważniejsze pracy zawodowej, masz zamiar znaleźć jeden indeksowania nieco bardziej naturalne. Ponieważ rozpocząć odliczanie na 1 w codziennym życiu, a nie 0. For-pętli, to jest podobne do foreach budowy w PHP, którego dostaniesz się do nauczyć in-- wkrótce. Która jest dla wartości w wektorze i to możesz robić rzeczy, o wartości. PUBLICZNOŚCI: To się wydarzyło w wykładzie. CONNOR HARRIS: Och, to wymyślić wykład, doskonałe. PUBLICZNOŚCI: Przypisanie, jest to powinien wskazywać od prawej do lewej? CONNOR HARRIS: Od prawej do lewej, tak. Możesz myśleć o tym jak wartość na prawo wepchnął do zmiennej po lewej. PUBLICZNOŚCI: OK. CONNOR HARRIS: I w końcu Składnia funkcji jest nieco dziwne. Masz foo nazwa funkcji, przypisany do tej funkcji słów kluczowych, a następnie przez wszystkich argumentów, a następnie Ciało funkcji po tym. Znowu te rzeczy mogą wydawać się nieco dziwne. Będą się drugą naturą po pracy z językiem na trochę. Więc wektorów, sposób skonstruować wektor jest wpiszesz C, co jest kluczowe, a następnie wszystkie numery, które chcesz lub ciągów lub cokolwiek. Argumenty być również wektory. Ale wynikowa tablica zostanie spłaszczona. Tak więc nie można mieć tablice miarę niektóre elementy są pojedyncze numery i niektóre elementy są same tablice. Więc jeśli starają się skonstruować Tablica była pierwszym elementem jest 4 i drugi element jest 3,5 tablica będziesz po prostu tablicy trzech elementów, 4,3,5. Nie mogą one być typu mieszanego. Jeśli próbujesz czytać i pisać poza granice wektora dostaniesz tę wartość o nazwie NA co oznacza braku wartości. I jest przeznaczona do jak statystyków, którzy Pracujemy z niekompletnych zestawów danych. Jeśli stosuje się funkcję, która podobno wziąć tylko jeden numer do tablicy to, co dostaniesz, tym funkcja map na tablicy. Więc jeśli funkcja powiedzmy trwa liczba i zwraca go kwadratowych. Ubiegać się, że do tablicy 2,3,5 Co dostaniesz jest tablica 4,9,25. I to jest bardzo przydatne bo to oznacza, że nie trzeba pisać dla pętli dla robi bardzo prostych rzeczy, takich jak stosowanie funkcja dla wszystkich członków zestawu danych. Które jeśli pracujesz z dużymi zestawy danych, trzeba zrobić wiele. Funkcje binarne są stosowane wpis wpisem. Pójdę do tego. Można uzyskać do nich dostęp z tablicami lub wektory z nawiasach kwadratowych. Wsporniki tak nazwa wektora kwadratowych 1 daje pierwszy element. Nazwa Wektor nawiasy kwadratowe 2 daje drugi element. Możesz przejść na wektorze indeksów i będziesz wrócić na zasadzie czynnik sub. Więc można zrobić wektor wsporniki Nazwa C, 2,4 i dostaniesz się wektor zawierający Drugi i czwarty elementy tablicy. A jeśli chcesz po prostu Szybkie podsumowanie statystyki wektora jak międzykwartylowymi Zakres, średnia, maksymalna, niezależnie, możesz po prostu wpisać podsumowanie Nazwa wektorowych i się o tym przekonać. To naprawdę nie jest przydatne w programowania, ale jeśli grasz wokół zbiorów danych, jest to przydatne. Matrices-- zasadzie wyższe tablice jednowymiarowe. Mają ten specjalnej składni notacji. Matrix z tablicą, która dostaje wypełniony in-- Niestety, macierz z danymi, Liczba wierszy, liczba kolumn. Jeśli masz jakieś dane, to wypełnia tablica w zasadzie idzie od góry do dołu pierwszy. Następnie lewej do prawej. Tak, tak. I R ma wbudowany mnożenia macierzy, dekompozycji spektralnej, diagonalizacja, wiele rzeczy. Jeśli chcesz wyższa wymiarowa Macierze tak 3, 4, 5, lub cokolwiek wymiary można to zrobić. Składnia jest tablica słabe wynosi c, Następnie lista wymiarów. Więc jeśli chcesz 4-wymiarowej tablicy o wymiarach 4, 7, 8, 9, tablica, słabe równa c (4,7,8,9). Masz dostęp do poszczególnych wartości z nawiasami Pierwszy wpis przecinek drugi wpis. Możesz dostać całe plastry wierszy i kolumn. Z tej niekompletnej składni to tylko numer wiersza lub kolumny przecinkami przecinek numer. Więc listy są rodzajem związane tablicy. Mają tu własną składnię. Znowu nie gorączkowo skopiować wszystkie dół. To jest tak, że ludzie przechodzi slajdów później mają to wszystko w miłej odniesienia. A to stanie się bardzo naturalne raz I rzeczywiście chodzić po pokazach. Więc to zawiera wykaz zasadzie związane tablice. Możesz uzyskać dostęp do wartości z nazwa listy, znak dolara, klucz. Więc jeśli lista jest o nazwie foo, następnie można go w ten sposób. Możesz dostać całą parę klucz-wartość przekazując na placu indeksu wspornika. Jeśli czytasz z nieistniejącego klucz, otrzymasz wartość null. Nie będzie błędem. Chodzi o to, R zrobi, jak wiele z wartością null, jak to możliwe. A to może oznaczać, że jeśli jesteś Nie spodziewając się zerowa się jakiejś liście odczytu, dostaniesz niektóre nieprzewidywalne błędy dalej w dół linia. Stało się to dla mnie moja praca wakacyjna, kiedy byłem przy użyciu R gdzie zmieniłem jak pewna Lista została zdefiniowana w jednym miejscu ale nie później zmienić na Kod, który odczytać wartości z niego. A więc co się stało byłem odczyt wartości null z tej listy, przekazując je do funkcji, i jest bardzo zmieszany kiedy mam wszystkie rodzaje losowe nieskończoności pojawiają się w tej funkcji. Bo jeśli się pewna maksymalna lub minimalne funkcje na null, dostaniesz wartości nieskończone się. Ramki danych, są podklasą listy. Każda wartość jest wektorem o tej samej długości. I są one wykorzystywane do prezentacji, w zasadzie, tabele danych. Jest to składnia inicjalizacji. To wszystko znowu znacznie wyraźniejsze, gdy pojawi się demo. I miłą rzeczą ramki danych jest to, że Ciebie można nadać nazwy wszystkich kolumn oraz nazwy wszystkich wierszy. I tak, że umożliwia dostęp je nieco bardziej przyjazny. Również w tym jest to, jak większość funkcji, które czytać dane z arkuszy kalkulacyjnych Excel lub pliki tekstowe, na przykład będą czytać w swoich danych. Wsadzą go do jakieś ramki danych. Więc functions-- funkcji Składnia jest nieco dziwne. Ponownie jest to nazwa funkcji, cedować tę funkcję słów kluczowych, a następnie lista argumentów. Więc jest kilka rzeczy, o tym, jak funkcjonuje tu pracować. Z jednej strony, można rzeczywiście przypisać Wartości domyślne do niektórych argumentów. Więc można powiedzieć, R1 equals-- można powiedzieć foo Jest to funkcja gdzie R1 wynosi co Domyślnie, jeśli użytkownik określa, żadne argumenty. W przeciwnym razie, to co mu się wprowadzić. I to jest bardzo przydatne ponieważ wielu naszych funkcji mają często kilkadziesiąt lub setki argumentów. Na przykład te, do kreślenia wykresy lub kreślenia Wykresy rozrzutu mają argumenty, które kontrolują wszystko z tytułu oraz osi Etykiety do koloru linii regresji. A więc jeśli nie chcesz aby ludzie określić każdy z nich setki argumentów kontrolowanie każdego aspektu działka lub regresji lub cokolwiek, miło jest mieć te wartości domyślne. I wtedy można rzeczywiście Napisać, jak widzieliście tutaj. Albo znaleźć lepszy przykład. Gdy funkcje nazwać można faktycznie Nazywamy je używając nazwy argumentów. Więc tutaj jest przykład konstruktor macierz. To trwa trzy argumenty. Zazwyczaj masz dane, który to wektor. Musisz N wiersz, który jest liczbą rzędów. Musisz N cols-- liczbę kolumn. Rzecz w tym, jeśli wpiszesz N wierszy jest równa co i N kol równa cokolwiek, kiedy dzwonisz z tej funkcji, rzeczywiście można odwrócić je. Dzięki czemu można umieścić N i N col pierwszy wiersz Drugi i będzie żadnej różnicy. Więc to jest ładny mały cecha. Czy import i eksport. Może to być wykonane, w zasadzie. Istnieją także udogodnienia, aby napisać dowolna R obiektów do pliku binarnego a następnie odczytać je ponownie później. Co jest przydatne jeśli robisz duża sesja interaktywna R i trzeba zapisać rzeczy bardzo szybko. Domyślnie R posiada katalog roboczy które pliki są wypisane na i odczytać z powrotem. Możesz zobaczyć, które z getwg, zmienić go setdw. Nic szczególnie interesujące tutaj Więc teraz rzeczywiste statystyki stuff-- regresji multilinear. Więc zwykłej składni jest nieco skomplikowane. Model jest dużym obiektem, w zasadzie. Zostaje przypisany do lm, który jest wywołanie funkcji. Pierwszy element, y Tylda x1 oraz cokolwiek. Moja składnia tutaj jest nieco mylące. Jestem bardzo przykro, to Jest to standardowy sposób że książki informatyka to zrobić. Ale to jest trochę dziwne. Tak w zasadzie, to lm nawiasy, pierwszy element jest zmienna-- przykro, zależne Zmienna x1 oraz x2 tylda oraz jednak wiele niezależnych Zmienne masz. I wtedy mogą one być Wektory, wszystkie tę samą długość. Lub mogą być kolumny Nagłówki w ramce danych że po prostu określić w Drugi argument ramka danych. Można również określić bardziej złożony wzór więc nie musisz się liniowo regresji zmiennej zależnej jeden, lub jeden wektor na istniejącym wcześniej wektora. Można to zrobić, na przykład, składowa wektora y do kwadratu plus 1 i regresu, że przeciwko zaloguj jakiegoś innego wektora. Można drukować streszczenia Model z tego polecenia nazwie summary-- tylko podsumowanie parens modelu. Znowu coś jeszcze powinienem wyjaśnić. Coś innego, że będzie się poprawił kiedy slajdy udać się w internecie. Jeśli chcesz po prostu obliczyć prosta korelacja można użyć korelacji wektor 1 wektor 2 podstawową funkcją. Metoda ta jest domyślnie Korelacji Pearsona. To są standardowe, które możesz zrobić. Istnieje również Spearmana oraz Korelacje Kendell które są niektóre odmiany korelacji rang zamówienie. Dobrze, że nie obliczyć produkt momenty między samych wektorach, ale od rangi zamówień nosiciela. Wytłumaczę to później. PUBLICZNOŚCI: Szybkie pytanie CONNER HARRIS: Jasne. PUBLICZNOŚCI: Więc kiedy jesteś obliczania za proste korelacje zrobić można zakładać, że istnieje statystyczna znaczenie dla korelacji? CONNER HARRIS: Nie musisz. Lm jest w zasadzie tylko maszyna. To zajmie dwie rzeczy i będzie wypluwać Współczynniki dla najlepszego dopasowania linii. Informuje również standardowe błędy na tych współczynników. I to ci powiem, jak jest przechwytują istotna statystycznie lub różnica od 0. Czy nachylenie najlepszy dopasowana linia statystycznie różni się od zera, i tak dalej. Tak zakłada nic, myślę, że jest najlepsza odpowiedź na Twoje pytanie. OK. Plotting-- więc głównym powodem zalecana używać R, jak regresji multilinear. Zasadniczo każdy język ma jakiś obiekt do tego. Szczerze R i składnię dla regresji jest nieco zaawansowanych. Ale kreślenia gdzie to naprawdę błyszczy. Funkcja koń pociągowy jest działka i trwa dwa wektory, X i Y. A potem elipsy oznacza bardzo Duża liczba dodatkowych argumentów, kontrolować wszystko z tytułów do kolorów różnych linii lub różnych punktach, od rodzaju powierzchni. Możesz mieć rozrzut działki lub działek linii. [Niesłyszalne] 2 wektory o tej samej długości. Możesz poprzedzić to z dołączyć ramka danych w skrypcie. A to pozwoli Ci po prostu użyć kolumny nagłówki zamiast osobnych wektorach. Możesz dodać najlepszej zgodności i lokalnym Krzywe regresji na wykresie. Wymienione Te polecenia tutaj, ab linii i linii, domyślnie nich dostać zapisane w oknach pop-up ponieważ zakłada się, że używasz R interaktywnie. Jeśli nie można Napisać dwa pliki, które są w naprawdę dowolnym formacie, który chcesz. Niestety, mam literówkę zdałem sobie sprawę. Jeśli chcesz, aby otworzyć inne urządzenie graficzne można użyć tej funkcji o nazwie PNG lub JPEG lub wiele innych formatów graficznych. A możesz napisać wykresy bez względu na nazwę pliku można określić. Aby anulować, że trzeba use-- Nie piszę tego w slide-- ale jest to funkcja o nazwie dev Kropka się, że nie potrzebuje żadnych argumentów. Następnie są obiekty dla 3D kreślenia i kontur kreślenia jeśli chcesz, aby wykresy dwóch zmiennych niezależnych. Nie będę się do nich już teraz. Istnieją również pewne wyposażenie dla animacji te są zwykle utrzymywane przez osoby trzecie. Zrobiłem animacje z wykresami R, ale nie zostały wykorzystane te osoby trzeciej biblioteki. Tak naprawdę nie mogę zaświadczyć do tego, jak dobre są. Co polecam, jeśli chcesz do animacji z wykorzystaniem R to można napisać wszystko ramki dla animacji a następnie można użyć Trzeci program-- strona te nazywane są typowe FFmpeg lub ImageMagick-- do szycia wszystkich klatek w jednej animacji. Więc czas na demo. Więc jeśli używasz jakiegokolwiek systemu Unix jak która jest Linux BSD, ale kto używa BSD. OS X otworzyć okno terminala i Type R w wierszu polecenia. Jeśli masz R studio lub tym podobne, które również pracuje. Użytkownicy systemu Windows powinni być w stanie znaleźć R w menu Start. Należy nasuwać jak R x64 3 pkt cokolwiek. Otwórz, że tam na górze. Więc teraz niech mi tylko otworzyć okno terminala. Dobrze, wyszukiwania. PUBLICZNOŚCI: Command + Spacja CONNER HARRIS: Command-Space, dziękuję. I zwykle nie używać komputerów Mac. Terminal, pokazać nowe okno. Nowe okno to ustawienia podstawowe, R. Więc powinieneś dostać Komunikat powitalny, coś takiego. Więc używam R interaktywnie. Możesz także napisać R skrypty oczywiście. Zasadniczo skrypty uruchamiane dokładnie taki sam sposób jak jakbyś siedział przy komputerze wpisując w każdym wierszu jedną na raz. Warto więc zacząć od wektora. Strzałka C 1, 2. 1, 2, 4, Dobrze, jasne. Mogę sprawić, że rozmiar czcionki większe. PUBLICZNOŚCI: Command-Plus CONNER HARRIS: Command-Plus. Command-Plus. Wszystko w porządku, jak to jest? Dobry? OK. Więc zacznijmy od deklarowania listę wektorowych. Zrobić, strzałka, C 1,2,4. Możemy zobaczyć. Nie przejmuj się tam wspornika. Wsporniki są więc jeśli wydrukować bardzo długie tablice, możemy tam, gdzie jesteś. Przykładem może być, jeśli po prostu chcę zakresie od 2 do 200. Gdybym drukowane bardzo długa tablica, wsporniki są tylko tak mogę utrzymać których wskaźnik utwór jesteśmy na razie szukam przez to wizualnie. Tak czy inaczej, mamy. Więc powiedziałem wcześniej, że tablice interakcji bardzo ładnie, na przykład, jednoargumentowe operacje tego. Więc co myślisz będę uzyskać, jeśli wpisuję plus 1? Tak. Prawo, teraz zrobię to inna tablica. Powiedzmy b c 20,40, 80. Więc co o tym myślisz polecenie to zrobić? Dodać elementy. I tak w zasadzie to, co robi. Więc to jest bardzo wygodne. Więc jak się to zrobić. do jest, powiedzmy, 6 razy od 1 do 10. Więc to, co chcę, aby zobaczyć zawarte, jak myślisz? Więc wszystkie wielokrotności sześciu. Teraz, co myślisz się stanie, jeśli mogę to zrobić? Zrobię to nieco jaśniejszy, C, C. Więc co się dzieje, prawda myślę, jeśli mogę to zrobić? C Plus. [NIESŁYSZALNY] PUBLICZNOŚCI: albo błąd albo tylko dodaje pierwsze trzy elementy. CONNER HARRIS: Nie całkiem. To jest to, co mamy. Co się dzieje, jest krótszy tablica, a, ale cyklicznie. Więc dostaliśmy 124, 124, 124. Tak. A w zasadzie, można zobaczyć to zachowanie przed, plus 1, jako podklasa tego zachowania, gdzie najkrótszy tablica jest tylko numer 1, która jest tablicą jeden element. Ja po prostu mówiąc wektor wszystkich czas zamiast tablicy, bo to, co r Dokumentacja zwykle. Jest to zakorzenione c nawykiem. OK, a więc teraz mamy taką tablicę. Mamy więc tę tablicę, c. Możemy podsumowanie statystyki dotyczące c, podsumowania c. I to jest miłe. Więc teraz zróbmy kilka rzeczy macierzy. Powiedzmy, że m jest macierzą. Zróbmy mu trzy przez trzy jednym. Tak nrows równe 3, a ncols równa 3. Oraz dla danych niech do-- więc co myślisz to zrobić? Prawda, że ​​to następny. To nrow i ncolumn. Więc co zrobiłem to mam ogłosił trzy na trzy macierzy a ja przeszedł w tablicy dziewięciu elementów. Więc logarytmu wszystko Elementy jeden do dziewięciu. I wszystkie te wartości wypełnić w górę array-- przykro? PUBLICZNOŚCI: To są podstawy 10 dzienników? CONNER HARRIS: Nie, dziennik jest logarytmy naturalne, więc baza e. Tak, jeśli chcesz baza 10 log, myślę, że masz zalogować cokolwiek, podzielona przez dziennik 10. I tak dane w [niesłyszalne] tylko wypełnia tablicę, więc od góry do dołu, Następnie od lewej do prawej. A jeśli chcesz zrobić jakieś inne tablicy, powiedzmy, że n jest macierzą. Zróbmy, nie wiem, od 2 do 13. Albo zrobię coś bardziej interesującego. Zrobię 2 do 4. nrow równa, powiedzmy, 3. Ncol równa 4. n. Więc mamy to. A teraz, jeśli chcemy, aby pomnożyć te, zrobilibyśmy razy n procent procent, bo to n. I mamy produkty macierzy. Przez oni droga, nie widzisz, jak kiedy oświadczył, n, 2 do 4 wektor został cyklicznie, aż to wypełnione wszystkie n? Jeśli chciał wziąć Rozkład wartości własnych, to jest coś, co możemy zrobić bardzo łatwo. Możemy zrobić EIGEN n. A więc jest to nasz pierwszy spotkanie z listy. Więc eigen n jest lista z dwoma kluczami. Wartości, co jest ta tablica tutaj. I wektory, które jest ta tablica tutaj. Więc jeśli chcesz, aby wyodrębnić, powiedzmy, to trzecia kolumna z matrycy wektory, ponieważ Kolumna na wektory własne są wektory. Tak więc możemy zrobić vec EIGEN n znak dolara wektory, przecinek 3, z [niesłyszalne]. Vec. Czy to, jak można się spodziewać. Potem mówią n razy razy procent vec. Tak wynika tutaj z pewnością wygląda jeśli zajął trzecie wartość własną tutaj, co odpowiada trzeci wektor własny. To po prostu pomnożyć wszystko ten wektor własny, komponent, mądry, przez wartości własnej. A to, co by się spodziewać, bo to właśnie wartości własne są. Czy ktoś tutaj nie podjęte algebry liniowej? Kilka osób, OK. Wystarczy włączyć swoje mózgi się na trochę. I rzeczywiście, jeśli wziąć EIGEN n dolarów wartości 3 razy Vec znak, dobrze się to samo. To sformatowane inaczej w rzędzie Wektor zamiast wektora kolumny ale nic wielkiego. I tak te są zasadniczo takie miłe rzeczy, które możemy zrobić z macierzami, wykazać listy. Powinien wykazać ładne rzeczy na temat funkcji, jak również. Więc say-- [niesłyszalne] Funkcja, call Miejmy to func przed funkcji n n squared-- w rzeczywistości, to naprawdę nie jest najlepszy. a, b, kwadratowej oraz b. Więc jedna rzecz, o Funkcje, ponownie, jest to, że nie potrzebują wyraźnych oświadczeń powrotne. Więc można just-- Ostatnie stwierdzenie oceniane oświadczenie będzie zwracana, lub wartość zwracana. Więc w tym przypadku, mamy tylko oceny jeden rachunek, kwadrat oraz b. To będzie wartość domyślna powrotu. To nie boli, aby umieścić w powrót wartości wyraźnie, zwłaszcza, jeśli masz do czynienia z Funkcja bardzo skomplikowanej logiki pływ. Ale ich nie potrzebują. Więc teraz możemy zrobić func 5, 1, oraz to jest to czego można się spodziewać. Coś jeszcze można zrobić, możemy faktycznie funkcjono b jest równa 1, A równa się 5. Jeśli więc określić, który numer tutaj, która argumentuje, do której argumentem w funkcji, można obrócić dookoła wartości te gdziekolwiek chcemy. PUBLICZNOŚCI: Czy istnieje powód napisać go z b równa, a nie tylko za pomocą numery i przecinek? CONNER HARRIS: Tak, zwykle to zrobić, jeśli masz funkcje z wielu argumentów. To może być często jak flagi, które można by tylko chcesz używać w rzadkich przypadkach. I w ten sposób można cię only-- może odnosić się do konkretnych argumentów że chcesz używać Domyślne wartości dla nie, i nie musisz się wypisać kilka flag równa false po nich. Albo mogę napisać to ponownie wartość domyślna wynosi 2, jak b. I wtedy mogłem zrobić f func, Zrobię, 4, 1, tym razem. I 17, które jest 4 do kwadratu plus 1, jak można się spodziewać. Ale może również po prostu Nazywamy to z funk 4, i będę miał 18 lat, z powodu Nie określić b. Tak b staje się domyślną wartość 2. OK, więc teraz, jeśli jesteś następujące wraz z demo, wpisz tę linię na twój rozkaz monitować i zobaczyć, co z tego wyjdzie. Faktycznie, nie rób tego. Wpisz tego. Powinieneś otrzymać coś takiego. Więc mtcars jest wbudowany danych ustawić dla tej demonstracji cele, które pochodzi with-- że pochodzi W domyślnie z dystrybucji r. Jest to kompilacja statystyk 1974 numer magazynu Motor Trend w na szeregu różnych modeli samochodów. Więc nie mil na galon, cylinders-- Nie pamiętam, co disp jest-- KM. Prawdopodobnie. Jeśli tylko samochody Google MT, a następnie jeden z pierwszych wyników będzie od Oficjalna dokumentacja r i będzie to wyjaśnić wszystkie te pola danych. Więc waga jest-- wag jest Masa samochodu ton. P s to czas ćwierć mili. Więc teraz możemy zrobić jakieś ciekawe rzeczy o samochodach MT jest polem danych. Tak więc możemy robić rzeczy, jak nazwy wierszy, samochody mt. I to jest lista wszystkich wierszy zbiór danych, które mają nazwy samochodów. Możemy zrobić colnames, samochody mt to. Jeśli nie samochody MT, Strona sub-numeryczne, jak 2. mamy drugą kolumnę z To, co jest butle. PUBLICZNOŚCI: Co zrobiłeś? CONNER HARRIS: Wpisałem mt samochody, wsporniki e, które dał mi drugi Kolumna z samochodów mt. Albo, jeśli chcemy wiersz, mogę wpisać mtcars przecinkiem 2, na przykład. Inne runda 2 przecinek, tak. A że idzie w swoim wierszu. To tutaj, po prostu daje ci kolumna, a kolumna jako wektor. Właśnie uświadomiłem sobie teraz zapomniałem wykazać kilka fajnych rzeczy o wektorach że można zrobić z indeksów. Więc pozwól mi to zrobić teraz. Więc zróbmy c gets-- wprowadzenie to na pause-- 2 razy 1 do 10. Więc c jest tylko będzie wektor 2 do 20. Mogę wziąć elementy tak, c2. Mogę przekazać w wektorze tak, C-- mi pozwolisz używać innej nazwy niż c, jak vec c. W zasadzie robię to tak nie dostaniesz zmieszany pomiędzy C jako Funkcja Konstrukcja wektora, a następnie c jako nazwy zmiennej. Vec wsporniki C 4, 5, 7. To będzie po mnie się czwarty, piąty, siedem elementów macierzy. Mogę zrobić vec, umieścić w negatywny indeks, jak negatywnym 4. Że dostanie mi się to z usunięte czwartym elementem. Następnie, jeśli chciałem zrobić plasterki, Mogę zrobić vec 2 do 6. 2 okrężnicy 6 jest kolejnym wektor, który jest 2, 3, 4, 5, 6. Wypluwa to. Tak czy inaczej, z powrotem do samochodów mt. Więc zróbmy kilka regresji. Powiedzmy modelu gets-- niech liniowo regress-- nie wiem. Najpierw zróbmy dołączyć mtcars, oczywiście. Więc [niesłyszalne] Model lm, niech ustąpią mil na galon na masę tyldy. A następnie ramka danych jest mtcars. Więc podsumowanie modelu. OK, więc wygląda to nieco skomplikowane. Ale w zasadzie, widząc, jak gdybyśmy spróbować wyrazić mil na galon jako funkcja liniowa wag czym my tu mamy tę linię, który przechwytuje na 37.28. 37.28 będzie teoretyczne mile za galon samochodu, który waży zero. A następnie za każdą dodatkową tonę, knock około pięciu mil na galon od tego. Oba te współczynniki ci widać, błędy standardowe nie. I są bardzo statystycznie istotny. Tak więc możemy być bardzo pewne, 1 e 10 do ujemnej 10. Tak więc 1 razy coś do ujemnego 10, że jeśli się cięższy samochód, będzie miał gorsze mil na galon. Albo możemy przetestować jakiś inny model. Jak zamiast cofa się to na wadze, niech ustąpią to na dziennik wagi, Bo może efektywną wagę na przebieg nie jest w jakiś sposób liniowy. To dało nam r kwadratowy 0.7528. Warto więc spróbować. Tym razem zróbmy inna zmienna, też. Model2. Więc podsumowanie, model2. W porządku, więc ponownie, Dostaliśmy nasze najlepsze dopasowanie linię tutaj. I to time-- to mówiąc: w zasadzie, że za każdym razem zwiększenie masy samochód o współczynnik E tracisz to wiele mil na galon. A więc tym razem nasza norma resztkowa błędów it--, że nie ma znaczenia, naprawdę. Pozostałą błąd standardowy jest w zasadzie tylko błąd standardowy że nie zostawili po ciebie zabrać linię trendu. A nasza r do kwadratu tutaj jest 0,81, która jest nieco lepsza niż to, co mieliśmy wcześniej, 0.52. A więc teraz dodajmy Termin tej regresji. Warto więc regres mil na galon zarówno w dzienniku wag i zróbmy, q mil, czwarta czas mile. OK, to musi mieć the-- Dobrze, qsec. Qsec. Actually-- Przepraszam, co? Pozwólcie mi nazwać to coś jeszcze oprócz model2. Pozwól mi nazwać tę model3. A więc teraz możemy zrobić podsumowanie model3. I znowu, to jest w zasadzie czego może oczekiwać. Masz pozytywny przechwycić. Skuteczne zwiększenie Masa jest ujemny. I skuteczne zwiększenie kwartał czas mile jest pozytywna, ale jeśli mniej niż waga. Teraz intuicyjnie, można zrozumieć to mówiąc, myślę o samochodach sportowych. Jest to bardzo szybkie przyspieszenie, bardzo krótkie czasy ćwierć mili. Oni również zamiar używać więcej gazu, natomiast bardziej sensowne samochody będą mieć wolniejsze przyspieszenie, wyższe razy ćwierć mili, i zużywają mniej gazu ,, tak wyższe mil na galon. Wielki. A więc teraz nadszedł czas, aby wykreślić coś takiego. Więc do-- tak nagie kości możemy zrobić plots-- bo już dołączone tej ramki danych before-- możemy po prostu zrobić działek, mpg wag. Dodać do tego nieco większe. Nie, w zasadzie mają wykres punktowy, ale punkty są trochę trudne do zobaczenia w tej sprawie. Nie pamiętam, od ręki, co Składnia jest do zmiany fabuły. Więc myślę, że to będzie to dobry czas, aby wywołać, jest to bardzo miłe wbudowane pomocy funkcja, pomoc cytaty funkcjonować nazwę. Sprowadzimy się w zasadzie cokolwiek chcesz. Myślę, że rzeczywiście to zrobić Typ równa p dla punktów działek. Czy to cokolwiek zmienić? I nie, nie. W porządku. Z jakiegoś powodu, kiedy to zrobił na własnym komputerze, jakiś czas temu, wszystkie punkty Rozproszenie były o wiele jaśniejsze. Tak czy inaczej, są tego rodzaju rozrzut widoczne? Nie ma tam nikogo. A Występuje kilka, niektóre nie. Jakby można je zobaczyć, prawda? Więc jeśli chcemy dodać najlepiej dopasowana linia do tej działce tutaj, co jest nieco pusty bones-- pozwól mi zrobić to nieco ładniejszy. Głównym równa w stosunku wagi. Mil na galon. Ponownie, można zobaczyć, jak przydatne opcjonalne argumenty są tu z również nie trzeba umieścić rzeczy w sposób pewien porządek z argumentami klawiatury gdy masz działek, ponieważ to zajmie wiele argumentów. Xlab równe wagi, wagi, ton. W porządku. OK, tak, to urządzenie to jest trochę denerwujące. Ale widać jakby tam, jest tytuł wykresu na stronie. Tutaj there's-- na dnie tutaj nie ma osi etykiety. Nie pamiętam od ręki co rozkazy ars-- jakie funkcje są w celu zwiększenia wielkość tych etykiet i tytułów, ale są tam. I tak, jeśli chcemy dodaj najlepszego dopasowania linii, możemy zrobić coś like-- I mają składnia napisane tutaj. Więc pamiętaj, że wystarczy dodać modelu był mpg, wagi mtcars. I tak, jeśli chciałem dodać najlepsze dopasowanie Linia, mogę zrobić, model liniowy b. I bom, mamy najlepszego dopasowania linii. To trochę trudne do zobaczenia ponownie. Jestem bardzo przykro o trudności technologiczne. Ale to działa w zasadzie górnej lewej do prawej dolnej. A jeśli skala były większe, można było zobaczyć że przechwytują to, co można, znaleźć w statystykach podsumowujących jeśli wpiszesz Podsumowanie modelu. OK, więc mam nadzieję, że każdy dostaje coś z poczucia tego, co R to, co jest dobre dla. Można zrobić znacznie ładniejsze działki niż to w swoim czasie, jeśli chcesz. Więc interfejsu funkcji obcych. To jest coś, co nie jest zazwyczaj pokryte wykładów wprowadzających lub wprowadzające coś dla r. Nie jest prawdopodobne, będziesz go potrzebować. Uważam jednak, że warto w moje projekty w przeszłości. I nie ma dobra samouczek dla niego w Internecie. Więc jestem po prostu będzie wypychać cię przez cały ten i jesteś wolny, aby wyjść. I tak obcy Interfejs funkcja jest co można użyć, aby zadzwonić, aby zobaczyć Funkcje z przewozem R. wewnętrznie, R jest zbudowany na arytmetyczna C. R jest po prostu C w 64-bitowe, zmiennoprzecinkowe arytmetyka, która jest typu double [niesłyszalne]. A może chcesz zrobić to dla paru powodów. Na jedną, R jest interpretowany, jest to nie kompilowane do kodu maszynowego. Więc można przepisać wewnętrzne pętle w C, a następnie dostać Zaletą korzystania z R. odczuwalna jest to trochę bardziej wygodne niż C. Ma lepszą Wykresy Wyposażenie i etażerka. A jednocześnie jest w stanie uzyskać prędkość z wewnętrznej pętli, czyli tam, gdzie jest on naprawdę potrzebny. Ponowne użycie istniejących bibliotek C, to też jest ważne. Jeśli masz jakieś biblioteki C dla podobnych, Nie wiem, transformacji Fouriera, lub niektóre bardzo archaiku Procedura statystyki używane w wysokiej astrofizyki energii czy coś, nie wiem. Wysokiej astrofizyka energii nie jest nawet myśleć, jak sądzę. Ale można zrobić, że zamiast napisać natywną portu R z nich. I na the-- i znowu, tak jak w przypadku Ciebie wyglądają w większości standardowych bibliotek R, na wewnętrzne, elementy wewnętrzne są będzie korzystać z funkcji obcego interfejs bardzo intensywnie. Oni mają takie rzeczy jak Fourier przekształca lub obliczenie korelacji Współczynniki napisany w C, i będziesz Wystarczy R obwoluty wokół nich. Interfejs jest nieco trudne. Myślę jego trudności jest przesadzone w sposób Wiele z instrukcjami, które znajdziesz. Ale mimo to, że jest to nieco mylące. I nie były w stanie znaleźć dobry poradnik dla niego, tak, to jest to właśnie teraz. Ponownie, to cały odcinek jest bardziej do wglądu. Nie martw się o kopiowaniu wszystko, co się w tej chwili. Więc następujących instrukcji są dla systemów uniksowych, Linux, BSD, OS X nie wiem jak to działa w systemie Windows, ale proszę, nie rób swoje Ostateczny projekt w systemie Windows. Naprawdę nie chcę. UNIX jest znacznie lepszy zestaw się na co dzień programowania. Tak więc, w zasadzie obcych Interfejs funkcji. Jeśli chcesz napisać C Funkcja stosowania z R, musi podjąć wszystkie argumenty jak wskaźniki. Więc dla pojedynczych wartości, to Oznacza to wskazał na wartości. Tablic, jest to wskazówka pierwszego elementu, który jest to, co w rzeczywistości oznacza, nazwy tablicy. Ponownie, jest to coś, co powinno być dość całkowicie dół po p ustawić pięć. Nazwy tablic są tylko wskaźniki pierwszego elementu Typ zmiennoprzecinkowej jest podwójna. A twoja funkcja musi zwrócić nieważne. Tylko w ten sposób, że może właściwie powiedzieć, R, co się stało jest poprzez modyfikację pamięci, który dał R do niego za pomocą funkcji obcego berło. Więc pisałem to Przykładem, jest funkcja, która oblicza korzystania kropka iloczyn dwóch wektorów. To trwa dwa argumenty, vec1, vec2, które są same wektory, i n, który jest długości, bo znowu, R ma wbudowane [niesłyszalne], aby dowiedzieć się, Długość wektora, a C nie. W C, wektory jest dowolna ograniczony fragment pamięci. Więc sposób można obliczenia produkty kropki to jest po prostu ustawić się parametr do zera, a następnie iterację od 1 do gwiazdy n, ponieważ n jest wskaźnikiem długości, wystarczy dodać coś do to parametr wyjściowy. I to może być dobra praktyka jeśli masz zamiar zrobić to napisać dwie odrębne funkcje C. Jednym z nich has-- jedna z nich po prostu ma argumentów i typów że oni zwyczajnie być w C Więc on ma tablicę argumenty jak wskaźniki. Ale argumenty pojedynczej wartości, takie jak n, właśnie trwa jako wartości przez kopię, bez wskazówek. I to nie robi [Niesłyszalne] się wskaźnik. A potem możesz mieć inna, w zasadzie, Funkcja otoki, że w zasadzie uchwyty wymagania funkcji obcych interfejs dla Ciebie. Sposób, w jaki nazywamy to w R jest, raz masz czynność napisany w języku C, wpisać R, R cmd shlib Komenda wspólna biblioteka, foo kropka c, czy cokolwiek Twoja nazwa pliku, powłoki i OS nie w terminalu R. A to stworzy Biblioteka nazywany foo dot tak. A potem można go załadować w nasz skrypt lub interaktywnie z polecenia dyn dot obciążenia. Wtedy nie jest funkcją w R nazywa kropka c. Trwa to argumenty, które są Pierwsza nazwa funkcji w C który chcesz zadzwonić. A następnie wszystkie parametry do tej funkcji, muszą być w odpowiedniej kolejności. Musisz użyć tego typu Funkcje przymusu jako liczba całkowita, jak dwukrotnie, jako znak i jako logiczne. I wtedy, gdy zwraca Lista, która ponownie jest tylko skojarzony tablicę Nazwy parametrów i wartości po funkcja prowadzi. Więc w tym przypadku, ponieważ kropka prod ma Argumenty vec1, vec2 i int n, n out. Kropka c mamy dot prod, nazwa funkcji że dzwonisz, vec1, vec2, typ zmusić. Długość obu wektora Po prostu wybrał vec1 arbitralnie. Byłoby bardziej wytrzymałe powiedzieć s całkowita min długość vec1, długość vec2. Następnie tak jak podwójne zero, dlatego, że tak naprawdę nie obchodzi, co idzie do z parametrem, ponieważ jesteśmy ustawienie go na tak zera. A następnie wyniki będzie duża związane tablica zasadzie vec1 jest cokolwiek, vec2 jest cokolwiek. Ale jesteśmy zainteresowani się, więc możemy się o tym przekonać. Jest to kolejny, bardzo przykładem zabawki interfejsu funkcji obcych. Ale jeśli masz do obliczenia kropkę Produkty masywnych wektory w pętli, lub jeśli masz do zrobienia coś jeszcze w pętli, i nie chcesz polegać na badania, która ma trochę nad głową wbudowane w niej, co może być użyteczne. Ponownie, to zwykle nie jest Temat wprowadzający do R. To nie jest bardzo dobrze udokumentowane. Jestem po prostu w tym, bo I okazało się przydatne w przeszłości. Tak, złe praktyki. Wspomniałem, że istnieje pętli w funkcji. Generalnie nie powinna, język, nie używaj go. W oparciu o jak R realizuje iteracji wewnętrznie, może być wolna. Oni po prostu również brzydko wyglądać. R obsługuje wektory bardzo ładnie, więc często nie trzeba go używać. Następnie można zwykle wymienić wektor często z tych funkcji zwanych wysokie Funkcje zamówienie, Mapa, Reduce, Znajdź lub Filter. Ja po prostu dać trochę przykłady co to robić. Mapa jest wyższa funkcja celu, ponieważ trwa funkcję jako argument. Więc można nadać mu funkcji, można nadać mu tablicę, i będzie stosować funkcję dla każdego elementu macierzy i zwracać nową tablicę. Zmniejszyć, w zasadzie dać to tablica, dajesz go funkcja, która przyjmuje dwa argumenty. Będzie stosować funkcję po pierwsze, Pierwszy argument z jakąś wartość rozrusznika. Następnie do tego wyniku w drugim. Następnie do tego wyniku w trzecim, następnie do tego wyniku w czwartym. A potem wrócić, gdy dojdzie do końca. Tak na przykład, jeśli chcesz obliczyć sumę wszystkich elementach w tablicy, nie można nazwać zmniejszyć z [niesłyszalne] zmniejszyć dodatek funkcji, takich jak funk a, b, zwracają PLUS B. A następnie uruchomić wartość 0. A wszystko to można je znaleźć opisane w dokumentacji Rt w każdym podręczniku na programowanie funkcjonalne. Jest też ta klasa funkcje wywoływane zastosowanie funkcji, które don't-- są nieco trudne do wyjaśnienia, ale jeśli spojrzeć w [niesłyszalne] zarezerwowane które przytoczyłem na początku, wyjaśnia je całkiem dobrze w Jego dodatek na programowaniu R. Więcej informacji na temat praktyk, dołączając do wektorów. Tak? Myślę, że powinno to poprawić. W pierwszej linii, vec strzałka, że strzałka nie powinno tam być. Można przypisać do wektora, znowu, by zająć jego długość plus 1 i przypisanie jakąś wartość do tego. To przedłuży wektor, lub może zrobić Věc równa C Věc nowaWartość. Ponownie, jeśli używasz C z jeden argument jako wektor, wynikające z hierarchii zostanie spłaszczona. Więc po prostu się wektor który jest wydłużony o 1. Nie wolno tego robić. Powodem, dla ciebie nie należy robić to jest to. Kiedy przeznaczyć wektor, to Daje to pewien fragment pamięci. Jeśli zwiększenie tej wielkości wektorowych, musi przydzielić wektor gdzieś indziej. I tak realokacja jest dość drogie. Nie będę wdawać się w szczegóły, jak podzielniki pamięci są realizowane na poziomie systemu operacyjnego ale to zajmuje dużo czasu znaleźć nowy kawałek pamięci. A także, jeśli jesteś realokacji wiele, wiele z coraz większą kawałki, możesz skończyć z czegoś, co nazywa fragmentacja pamięci, gdzie dostępna pamięć jest podzielone na wiele małych bloków w punkcie podzielniki pamięci widzenia. I robi się coraz trudniej znaleźć pamięć do innych rzeczy. Zamiast więc, jeśli chcesz to zrobić, jeśli trzeba rozwijać wektor z jednego końca do następnego, a nie dołączając do niego stale, należy wstępnie przydzielić go. Vec strzałki, długość wektora wynosi 1000, czy cokolwiek innego. I wtedy można po prostu przypisać do wartości jednego nosiciela czas po tym, jak przydzielane raz. Wpadłem na to, znowu, mój wakacyjnej pracy kiedy pisałem NRA dyferencjał równań. Nie symboliczne numeryczna. Chodzi o to, że skoro masz jedna wartość dla rozwiązania, używasz, że do obliczenia następny. Więc moje naturalne naiwny Nachylenie było powiedzieć OK, więc zacznę z wektorem to istotna wartość. Obliczyć z tej następnej wartości że idzie na moje rozwiązanie wektora, i dołączyć to. Stworzyć coś innego, dołącz to. To poszło bardzo, bardzo powoli. A kiedy ja sobie z tego sprawę i zmieniłem systemu dołączaniu do tego wektora jak 10000 do 100000 razy po prostu pre-alokacji wektor i po prostu działa z tym. Mam ponad 1000-krotnie prędkość w górę. Więc to jest bardzo często Pułapka do programowania R. Jeśli potrzebujesz, aby zbudować wektor kawałek po kawałku, wstępnie przeznaczyć go. Inną wspólną podróż up-- to jest moja ostatnia zjeżdżalnia, nie worry-- jest obsługa błędów. R, szczerze mówiąc, nie Naprawdę to zrobić bardzo dobrze. Istnieje wiele problemy, które mogą pojawić się. Na przykład, jeśli masz tablicę lub wektor z funkcją że spodziewaliśmy pojedyncza Wartość pochodzić z, lub odwrotnie, i przekazać, że do funkcji, które Napisałeś spodziewa się jedną wartość, że może być problem. Niektóre funkcje zwraca null, tak jak, powiedzmy, odczyt z klucz nie istnieje na liście. Ale wartość null nie jest jak C gdzie jeśli próbujesz przeczytać ze starego wskaźnika, [niesłyszalne] null pointer, to po prostu SEG usterek a jeśli jesteś w debugger to mówi dokładnie, gdzie jesteś. Zamiast tego, null do-- funkcje zrobi nieprzewidywalne rzeczy jeśli są one handed null. Jak jeśli podał max wartość null, będzie ona daje minus nieskończoność. I tak, tak. I tak to się stało mi kiedyś, gdy miałem zmienił kilka pól w mojej listy struktury raz, bez zmiany ich gdzie indziej kiedy czyta się od nich. A potem mam wszelkiego rodzaju przypadkowe Wyniki nieskończoność pojawiają się a ja nie mam pojęcia, skąd one pochodzą. I niestety, nie nie ma prawdziwych R Tryb ścisłe gdzie można powiedzieć, jeśli coś Wygląda na to, może to być błąd, po prostu zatrzymać się tam, więc mogę być zdyscyplinowani i naprawić. Jednak jest coś, nazywa się zatrzymać jeśli nie. Jest to równoznaczne z assert C, w jeśli już o tym rozmawialiśmy. Nie sądzę, C dochodzić Jest to temat wykładu, ale twój szef sekcji może przeszedłby przez to. I zatrzymania, jeśli nie ma w zasadzie żadnej orzecznik, więc wszelkie oświadczenia, może być prawdziwe lub fałszywe. A jeśli to fałszywe, zatrzymuje program. Dowiesz się, co dokładnie linię, byli i co stanie się niepowodzeniem. I bardzo użyteczne, na przykład, sprawdzania czystości, wejścia funkcyjne. Więc jeśli masz funkcją i można oczekiwać, powiedzmy, czy należy dać mi datę, chcę terminy być tylko wektor o długości 1 a gdzieś między 1 a 31. A jeśli nie, wiem coś poszło nie tak. I wybrać się tam zatrzymać przed tym ma efektów losowych pukanie z kodem że trudniej jest śledzić za pośrednictwem. Więc to jest jeden z możliwych używać do przystanku, czy nie. Tak czy inaczej, OK. Tak, że to koniec. Dziękuję bardzo za przybycie. Jestem amatorem ranga na to. Tak mi przykro, jeśli jesteś znudzony lub zdezorientowany lub podobnie. Jestem szczęśliwy, że pytania przez e-mail w connorharris@college.harvard.edu~~pobj. Dotyczy to także wszystkich oglądania tego na żywo lub w późniejszym czasie. Ponadto, choć nie jestem TF, jestem również bardzo gotów służyć jako nieoficjalny doradca dla każdego, kto jest za pomocą badań w końcowym projekcie. Jeśli chcesz, aby to, a potem po prostu porozmawiać z TF a następnie napisać do mnie maila, tak Wiem, co pracujesz i tak mogę ustawić spotkanie razy z Ciebie, jeśli chcesz. Więc jeszcze raz, bardzo dziękuję. Mam nadzieję, że się podobało. PUBLICZNOŚCI: [niesłyszalne]. CONNER HARRIS: Oczywiście. PUBLICZNOŚCI: Jaki projekt będzie studentem CS używać R dla? CONNER HARRIS: Więc jeśli nie masz zrobić coś, co jest czysto w eksploracji danych, Przykładowo, i nie Jest wiele rzeczy można z tym zrobić z danymi górnictwo i uczenie maszynowe. Możesz też użyć R dla składnikiem coś. Przyniosłem się pierwotnie przykład od tego, czy piszesz na stronie internetowej i chcesz uruchomić zautomatyzowane Analiza statystyczna serwera dzienniki w określonym czasie każdego dnia, że może być coś, co jest bardzo proste do zrobienia tylko w krótkim R skrypt, który można zaplanować uruchamianie każdej nocy, na przykład. I jestem pewien, jeśli jest jakiś powód, że chcą statystyki lub możliwości graficzne i mają ten uruchamia się automatycznie, a nie konieczności interakcji z rzeczy w programie Excel, na przykład, że coś możesz użyć R dla. Więc jakieś pytania przed wyjazdem? Nie? Dobrze, dobrze, jeszcze raz, dziękuję Dziękuję bardzo za przybycie.