1 00:00:00,000 --> 00:00:05,691 2 00:00:05,691 --> 00:00:07,690 CONNOR HARRIS: Wciąż myślę kilka ciekawych wideo 3 00:00:07,690 --> 00:00:12,570 produkowane przez profesjonalne doradztwo który wykorzystuje R dużo w jej pracach. 4 00:00:12,570 --> 00:00:16,329 >> Narrator: Co kryje się za statystykami, Analytics i wizualizacje 5 00:00:16,329 --> 00:00:19,770 że dzisiejsze najzdolniejszych naukowców danych i liderów biznesu polegać na 6 00:00:19,770 --> 00:00:22,012 aby potężne decyzje? 7 00:00:22,012 --> 00:00:23,540 Nie zawsze może je zobaczyć. 8 00:00:23,540 --> 00:00:24,790 Ale to nie. 9 00:00:24,790 --> 00:00:29,460 To się nazywa R, open source r-- Język programowania statystyczna 10 00:00:29,460 --> 00:00:32,630 że eksperci danych Świat ponad użytku na wszystko 11 00:00:32,630 --> 00:00:35,350 z mapowania szerokiej społecznej i trendy marketingu online 12 00:00:35,350 --> 00:00:39,210 w celu rozwijania finansowej i klimat Modele, które pomagają prowadzić nasze gospodarki 13 00:00:39,210 --> 00:00:40,780 i społeczności. 14 00:00:40,780 --> 00:00:44,910 >> Ale co to dokładnie jest R i gdzie zacząć R? 15 00:00:44,910 --> 00:00:48,620 Cóż pierwotnie, R rozpoczął tu z dwoma profesorami 16 00:00:48,620 --> 00:00:51,950 którzy chcieli lepiej statystyczna platforma dla swoich studentów. 17 00:00:51,950 --> 00:00:56,030 Więc stworzyli jeden wzór po języku statystycznych S. 18 00:00:56,030 --> 00:01:00,480 Oni, wraz z wieloma innymi, utrzymywane do pracy przy użyciu R, 19 00:01:00,480 --> 00:01:05,489 tworzenie narzędzi dla R i znalezienie nowe wnioski o R codziennie. 20 00:01:05,489 --> 00:01:07,750 >> Dzięki temu jest na całym świecie wysiłek społeczności, 21 00:01:07,750 --> 00:01:11,850 R rósł z tysiącami bibliotek utworzonych przez użytkownika wbudowanych 22 00:01:11,850 --> 00:01:15,500 w celu zwiększenia funkcjonalności R i walidacja jakości tłum pozyskiwane 23 00:01:15,500 --> 00:01:19,740 i wsparcie z najbardziej uznanych liderów branży w każdej dziedzinie, że 24 00:01:19,740 --> 00:01:25,040 wykorzystuje R. Który jest wielki, ponieważ R jest najlepszy w tym co robi. 25 00:01:25,040 --> 00:01:28,540 Szybko początkujący ekspertów i łatwo zinterpretować, interakcji z, 26 00:01:28,540 --> 00:01:33,790 i wizualizacji danych pokazano ich szybko rosnąca społeczność użytkowników R na całym świecie 27 00:01:33,790 --> 00:01:36,380 i zobaczyć, jak open source R nadal kształtować 28 00:01:36,380 --> 00:01:39,340 przyszłość statystyczna Analiza i nauka danych. 29 00:01:39,340 --> 00:01:44,660 30 00:01:44,660 --> 00:01:47,710 >> CONNOR HARRIS: OK, świetnie. 31 00:01:47,710 --> 00:01:50,360 Więc moim prezentacji będzie nieco bardziej trzeźwy. 32 00:01:50,360 --> 00:01:54,380 To nie będzie obejmować, że wiele ekscytująca muzyka w tle. 33 00:01:54,380 --> 00:01:59,160 Ale jak widzieliśmy w filmie, R jest rodzajem z języka ogólnego programu celem. 34 00:01:59,160 --> 00:02:03,720 Ale to został stworzony głównie dla prac statystycznych. 35 00:02:03,720 --> 00:02:07,980 >> Więc to jest przeznaczone do celów statystycznych, W celu analizy danych do analizy danych. 36 00:02:07,980 --> 00:02:12,420 I tak można zobaczyć w wielu wybory projektu, które twórcy R 37 00:02:12,420 --> 00:02:13,320 zrobiony. 38 00:02:13,320 --> 00:02:15,472 Jest przeznaczony dla dużej mierze, ludzie, którzy nie są 39 00:02:15,472 --> 00:02:17,930 Eksperci w programowaniu, którzy są po prostu podniesienie programowania 40 00:02:17,930 --> 00:02:23,460 na boku, aby mogli wykonywać swoją pracę w naukach społecznych lub w statystykach 41 00:02:23,460 --> 00:02:25,440 lub cokolwiek. 42 00:02:25,440 --> 00:02:27,850 >> Posiada wiele bardzo istotne różnice od C 43 00:02:27,850 --> 00:02:33,200 Ale składnia i paradygmaty że używa są ogólnie takie same. 44 00:02:33,200 --> 00:02:36,830 I powinien czuć się dość jak w domu tuż nietoperza. 45 00:02:36,830 --> 00:02:38,520 Jest to język koniecznością. 46 00:02:38,520 --> 00:02:40,260 >> Nie przejmuj się zbytnio, że jeśli nie znasz termin. 47 00:02:40,260 --> 00:02:42,676 Ale jest różnica między imperatywem, deklaratywnej, 48 00:02:42,676 --> 00:02:43,810 i funkcjonalne. 49 00:02:43,810 --> 00:02:47,600 Imperatyw oznacza po prostu zrobić Oświadczenia, które są w zasadzie poleceń. 50 00:02:47,600 --> 00:02:52,340 A potem interpreter lub Komputer następujący sposób je jeden po drugim. 51 00:02:52,340 --> 00:02:56,630 Jest słabo wpisane, są Brak deklaracji typu w R. 52 00:02:56,630 --> 00:02:59,130 >> A potem linie różnych typów 53 00:02:59,130 --> 00:03:03,920 są nieco bardziej luźne niż są w ° C, na przykład. 54 00:03:03,920 --> 00:03:06,450 I jak powiedział, że są bardzo bogate zaplecze 55 00:03:06,450 --> 00:03:15,610 do wykresów, na statystyczną Analiza, na eksploracji danych. 56 00:03:15,610 --> 00:03:19,540 Są to zarówno wbudowane w język i, jak powiedział wideo, 57 00:03:19,540 --> 00:03:23,680 tysiące bibliotek innych firm można pobrać i używać za darmo 58 00:03:23,680 --> 00:03:25,340 z bardzo luźne warunków licencji. 59 00:03:25,340 --> 00:03:28,800 60 00:03:28,800 --> 00:03:31,500 >> Tak w ogóle, polecam że patrzysz na tych dwóch książek 61 00:03:31,500 --> 00:03:34,610 jeśli masz zamiar pracować na R. One z nich jest oficjalnym R Początkujący użytkownika 62 00:03:34,610 --> 00:03:35,110 przewodnik. 63 00:03:35,110 --> 00:03:38,660 Jest utrzymywany przez podstawowe deweloperzy R. 64 00:03:38,660 --> 00:03:42,400 Możesz pobrać go ponownie, wolne od ładowania i legalnie na tym tam link. 65 00:03:42,400 --> 00:03:45,430 66 00:03:45,430 --> 00:03:49,869 Wszystkie te slajdy będą iść się w Internecie, na stronie internetowej CS50 67 00:03:49,869 --> 00:03:50,660 Po wykonaniu tej operacji. 68 00:03:50,660 --> 00:03:53,690 Więc nie ma potrzeby, aby skopiować rzeczy w dół gorączkowo. 69 00:03:53,690 --> 00:03:56,800 >> Drugi jest Podręcznik przez Cosma Shalizi, 70 00:03:56,800 --> 00:04:00,100 który jest profesorem statystyki na Carnegie Mellon, zwany Advanced Data 71 00:04:00,100 --> 00:04:02,160 Analizy z Elementary punktu widzenia. 72 00:04:02,160 --> 00:04:04,010 To nie jest książka przede R. 73 00:04:04,010 --> 00:04:07,130 To książka statystyki i To książka analiza danych. 74 00:04:07,130 --> 00:04:11,990 Ale to jest bardzo łatwo dostępne dla osób, które mają odrobinę statystyki wiedzy. 75 00:04:11,990 --> 00:04:13,750 >> Nigdy nie miały oficjalnego kursu. 76 00:04:13,750 --> 00:04:17,269 Wiem tylko kawałki z różnych przedmiotów pokrewnych 77 00:04:17,269 --> 00:04:18,579 że wziąłem kursy. 78 00:04:18,579 --> 00:04:21,839 A ja byłem w stanie zrozumieć to doskonale. 79 00:04:21,839 --> 00:04:25,630 >> Wszystkie dane są podane w R. Są one wykonane w R 80 00:04:25,630 --> 00:04:30,280 i mają też listingów pod każdą postacią, że powiedzieć, 81 00:04:30,280 --> 00:04:33,270 jak zrobić każdą postać z kodu R. 82 00:04:33,270 --> 00:04:37,400 I to jest bardzo przydatne, jeśli starasz się naśladować 83 00:04:37,400 --> 00:04:38,650 niektóre rysunku widać w książce. 84 00:04:38,650 --> 00:04:47,840 >> I pobierz ponownie darmo stat.cmu.edu/cshalizi/ Niestety, 85 00:04:47,840 --> 00:04:50,230 które powinny być slash tyldy cshalizi. 86 00:04:50,230 --> 00:04:53,150 Dopilnuję, aby to poprawić gdy oficjalne slajdy w górę. 87 00:04:53,150 --> 00:04:57,000 / ADAfaEPoV która jest po prostu akronim tytuł książki. 88 00:04:57,000 --> 00:04:59,850 89 00:04:59,850 --> 00:05:02,500 >> Więc ogólnie caveats-- R ma wiele możliwości. 90 00:05:02,500 --> 00:05:05,331 Ja tylko będzie w stanie pokryć powierzchnia wiele rzeczy. 91 00:05:05,331 --> 00:05:08,580 Również pierwsza część seminarium ma być czymś w rodzaju zrzutu danych. 92 00:05:08,580 --> 00:05:11,437 Jestem bardzo przykro z tego powodu. 93 00:05:11,437 --> 00:05:13,770 Zasadniczo, mam zamiar wprowadzenie do wielu rzeczy 94 00:05:13,770 --> 00:05:15,350 tuż nietoperza, będzie jak najszybciej. 95 00:05:15,350 --> 00:05:17,058 A następnie dostać się do się zabawa, która jest 96 00:05:17,058 --> 00:05:20,570 demo, gdzie mogę pokazać ci wszystko że rozmawialiśmy o na ekranie. 97 00:05:20,570 --> 00:05:23,321 I można bawić się na własną rękę. 98 00:05:23,321 --> 00:05:26,070 Więc nie będzie dużo rzeczy techniczne rzucone na tutaj. 99 00:05:26,070 --> 00:05:28,060 Nie martw się o kopiowanie wszystko w dół. 100 00:05:28,060 --> 00:05:31,740 Ponieważ można uzyskać wszystkie Rzeczy na stronie CS50 później. 101 00:05:31,740 --> 00:05:37,780 I B, to naprawdę nie jest takie ważne zapamiętać to ze zjeżdżalniami. 102 00:05:37,780 --> 00:05:40,462 To ważne, że masz niektóre intuicyjne obiekt z nim 103 00:05:40,462 --> 00:05:44,220 i że pochodzi z po prostu grając. 104 00:05:44,220 --> 00:05:45,720 >> Dlaczego więc używać R? 105 00:05:45,720 --> 00:05:49,440 Zasadniczo, jeśli masz projekt, który obejmuje wydobycie dużych zbiorów danych, dane 106 00:05:49,440 --> 00:05:52,664 wizualizacji, można Należy używać R. Jeśli jesteś 107 00:05:52,664 --> 00:05:55,830 robi skomplikowanych analiz statystycznych, które mogłyby być trudne w Excel 108 00:05:55,830 --> 00:05:58,010 Na przykład, byłoby również dobre-również 109 00:05:58,010 --> 00:06:00,506 jeśli robisz statystyczna Analiza, która jest zautomatyzowana. 110 00:06:00,506 --> 00:06:02,130 Powiedzmy, że jesteś utrzymanie strony internetowej. 111 00:06:02,130 --> 00:06:06,320 I chcesz przeczytać dziennik serwera na co dzień i skompilować jakieś listy, 112 00:06:06,320 --> 00:06:10,320 jak najlepszych krajów, które użytkownicy pochodzą, 113 00:06:10,320 --> 00:06:15,100 niektóre statystyki podsumowujące na jak długo spędzają na swojej stronie lub cokolwiek innego. 114 00:06:15,100 --> 00:06:16,910 I chcesz uruchomić to na co dzień. 115 00:06:16,910 --> 00:06:20,280 >> Teraz, jeśli robisz to w programie Excel, trzeba by przejść do dziennika serwera 116 00:06:20,280 --> 00:06:23,490 importować, że w produkt Excel arkusz danych, 117 00:06:23,490 --> 00:06:24,910 prowadzony Wszystkie analizy ręcznie. 118 00:06:24,910 --> 00:06:27,100 R, można po prostu napisać jeden skrypt. 119 00:06:27,100 --> 00:06:29,520 Zaplanuj go do pracy na co dzień z poziomu systemu operacyjnego. 120 00:06:29,520 --> 00:06:33,657 A potem co noc o godzinie 2:00, lub gdy użytkownik zaznaczy go uruchomić, 121 00:06:33,657 --> 00:06:35,990 będzie wyglądać przez swoje ruchu internetowego na ten dzień. 122 00:06:35,990 --> 00:06:39,010 A potem przez następny dzień, będziesz mają ten błyszczący, nowy raport 123 00:06:39,010 --> 00:06:41,710 czy cokolwiek z wszystkie z informacje prosiłeś. 124 00:06:41,710 --> 00:06:44,960 125 00:06:44,960 --> 00:06:50,217 >> Więc w zasadzie R jest dla Cisco programowanie w porównaniu analizy Cisco. 126 00:06:50,217 --> 00:06:51,050 Wstępne odbywa. 127 00:06:51,050 --> 00:06:53,104 Przejdźmy do rzeczy realnych. 128 00:06:53,104 --> 00:06:55,020 Tak więc istnieją trzy prawdziwe typy w języku. 129 00:06:55,020 --> 00:06:56,120 Jest typ numeryczny. 130 00:06:56,120 --> 00:07:01,250 Jest swego rodzaju różnicy pomiędzy liczby całkowite i punkty szyby, 131 00:07:01,250 --> 00:07:02,769 ale nie bardzo. 132 00:07:02,769 --> 00:07:04,560 Nie ma postać typ, który jest struny. 133 00:07:04,560 --> 00:07:07,100 I jest to logiczne typ, który jest logicznych. 134 00:07:07,100 --> 00:07:11,080 >> I można konwertować między typami korzystania z tych funkcji, jak numeryczny, 135 00:07:11,080 --> 00:07:15,220 jako znak, jako logiczne. 136 00:07:15,220 --> 00:07:17,510 Jeśli zadzwonisz, na przykład, jak numerycznych na sznurku, 137 00:07:17,510 --> 00:07:20,030 będzie starał się przeczytać, że ciąg w postaci liczby, tak samo 138 00:07:20,030 --> 00:07:25,897 że a2i i scanf zrobić, i C. Jeśli nazywasz jak numerycznych na prawdziwe lub fałszywe 139 00:07:25,897 --> 00:07:26,980 będzie to konwersja do 1 lub 0. 140 00:07:26,980 --> 00:07:29,110 Jeśli zadzwonisz jako znak na nic nie będziesz 141 00:07:29,110 --> 00:07:32,550 przekonwertować do Ciąg znaków. 142 00:07:32,550 --> 00:07:34,990 >> A potem są wektory i macierze. 143 00:07:34,990 --> 00:07:37,580 Więc wektory są w zasadzie 1 tablice jednowymiarowe. 144 00:07:37,580 --> 00:07:40,600 Są to, co nazywamy tablic w C. Macierze, 2 tablice jednowymiarowe. 145 00:07:40,600 --> 00:07:42,350 I wtedy wyższa tablice wymiarowe zdołasz 146 00:07:42,350 --> 00:07:48,560 mają 3, 4, 5 wymiary lub cokolwiek wartości liczbowe, ciągi, 147 00:07:48,560 --> 00:07:52,860 wartości logicznej. 148 00:07:52,860 --> 00:07:55,380 >> Masz również list, które są rodzaj tablicy asocjacyjnej. 149 00:07:55,380 --> 00:07:57,390 Pójdę do tego trochę. 150 00:07:57,390 --> 00:07:59,390 Więc jedna ważna rzecz że wycieczki ludzi się w R 151 00:07:59,390 --> 00:08:01,470 jest to, że nie ma prawdziwe, czyste typy atomowe. 152 00:08:01,470 --> 00:08:05,870 Nie ma rzeczywista różnica między liczba, jak wartość numeryczną, 153 00:08:05,870 --> 00:08:07,920 oraz listę wartości numerycznych. 154 00:08:07,920 --> 00:08:12,370 Wartości liczbowe są rzeczywiście same jak wektory długości 1. 155 00:08:12,370 --> 00:08:14,959 I to ma szereg ważne konsekwencje. 156 00:08:14,959 --> 00:08:17,500 Jeden z nich, oznacza to, że można zrobić rzeczy bardzo łatwo, które dotyczą 157 00:08:17,500 --> 00:08:21,037 jak dodać numer telefonu do wektora. 158 00:08:21,037 --> 00:08:23,120 R będzie w zasadzie postać się, co masz na myśli. 159 00:08:23,120 --> 00:08:24,610 A ja się do tego w drugim. 160 00:08:24,610 --> 00:08:27,930 Oznacza to również, że nie ma mowy, do rodzaju checker-- w zakresie 161 00:08:27,930 --> 00:08:30,530 że coś takiego istnieje w r-- powiedzieć 162 00:08:30,530 --> 00:08:33,780 kiedy już przeszedł w jednej wartości kiedy oczekuje tablicy lub odwrotnie. 163 00:08:33,780 --> 00:08:39,159 A to może spowodować, że niektóre dziwne Kłopoty, które wpadłem, gdy 164 00:08:39,159 --> 00:08:42,252 I był przy R podczas mojej wakacyjnej pracy. 165 00:08:42,252 --> 00:08:43,710 I nie ma żadnych tablic typu mieszanego. 166 00:08:43,710 --> 00:08:46,543 Tak więc nie można mieć tablicą były Pierwsze elementy jest, nie wiem, 167 00:08:46,543 --> 00:08:49,332 napis "Jan" i Drugim elementem jest liczba 42. 168 00:08:49,332 --> 00:08:52,540 Jeśli próbujesz zrobić, to dostaniesz wszystko po prostu zamienione na ciąg. 169 00:08:52,540 --> 00:08:54,760 Mamy więc ciąg John, ciąg 42. 170 00:08:54,760 --> 00:08:58,250 171 00:08:58,250 --> 00:09:02,025 >> Tak niezwykłe składniowym features-- najbardziej R składnia jest bardzo podobna do C. 172 00:09:02,025 --> 00:09:04,690 Jest kilka istotnych różnic. 173 00:09:04,690 --> 00:09:05,620 Wpisanie jest bardzo słaby. 174 00:09:05,620 --> 00:09:07,360 Więc nie ma deklaracji zmiennej. 175 00:09:07,360 --> 00:09:12,670 Cesja używa dziwne Operator błąd mniej niż myślnikiem. 176 00:09:12,670 --> 00:09:15,340 Komentarze są znakiem hash. 177 00:09:15,340 --> 00:09:19,230 Myślę, że teraz dzień nazywamy to hashtag choć nie jest to naprawdę nie accurate-- 178 00:09:19,230 --> 00:09:21,810 podwójny ukośnik. 179 00:09:21,810 --> 00:09:24,710 >> Pozostałości modułowe są z %% znaków. 180 00:09:24,710 --> 00:09:30,172 Podział Integer jest w% /%, co jest bardzo trudne do odczytania, gdy jest przewidywane 181 00:09:30,172 --> 00:09:30,880 na ekranie. 182 00:09:30,880 --> 00:09:34,150 183 00:09:34,150 --> 00:09:37,200 Możesz otrzymać zakresy całkowitymi z okrężnicy. 184 00:09:37,200 --> 00:09:41,840 Więc 2,5 daje wektor wszystkich liczb od 2 do 5. 185 00:09:41,840 --> 00:09:44,530 >> Tablice indeksowane są jednym, które śruby wiele osób 186 00:09:44,530 --> 00:09:47,540 nawet jeśli są z więcej Typowe języki programowania, 187 00:09:47,540 --> 00:09:50,450 jak C, gdzie większość rzeczy są zero-indeksowane. 188 00:09:50,450 --> 00:09:54,420 Ponownie, jest to, gdzie dziedzictwo R w jako język dla jak nie 189 00:09:54,420 --> 00:09:56,560 profesjonalnych programistów przychodzi. 190 00:09:56,560 --> 00:09:59,680 Jeśli jesteś socjolog lub ekonomista, czy coś 191 00:09:59,680 --> 00:10:01,980 i starasz się używać R w zasadzie jako dodatek 192 00:10:01,980 --> 00:10:03,832 aby twój ważniejsze pracy zawodowej, 193 00:10:03,832 --> 00:10:06,040 masz zamiar znaleźć jeden indeksowania nieco bardziej naturalne. 194 00:10:06,040 --> 00:10:09,890 Ponieważ rozpocząć odliczanie na 1 w codziennym życiu, a nie 0. 195 00:10:09,890 --> 00:10:13,260 >> For-pętli, to jest podobne do foreach budowy w PHP, 196 00:10:13,260 --> 00:10:17,090 którego dostaniesz się do nauczyć in-- wkrótce. 197 00:10:17,090 --> 00:10:22,540 Która jest dla wartości w wektorze i to możesz robić rzeczy, o wartości. 198 00:10:22,540 --> 00:10:24,040 PUBLICZNOŚCI: To się wydarzyło w wykładzie. 199 00:10:24,040 --> 00:10:26,248 CONNOR HARRIS: Och, to wymyślić wykład, doskonałe. 200 00:10:26,248 --> 00:10:29,815 PUBLICZNOŚCI: Przypisanie, jest to powinien wskazywać od prawej do lewej? 201 00:10:29,815 --> 00:10:31,440 CONNOR HARRIS: Od prawej do lewej, tak. 202 00:10:31,440 --> 00:10:34,720 Możesz myśleć o tym jak wartość na prawo wepchnął do zmiennej 203 00:10:34,720 --> 00:10:36,240 po lewej. 204 00:10:36,240 --> 00:10:36,781 PUBLICZNOŚCI: OK. 205 00:10:36,781 --> 00:10:39,770 206 00:10:39,770 --> 00:10:42,330 >> CONNOR HARRIS: I w końcu Składnia funkcji jest nieco dziwne. 207 00:10:42,330 --> 00:10:48,460 Masz foo nazwa funkcji, przypisany do tej funkcji słów kluczowych, a następnie 208 00:10:48,460 --> 00:10:51,530 przez wszystkich argumentów, a następnie Ciało funkcji po tym. 209 00:10:51,530 --> 00:10:53,280 Znowu te rzeczy mogą wydawać się nieco dziwne. 210 00:10:53,280 --> 00:10:57,181 Będą się drugą naturą po pracy z językiem na trochę. 211 00:10:57,181 --> 00:10:58,930 Więc wektorów, sposób skonstruować wektor 212 00:10:58,930 --> 00:11:04,550 jest wpiszesz C, co jest kluczowe, a następnie wszystkie numery, które chcesz lub ciągów 213 00:11:04,550 --> 00:11:06,490 lub cokolwiek. 214 00:11:06,490 --> 00:11:07,995 Argumenty być również wektory. 215 00:11:07,995 --> 00:11:09,620 Ale wynikowa tablica zostanie spłaszczona. 216 00:11:09,620 --> 00:11:14,385 Tak więc nie można mieć tablice miarę niektóre elementy są pojedyncze numery 217 00:11:14,385 --> 00:11:17,010 i niektóre elementy są same tablice. 218 00:11:17,010 --> 00:11:20,010 >> Więc jeśli starają się skonstruować Tablica była pierwszym elementem jest 4 219 00:11:20,010 --> 00:11:22,370 i drugi element jest 3,5 tablica będziesz 220 00:11:22,370 --> 00:11:25,890 po prostu tablicy trzech elementów, 4,3,5. 221 00:11:25,890 --> 00:11:27,760 Nie mogą one być typu mieszanego. 222 00:11:27,760 --> 00:11:32,290 Jeśli próbujesz czytać i pisać poza granice wektora 223 00:11:32,290 --> 00:11:36,640 dostaniesz tę wartość o nazwie NA co oznacza braku wartości. 224 00:11:36,640 --> 00:11:39,900 I jest przeznaczona do jak statystyków, którzy 225 00:11:39,900 --> 00:11:43,080 Pracujemy z niekompletnych zestawów danych. 226 00:11:43,080 --> 00:11:46,460 >> Jeśli stosuje się funkcję, która podobno wziąć tylko jeden numer do tablicy 227 00:11:46,460 --> 00:11:49,220 to, co dostaniesz, tym funkcja map na tablicy. 228 00:11:49,220 --> 00:11:52,130 Więc jeśli funkcja powiedzmy trwa liczba i zwraca go kwadratowych. 229 00:11:52,130 --> 00:11:58,170 Ubiegać się, że do tablicy 2,3,5 Co dostaniesz jest tablica 4,9,25. 230 00:11:58,170 --> 00:12:00,010 >> I to jest bardzo przydatne bo to oznacza, że 231 00:12:00,010 --> 00:12:03,374 nie trzeba pisać dla pętli dla robi bardzo prostych rzeczy, takich jak stosowanie 232 00:12:03,374 --> 00:12:05,040 funkcja dla wszystkich członków zestawu danych. 233 00:12:05,040 --> 00:12:08,557 Które jeśli pracujesz z dużymi zestawy danych, trzeba zrobić wiele. 234 00:12:08,557 --> 00:12:10,390 Funkcje binarne są stosowane wpis wpisem. 235 00:12:10,390 --> 00:12:12,430 Pójdę do tego. 236 00:12:12,430 --> 00:12:16,750 Można uzyskać do nich dostęp z tablicami lub wektory z nawiasach kwadratowych. 237 00:12:16,750 --> 00:12:22,300 Wsporniki tak nazwa wektora kwadratowych 1 daje pierwszy element. 238 00:12:22,300 --> 00:12:25,510 Nazwa Wektor nawiasy kwadratowe 2 daje drugi element. 239 00:12:25,510 --> 00:12:27,530 >> Możesz przejść na wektorze indeksów i będziesz 240 00:12:27,530 --> 00:12:29,640 wrócić na zasadzie czynnik sub. 241 00:12:29,640 --> 00:12:34,990 Więc można zrobić wektor wsporniki Nazwa C, 2,4 i dostaniesz się wektor zawierający 242 00:12:34,990 --> 00:12:38,804 Drugi i czwarty elementy tablicy. 243 00:12:38,804 --> 00:12:40,720 A jeśli chcesz po prostu Szybkie podsumowanie statystyki 244 00:12:40,720 --> 00:12:47,529 wektora jak międzykwartylowymi Zakres, średnia, maksymalna, niezależnie, 245 00:12:47,529 --> 00:12:49,820 możesz po prostu wpisać podsumowanie Nazwa wektorowych i się o tym przekonać. 246 00:12:49,820 --> 00:12:52,680 To naprawdę nie jest przydatne w programowania, ale jeśli grasz 247 00:12:52,680 --> 00:12:55,990 wokół zbiorów danych, jest to przydatne. 248 00:12:55,990 --> 00:12:58,650 >> Matrices-- zasadzie wyższe tablice jednowymiarowe. 249 00:12:58,650 --> 00:13:01,190 Mają ten specjalnej składni notacji. 250 00:13:01,190 --> 00:13:07,620 Matrix z tablicą, która dostaje wypełniony in-- Niestety, macierz z danymi, 251 00:13:07,620 --> 00:13:09,780 Liczba wierszy, liczba kolumn. 252 00:13:09,780 --> 00:13:13,180 Jeśli masz jakieś dane, to wypełnia tablica w zasadzie idzie od góry do dołu 253 00:13:13,180 --> 00:13:13,380 pierwszy. 254 00:13:13,380 --> 00:13:14,190 Następnie lewej do prawej. 255 00:13:14,190 --> 00:13:15,030 Tak, tak. 256 00:13:15,030 --> 00:13:17,809 257 00:13:17,809 --> 00:13:19,600 I R ma wbudowany mnożenia macierzy, 258 00:13:19,600 --> 00:13:24,310 dekompozycji spektralnej, diagonalizacja, wiele rzeczy. 259 00:13:24,310 --> 00:13:27,785 Jeśli chcesz wyższa wymiarowa Macierze tak 3, 4, 5, 260 00:13:27,785 --> 00:13:29,410 lub cokolwiek wymiary można to zrobić. 261 00:13:29,410 --> 00:13:34,400 Składnia jest tablica słabe wynosi c, Następnie lista wymiarów. 262 00:13:34,400 --> 00:13:38,620 Więc jeśli chcesz 4-wymiarowej tablicy o wymiarach 4, 7, 8, 9, tablica, 263 00:13:38,620 --> 00:13:45,470 słabe równa c (4,7,8,9). 264 00:13:45,470 --> 00:13:51,180 >> Masz dostęp do poszczególnych wartości z nawiasami Pierwszy wpis przecinek drugi wpis. 265 00:13:51,180 --> 00:13:54,870 Możesz dostać całe plastry wierszy i kolumn. 266 00:13:54,870 --> 00:13:59,900 Z tej niekompletnej składni to tylko numer wiersza lub kolumny przecinkami przecinek 267 00:13:59,900 --> 00:14:00,400 numer. 268 00:14:00,400 --> 00:14:02,874 269 00:14:02,874 --> 00:14:04,540 Więc listy są rodzajem związane tablicy. 270 00:14:04,540 --> 00:14:06,360 Mają tu własną składnię. 271 00:14:06,360 --> 00:14:08,320 Znowu nie gorączkowo skopiować wszystkie dół. 272 00:14:08,320 --> 00:14:11,370 To jest tak, że ludzie przechodzi slajdów później 273 00:14:11,370 --> 00:14:13,089 mają to wszystko w miłej odniesienia. 274 00:14:13,089 --> 00:14:16,130 A to stanie się bardzo naturalne raz I rzeczywiście chodzić po pokazach. 275 00:14:16,130 --> 00:14:19,295 276 00:14:19,295 --> 00:14:20,920 Więc to zawiera wykaz zasadzie związane tablice. 277 00:14:20,920 --> 00:14:27,040 Możesz uzyskać dostęp do wartości z nazwa listy, znak dolara, klucz. 278 00:14:27,040 --> 00:14:31,370 Więc jeśli lista jest o nazwie foo, następnie można go w ten sposób. 279 00:14:31,370 --> 00:14:37,032 Możesz dostać całą parę klucz-wartość przekazując na placu indeksu wspornika. 280 00:14:37,032 --> 00:14:39,240 Jeśli czytasz z nieistniejącego klucz, otrzymasz wartość null. 281 00:14:39,240 --> 00:14:41,150 Nie będzie błędem. 282 00:14:41,150 --> 00:14:43,590 Chodzi o to, R zrobi, jak wiele z wartością null, jak to możliwe. 283 00:14:43,590 --> 00:14:46,580 A to może oznaczać, że jeśli jesteś Nie spodziewając się zerowa się 284 00:14:46,580 --> 00:14:51,840 jakiejś liście odczytu, dostaniesz niektóre nieprzewidywalne błędy dalej w dół 285 00:14:51,840 --> 00:14:52,620 linia. 286 00:14:52,620 --> 00:14:54,890 >> Stało się to dla mnie moja praca wakacyjna, kiedy byłem przy użyciu R 287 00:14:54,890 --> 00:14:58,410 gdzie zmieniłem jak pewna Lista została zdefiniowana w jednym miejscu 288 00:14:58,410 --> 00:15:05,410 ale nie później zmienić na Kod, który odczytać wartości z niego. 289 00:15:05,410 --> 00:15:10,190 A więc co się stało byłem odczyt wartości null z tej listy, 290 00:15:10,190 --> 00:15:13,090 przekazując je do funkcji, i jest bardzo zmieszany 291 00:15:13,090 --> 00:15:16,000 kiedy mam wszystkie rodzaje losowe nieskończoności pojawiają się 292 00:15:16,000 --> 00:15:16,790 w tej funkcji. 293 00:15:16,790 --> 00:15:20,730 Bo jeśli się pewna maksymalna lub minimalne funkcje na null, 294 00:15:20,730 --> 00:15:22,570 dostaniesz wartości nieskończone się. 295 00:15:22,570 --> 00:15:26,400 296 00:15:26,400 --> 00:15:29,180 >> Ramki danych, są podklasą listy. 297 00:15:29,180 --> 00:15:31,170 Każda wartość jest wektorem o tej samej długości. 298 00:15:31,170 --> 00:15:34,220 I są one wykorzystywane do prezentacji, w zasadzie, tabele danych. 299 00:15:34,220 --> 00:15:36,175 Jest to składnia inicjalizacji. 300 00:15:36,175 --> 00:15:38,800 To wszystko znowu znacznie wyraźniejsze, gdy pojawi się demo. 301 00:15:38,800 --> 00:15:42,240 302 00:15:42,240 --> 00:15:44,240 I miłą rzeczą ramki danych jest to, że Ciebie 303 00:15:44,240 --> 00:15:49,380 można nadać nazwy wszystkich kolumn oraz nazwy wszystkich wierszy. 304 00:15:49,380 --> 00:15:53,890 I tak, że umożliwia dostęp je nieco bardziej przyjazny. 305 00:15:53,890 --> 00:15:59,130 Również w tym jest to, jak większość funkcji, które czytać dane z arkuszy kalkulacyjnych Excel 306 00:15:59,130 --> 00:16:03,820 lub pliki tekstowe, na przykład będą czytać w swoich danych. 307 00:16:03,820 --> 00:16:07,555 Wsadzą go do jakieś ramki danych. 308 00:16:07,555 --> 00:16:09,680 Więc functions-- funkcji Składnia jest nieco dziwne. 309 00:16:09,680 --> 00:16:16,160 Ponownie jest to nazwa funkcji, cedować tę funkcję słów kluczowych, a następnie 310 00:16:16,160 --> 00:16:17,900 lista argumentów. 311 00:16:17,900 --> 00:16:24,080 Więc jest kilka rzeczy, o tym, jak funkcjonuje tu pracować. 312 00:16:24,080 --> 00:16:28,170 Z jednej strony, można rzeczywiście przypisać Wartości domyślne do niektórych argumentów. 313 00:16:28,170 --> 00:16:32,910 Więc można powiedzieć, R1 equals-- można powiedzieć foo 314 00:16:32,910 --> 00:16:38,290 Jest to funkcja gdzie R1 wynosi co Domyślnie, jeśli użytkownik określa, 315 00:16:38,290 --> 00:16:39,090 żadne argumenty. 316 00:16:39,090 --> 00:16:41,932 W przeciwnym razie, to co mu się wprowadzić. 317 00:16:41,932 --> 00:16:44,140 I to jest bardzo przydatne ponieważ wielu naszych funkcji 318 00:16:44,140 --> 00:16:47,910 mają często kilkadziesiąt lub setki argumentów. 319 00:16:47,910 --> 00:16:51,210 Na przykład te, do kreślenia wykresy lub kreślenia Wykresy rozrzutu 320 00:16:51,210 --> 00:16:54,430 mają argumenty, które kontrolują wszystko z tytułu oraz osi 321 00:16:54,430 --> 00:16:59,512 Etykiety do koloru linii regresji. 322 00:16:59,512 --> 00:17:01,470 A więc jeśli nie chcesz aby ludzie określić 323 00:17:01,470 --> 00:17:04,050 każdy z nich setki argumentów 324 00:17:04,050 --> 00:17:07,674 kontrolowanie każdego aspektu działka lub regresji lub cokolwiek, 325 00:17:07,674 --> 00:17:09,299 miło jest mieć te wartości domyślne. 326 00:17:09,299 --> 00:17:12,700 327 00:17:12,700 --> 00:17:19,146 >> I wtedy można rzeczywiście Napisać, jak widzieliście tutaj. 328 00:17:19,146 --> 00:17:22,869 Albo znaleźć lepszy przykład. 329 00:17:22,869 --> 00:17:28,690 Gdy funkcje nazwać można faktycznie Nazywamy je używając nazwy argumentów. 330 00:17:28,690 --> 00:17:33,919 Więc tutaj jest przykład konstruktor macierz. 331 00:17:33,919 --> 00:17:34,960 To trwa trzy argumenty. 332 00:17:34,960 --> 00:17:36,760 Zazwyczaj masz dane, który to wektor. 333 00:17:36,760 --> 00:17:38,920 Musisz N wiersz, który jest liczbą rzędów. 334 00:17:38,920 --> 00:17:41,160 Musisz N cols-- liczbę kolumn. 335 00:17:41,160 --> 00:17:43,920 Rzecz w tym, jeśli wpiszesz N wierszy jest równa co 336 00:17:43,920 --> 00:17:46,520 i N kol równa cokolwiek, kiedy dzwonisz z tej funkcji, 337 00:17:46,520 --> 00:17:47,770 rzeczywiście można odwrócić je. 338 00:17:47,770 --> 00:17:51,590 Dzięki czemu można umieścić N i N col pierwszy wiersz Drugi i będzie żadnej różnicy. 339 00:17:51,590 --> 00:17:54,660 Więc to jest ładny mały cecha. 340 00:17:54,660 --> 00:17:56,260 >> Czy import i eksport. 341 00:17:56,260 --> 00:18:00,010 Może to być wykonane, w zasadzie. 342 00:18:00,010 --> 00:18:03,816 Istnieją także udogodnienia, aby napisać dowolna R obiektów do pliku binarnego 343 00:18:03,816 --> 00:18:05,190 a następnie odczytać je ponownie później. 344 00:18:05,190 --> 00:18:08,030 Co jest przydatne jeśli robisz duża sesja interaktywna R 345 00:18:08,030 --> 00:18:12,850 i trzeba zapisać rzeczy bardzo szybko. 346 00:18:12,850 --> 00:18:16,460 Domyślnie R posiada katalog roboczy które pliki są wypisane na 347 00:18:16,460 --> 00:18:19,410 i odczytać z powrotem. 348 00:18:19,410 --> 00:18:22,350 Możesz zobaczyć, które z getwg, zmienić go setdw. 349 00:18:22,350 --> 00:18:25,630 Nic szczególnie interesujące tutaj 350 00:18:25,630 --> 00:18:28,270 >> Więc teraz rzeczywiste statystyki stuff-- regresji multilinear. 351 00:18:28,270 --> 00:18:30,960 352 00:18:30,960 --> 00:18:34,910 Więc zwykłej składni jest nieco skomplikowane. 353 00:18:34,910 --> 00:18:37,260 Model jest dużym obiektem, w zasadzie. 354 00:18:37,260 --> 00:18:39,910 Zostaje przypisany do lm, który jest wywołanie funkcji. 355 00:18:39,910 --> 00:18:43,840 Pierwszy element, y Tylda x1 oraz cokolwiek. 356 00:18:43,840 --> 00:18:46,574 357 00:18:46,574 --> 00:18:47,990 Moja składnia tutaj jest nieco mylące. 358 00:18:47,990 --> 00:18:49,490 Jestem bardzo przykro, to Jest to standardowy sposób 359 00:18:49,490 --> 00:18:50,990 że książki informatyka to zrobić. 360 00:18:50,990 --> 00:18:54,890 Ale to jest trochę dziwne. 361 00:18:54,890 --> 00:18:58,200 >> Tak w zasadzie, to lm nawiasy, pierwszy element 362 00:18:58,200 --> 00:19:06,730 jest zmienna-- przykro, zależne Zmienna x1 oraz x2 tylda oraz 363 00:19:06,730 --> 00:19:10,910 jednak wiele niezależnych Zmienne masz. 364 00:19:10,910 --> 00:19:14,240 I wtedy mogą one być Wektory, wszystkie tę samą długość. 365 00:19:14,240 --> 00:19:16,220 Lub mogą być kolumny Nagłówki w ramce danych 366 00:19:16,220 --> 00:19:18,553 że po prostu określić w Drugi argument ramka danych. 367 00:19:18,553 --> 00:19:23,270 368 00:19:23,270 --> 00:19:26,380 >> Można również określić bardziej złożony wzór 369 00:19:26,380 --> 00:19:31,990 więc nie musisz się liniowo regresji zmiennej zależnej jeden, 370 00:19:31,990 --> 00:19:34,440 lub jeden wektor na istniejącym wcześniej wektora. 371 00:19:34,440 --> 00:19:38,070 Można to zrobić, na przykład, składowa wektora y do kwadratu plus 1 372 00:19:38,070 --> 00:19:42,100 i regresu, że przeciwko zaloguj jakiegoś innego wektora. 373 00:19:42,100 --> 00:19:45,200 Można drukować streszczenia Model z tego polecenia nazwie 374 00:19:45,200 --> 00:19:48,607 summary-- tylko podsumowanie parens modelu. 375 00:19:48,607 --> 00:19:50,190 Znowu coś jeszcze powinienem wyjaśnić. 376 00:19:50,190 --> 00:19:55,407 377 00:19:55,407 --> 00:19:58,615 Coś innego, że będzie się poprawił kiedy slajdy udać się w internecie. 378 00:19:58,615 --> 00:20:01,127 379 00:20:01,127 --> 00:20:03,210 Jeśli chcesz po prostu obliczyć prosta korelacja 380 00:20:03,210 --> 00:20:09,170 można użyć korelacji wektor 1 wektor 2 podstawową funkcją. 381 00:20:09,170 --> 00:20:11,856 Metoda ta jest domyślnie Korelacji Pearsona. 382 00:20:11,856 --> 00:20:13,480 To są standardowe, które możesz zrobić. 383 00:20:13,480 --> 00:20:15,990 Istnieje również Spearmana oraz Korelacje Kendell 384 00:20:15,990 --> 00:20:19,530 które są niektóre odmiany korelacji rang zamówienie. 385 00:20:19,530 --> 00:20:23,600 Dobrze, że nie obliczyć produkt momenty między samych wektorach, 386 00:20:23,600 --> 00:20:28,511 ale od rangi zamówień nosiciela. 387 00:20:28,511 --> 00:20:29,510 Wytłumaczę to później. 388 00:20:29,510 --> 00:20:30,120 >> PUBLICZNOŚCI: Szybkie pytanie 389 00:20:30,120 --> 00:20:30,360 >> CONNER HARRIS: Jasne. 390 00:20:30,360 --> 00:20:33,151 >> PUBLICZNOŚCI: Więc kiedy jesteś obliczania za proste korelacje zrobić 391 00:20:33,151 --> 00:20:37,655 można zakładać, że istnieje statystyczna znaczenie dla korelacji? 392 00:20:37,655 --> 00:20:39,030 CONNER HARRIS: Nie musisz. 393 00:20:39,030 --> 00:20:41,840 394 00:20:41,840 --> 00:20:43,960 Lm jest w zasadzie tylko maszyna. 395 00:20:43,960 --> 00:20:47,690 To zajmie dwie rzeczy i będzie wypluwać 396 00:20:47,690 --> 00:20:49,770 Współczynniki dla najlepszego dopasowania linii. 397 00:20:49,770 --> 00:20:52,310 Informuje również standardowe błędy na tych współczynników. 398 00:20:52,310 --> 00:20:55,865 I to ci powiem, jak jest przechwytują istotna statystycznie 399 00:20:55,865 --> 00:20:56,740 lub różnica od 0. 400 00:20:56,740 --> 00:20:59,400 Czy nachylenie najlepszy dopasowana linia statystycznie 401 00:20:59,400 --> 00:21:01,510 różni się od zera, i tak dalej. 402 00:21:01,510 --> 00:21:06,260 Tak zakłada nic, myślę, że jest najlepsza odpowiedź na Twoje pytanie. 403 00:21:06,260 --> 00:21:07,410 OK. 404 00:21:07,410 --> 00:21:14,650 >> Plotting-- więc głównym powodem zalecana używać R, jak regresji multilinear. 405 00:21:14,650 --> 00:21:17,320 Zasadniczo każdy język ma jakiś obiekt do tego. 406 00:21:17,320 --> 00:21:21,365 Szczerze R i składnię dla regresji jest nieco zaawansowanych. 407 00:21:21,365 --> 00:21:22,990 Ale kreślenia gdzie to naprawdę błyszczy. 408 00:21:22,990 --> 00:21:28,090 >> Funkcja koń pociągowy jest działka i trwa dwa wektory, X i Y. 409 00:21:28,090 --> 00:21:33,010 A potem elipsy oznacza bardzo Duża liczba dodatkowych argumentów, 410 00:21:33,010 --> 00:21:39,190 kontrolować wszystko z tytułów do kolorów różnych linii lub różnych punktach, 411 00:21:39,190 --> 00:21:40,200 od rodzaju powierzchni. 412 00:21:40,200 --> 00:21:42,250 Możesz mieć rozrzut działki lub działek linii. 413 00:21:42,250 --> 00:21:47,900 414 00:21:47,900 --> 00:21:49,710 >> [Niesłyszalne] 2 wektory o tej samej długości. 415 00:21:49,710 --> 00:21:53,780 Możesz poprzedzić to z dołączyć ramka danych w skrypcie. 416 00:21:53,780 --> 00:22:01,220 A to pozwoli Ci po prostu użyć kolumny nagłówki zamiast osobnych wektorach. 417 00:22:01,220 --> 00:22:05,410 Możesz dodać najlepszej zgodności i lokalnym Krzywe regresji na wykresie. 418 00:22:05,410 --> 00:22:09,390 >> Wymienione Te polecenia tutaj, ab linii i linii, 419 00:22:09,390 --> 00:22:11,640 domyślnie nich dostać zapisane w oknach pop-up 420 00:22:11,640 --> 00:22:15,560 ponieważ zakłada się, że używasz R interaktywnie. 421 00:22:15,560 --> 00:22:17,310 Jeśli nie można Napisać dwa pliki, które 422 00:22:17,310 --> 00:22:21,600 są w naprawdę dowolnym formacie, który chcesz. 423 00:22:21,600 --> 00:22:25,410 Niestety, mam literówkę zdałem sobie sprawę. 424 00:22:25,410 --> 00:22:30,887 425 00:22:30,887 --> 00:22:32,720 Jeśli chcesz, aby otworzyć inne urządzenie graficzne 426 00:22:32,720 --> 00:22:39,200 można użyć tej funkcji o nazwie PNG lub JPEG lub wiele innych formatów graficznych. 427 00:22:39,200 --> 00:22:42,319 A możesz napisać wykresy bez względu na nazwę pliku można określić. 428 00:22:42,319 --> 00:22:45,110 Aby anulować, że trzeba use-- Nie piszę tego w slide-- 429 00:22:45,110 --> 00:22:49,650 ale jest to funkcja o nazwie dev Kropka się, że nie potrzebuje żadnych argumentów. 430 00:22:49,650 --> 00:22:51,517 >> Następnie są obiekty dla 3D kreślenia 431 00:22:51,517 --> 00:22:53,350 i kontur kreślenia jeśli chcesz, aby 432 00:22:53,350 --> 00:22:55,700 wykresy dwóch zmiennych niezależnych. 433 00:22:55,700 --> 00:22:57,150 Nie będę się do nich już teraz. 434 00:22:57,150 --> 00:22:59,130 >> Istnieją również pewne wyposażenie dla animacji 435 00:22:59,130 --> 00:23:01,300 te są zwykle utrzymywane przez osoby trzecie. 436 00:23:01,300 --> 00:23:06,330 Zrobiłem animacje z wykresami R, ale nie zostały wykorzystane te osoby trzeciej 437 00:23:06,330 --> 00:23:06,940 biblioteki. 438 00:23:06,940 --> 00:23:09,929 Tak naprawdę nie mogę zaświadczyć do tego, jak dobre są. 439 00:23:09,929 --> 00:23:12,220 Co polecam, jeśli chcesz do animacji z wykorzystaniem R 440 00:23:12,220 --> 00:23:16,480 to można napisać wszystko ramki dla animacji 441 00:23:16,480 --> 00:23:18,470 a następnie można użyć Trzeci program-- strona 442 00:23:18,470 --> 00:23:23,630 te nazywane są typowe FFmpeg lub ImageMagick-- do szycia 443 00:23:23,630 --> 00:23:26,540 wszystkich klatek w jednej animacji. 444 00:23:26,540 --> 00:23:28,380 >> Więc czas na demo. 445 00:23:28,380 --> 00:23:31,030 446 00:23:31,030 --> 00:23:37,189 Więc jeśli używasz jakiegokolwiek systemu Unix jak która jest Linux BSD, ale kto używa BSD. 447 00:23:37,189 --> 00:23:39,730 OS X otworzyć okno terminala i Type R w wierszu polecenia. 448 00:23:39,730 --> 00:23:42,820 Jeśli masz R studio lub tym podobne, które również pracuje. 449 00:23:42,820 --> 00:23:46,270 Użytkownicy systemu Windows powinni być w stanie znaleźć R w menu Start. 450 00:23:46,270 --> 00:23:50,390 Należy nasuwać jak R x64 3 pkt cokolwiek. 451 00:23:50,390 --> 00:23:53,110 Otwórz, że tam na górze. 452 00:23:53,110 --> 00:23:58,850 >> Więc teraz niech mi tylko otworzyć okno terminala. 453 00:23:58,850 --> 00:24:02,562 Dobrze, wyszukiwania. 454 00:24:02,562 --> 00:24:03,520 PUBLICZNOŚCI: Command + Spacja 455 00:24:03,520 --> 00:24:06,675 CONNER HARRIS: Command-Space, dziękuję. 456 00:24:06,675 --> 00:24:10,030 I zwykle nie używać komputerów Mac. 457 00:24:10,030 --> 00:24:13,310 Terminal, pokazać nowe okno. 458 00:24:13,310 --> 00:24:18,120 Nowe okno to ustawienia podstawowe, R. Więc powinieneś dostać 459 00:24:18,120 --> 00:24:22,230 Komunikat powitalny, coś takiego. 460 00:24:22,230 --> 00:24:31,060 >> Więc używam R interaktywnie. 461 00:24:31,060 --> 00:24:32,719 Możesz także napisać R skrypty oczywiście. 462 00:24:32,719 --> 00:24:34,510 Zasadniczo skrypty uruchamiane dokładnie taki sam sposób jak 463 00:24:34,510 --> 00:24:40,250 jakbyś siedział przy komputerze wpisując w każdym wierszu jedną na raz. 464 00:24:40,250 --> 00:24:42,660 Warto więc zacząć od wektora. 465 00:24:42,660 --> 00:24:46,230 Strzałka C 1, 2. 466 00:24:46,230 --> 00:24:49,400 1, 2, 4, 467 00:24:49,400 --> 00:24:50,050 Dobrze, jasne. 468 00:24:50,050 --> 00:24:51,630 Mogę sprawić, że rozmiar czcionki większe. 469 00:24:51,630 --> 00:24:53,030 >> PUBLICZNOŚCI: Command-Plus 470 00:24:53,030 --> 00:24:53,650 >> CONNER HARRIS: Command-Plus. 471 00:24:53,650 --> 00:24:54,191 Command-Plus. 472 00:24:54,191 --> 00:24:57,610 473 00:24:57,610 --> 00:25:00,370 Wszystko w porządku, jak to jest? 474 00:25:00,370 --> 00:25:00,870 Dobry? 475 00:25:00,870 --> 00:25:01,551 OK. 476 00:25:01,551 --> 00:25:03,300 Więc zacznijmy od deklarowania listę wektorowych. 477 00:25:03,300 --> 00:25:08,710 Zrobić, strzałka, C 1,2,4. 478 00:25:08,710 --> 00:25:11,181 Możemy zobaczyć. 479 00:25:11,181 --> 00:25:12,680 Nie przejmuj się tam wspornika. 480 00:25:12,680 --> 00:25:18,590 Wsporniki są więc jeśli wydrukować bardzo długie tablice, możemy tam, gdzie jesteś. 481 00:25:18,590 --> 00:25:26,987 Przykładem może być, jeśli po prostu chcę zakresie od 2 do 200. 482 00:25:26,987 --> 00:25:28,820 Gdybym drukowane bardzo długa tablica, wsporniki 483 00:25:28,820 --> 00:25:31,060 są tylko tak mogę utrzymać których wskaźnik utwór 484 00:25:31,060 --> 00:25:33,250 jesteśmy na razie szukam przez to wizualnie. 485 00:25:33,250 --> 00:25:36,570 486 00:25:36,570 --> 00:25:38,280 Tak czy inaczej, mamy. 487 00:25:38,280 --> 00:25:43,326 >> Więc powiedziałem wcześniej, że tablice interakcji bardzo ładnie, na przykład, 488 00:25:43,326 --> 00:25:44,450 jednoargumentowe operacje tego. 489 00:25:44,450 --> 00:25:46,500 Więc co myślisz będę uzyskać, jeśli wpisuję plus 1? 490 00:25:46,500 --> 00:25:49,630 491 00:25:49,630 --> 00:25:51,140 Tak. 492 00:25:51,140 --> 00:25:54,250 Prawo, teraz zrobię to inna tablica. 493 00:25:54,250 --> 00:26:01,650 Powiedzmy b c 20,40, 80. 494 00:26:01,650 --> 00:26:03,400 Więc co o tym myślisz polecenie to zrobić? 495 00:26:03,400 --> 00:26:09,962 496 00:26:09,962 --> 00:26:10,670 Dodać elementy. 497 00:26:10,670 --> 00:26:14,950 I tak w zasadzie to, co robi. 498 00:26:14,950 --> 00:26:16,740 Więc to jest bardzo wygodne. 499 00:26:16,740 --> 00:26:23,800 Więc jak się to zrobić. do jest, powiedzmy, 6 razy od 1 do 10. 500 00:26:23,800 --> 00:26:26,789 501 00:26:26,789 --> 00:26:28,830 Więc to, co chcę, aby zobaczyć zawarte, jak myślisz? 502 00:26:28,830 --> 00:26:37,110 503 00:26:37,110 --> 00:26:38,110 Więc wszystkie wielokrotności sześciu. 504 00:26:38,110 --> 00:26:42,170 Teraz, co myślisz się stanie, jeśli mogę to zrobić? 505 00:26:42,170 --> 00:26:48,090 Zrobię to nieco jaśniejszy, C, C. 506 00:26:48,090 --> 00:26:50,365 Więc co się dzieje, prawda myślę, jeśli mogę to zrobić? 507 00:26:50,365 --> 00:26:51,488 C Plus. 508 00:26:51,488 --> 00:26:55,550 509 00:26:55,550 --> 00:26:56,050 [NIESŁYSZALNY] 510 00:26:56,050 --> 00:26:58,552 511 00:26:58,552 --> 00:27:02,350 >> PUBLICZNOŚCI: albo błąd albo tylko dodaje pierwsze trzy elementy. 512 00:27:02,350 --> 00:27:04,510 >> CONNER HARRIS: Nie całkiem. 513 00:27:04,510 --> 00:27:05,522 To jest to, co mamy. 514 00:27:05,522 --> 00:27:08,910 Co się dzieje, jest krótszy tablica, a, ale cyklicznie. 515 00:27:08,910 --> 00:27:13,990 Więc dostaliśmy 124, 124, 124. 516 00:27:13,990 --> 00:27:15,710 Tak. 517 00:27:15,710 --> 00:27:18,940 A w zasadzie, można zobaczyć to zachowanie przed, plus 1, 518 00:27:18,940 --> 00:27:22,190 jako podklasa tego zachowania, gdzie najkrótszy tablica jest tylko numer 519 00:27:22,190 --> 00:27:25,410 1, która jest tablicą jeden element. 520 00:27:25,410 --> 00:27:27,740 Ja po prostu mówiąc wektor wszystkich czas zamiast tablicy, 521 00:27:27,740 --> 00:27:30,290 bo to, co r Dokumentacja zwykle. 522 00:27:30,290 --> 00:27:33,070 Jest to zakorzenione c nawykiem. 523 00:27:33,070 --> 00:27:37,590 >> OK, a więc teraz mamy taką tablicę. 524 00:27:37,590 --> 00:27:38,830 Mamy więc tę tablicę, c. 525 00:27:38,830 --> 00:27:41,380 Możemy podsumowanie statystyki dotyczące c, podsumowania c. 526 00:27:41,380 --> 00:27:46,920 527 00:27:46,920 --> 00:27:48,280 I to jest miłe. 528 00:27:48,280 --> 00:27:51,070 529 00:27:51,070 --> 00:27:52,670 Więc teraz zróbmy kilka rzeczy macierzy. 530 00:27:52,670 --> 00:27:56,160 Powiedzmy, że m jest macierzą. 531 00:27:56,160 --> 00:27:57,780 Zróbmy mu trzy przez trzy jednym. 532 00:27:57,780 --> 00:28:01,630 Tak nrows równe 3, a ncols równa 3. 533 00:28:01,630 --> 00:28:04,190 534 00:28:04,190 --> 00:28:10,710 Oraz dla danych niech do-- więc co myślisz to zrobić? 535 00:28:10,710 --> 00:28:15,310 536 00:28:15,310 --> 00:28:16,580 >> Prawda, że ​​to następny. 537 00:28:16,580 --> 00:28:17,970 To nrow i ncolumn. 538 00:28:17,970 --> 00:28:22,164 539 00:28:22,164 --> 00:28:24,580 Więc co zrobiłem to mam ogłosił trzy na trzy macierzy 540 00:28:24,580 --> 00:28:26,950 a ja przeszedł w tablicy dziewięciu elementów. 541 00:28:26,950 --> 00:28:30,530 Więc logarytmu wszystko Elementy jeden do dziewięciu. 542 00:28:30,530 --> 00:28:33,400 543 00:28:33,400 --> 00:28:37,285 I wszystkie te wartości wypełnić w górę array-- przykro? 544 00:28:37,285 --> 00:28:38,660 PUBLICZNOŚCI: To są podstawy 10 dzienników? 545 00:28:38,660 --> 00:28:41,284 CONNER HARRIS: Nie, dziennik jest logarytmy naturalne, więc baza e. 546 00:28:41,284 --> 00:28:44,886 547 00:28:44,886 --> 00:28:47,010 Tak, jeśli chcesz baza 10 log, myślę, że masz 548 00:28:47,010 --> 00:28:51,620 zalogować cokolwiek, podzielona przez dziennik 10. 549 00:28:51,620 --> 00:28:56,750 I tak dane w [niesłyszalne] tylko wypełnia tablicę, więc od góry do dołu, 550 00:28:56,750 --> 00:28:59,490 Następnie od lewej do prawej. 551 00:28:59,490 --> 00:29:06,890 A jeśli chcesz zrobić jakieś inne tablicy, powiedzmy, że n jest macierzą. 552 00:29:06,890 --> 00:29:10,317 Zróbmy, nie wiem, od 2 do 13. 553 00:29:10,317 --> 00:29:11,900 Albo zrobię coś bardziej interesującego. 554 00:29:11,900 --> 00:29:13,770 Zrobię 2 do 4. 555 00:29:13,770 --> 00:29:15,780 nrow równa, powiedzmy, 3. 556 00:29:15,780 --> 00:29:18,992 Ncol równa 4. 557 00:29:18,992 --> 00:29:20,360 n. 558 00:29:20,360 --> 00:29:22,090 Więc mamy to. 559 00:29:22,090 --> 00:29:26,130 >> A teraz, jeśli chcemy, aby pomnożyć te, zrobilibyśmy razy n procent procent, 560 00:29:26,130 --> 00:29:27,680 bo to n. 561 00:29:27,680 --> 00:29:30,234 562 00:29:30,234 --> 00:29:31,400 I mamy produkty macierzy. 563 00:29:31,400 --> 00:29:33,970 564 00:29:33,970 --> 00:29:37,810 Przez oni droga, nie widzisz, jak kiedy oświadczył, n, 2 do 4 565 00:29:37,810 --> 00:29:43,570 wektor został cyklicznie, aż to wypełnione wszystkie n? 566 00:29:43,570 --> 00:29:45,710 Jeśli chciał wziąć Rozkład wartości własnych, 567 00:29:45,710 --> 00:29:46,960 to jest coś, co możemy zrobić bardzo łatwo. 568 00:29:46,960 --> 00:29:47,709 Możemy zrobić EIGEN n. 569 00:29:47,709 --> 00:29:52,290 570 00:29:52,290 --> 00:29:54,600 A więc jest to nasz pierwszy spotkanie z listy. 571 00:29:54,600 --> 00:29:57,000 >> Więc eigen n jest lista z dwoma kluczami. 572 00:29:57,000 --> 00:29:58,430 Wartości, co jest ta tablica tutaj. 573 00:29:58,430 --> 00:30:01,030 I wektory, które jest ta tablica tutaj. 574 00:30:01,030 --> 00:30:08,240 Więc jeśli chcesz, aby wyodrębnić, powiedzmy, to trzecia kolumna 575 00:30:08,240 --> 00:30:13,080 z matrycy wektory, ponieważ Kolumna na wektory własne są wektory. 576 00:30:13,080 --> 00:30:24,400 Tak więc możemy zrobić vec EIGEN n znak dolara wektory, przecinek 3, z [niesłyszalne]. 577 00:30:24,400 --> 00:30:29,800 578 00:30:29,800 --> 00:30:30,900 Vec. 579 00:30:30,900 --> 00:30:34,100 Czy to, jak można się spodziewać. 580 00:30:34,100 --> 00:30:39,210 >> Potem mówią n razy razy procent vec. 581 00:30:39,210 --> 00:30:42,610 582 00:30:42,610 --> 00:30:48,320 Tak wynika tutaj z pewnością wygląda jeśli zajął trzecie wartość własną tutaj, 583 00:30:48,320 --> 00:30:50,390 co odpowiada trzeci wektor własny. 584 00:30:50,390 --> 00:30:53,190 To po prostu pomnożyć wszystko ten wektor własny, komponent, mądry, 585 00:30:53,190 --> 00:30:53,990 przez wartości własnej. 586 00:30:53,990 --> 00:30:57,760 A to, co by się spodziewać, bo to właśnie wartości własne są. 587 00:30:57,760 --> 00:31:00,890 Czy ktoś tutaj nie podjęte algebry liniowej? 588 00:31:00,890 --> 00:31:02,530 Kilka osób, OK. 589 00:31:02,530 --> 00:31:04,030 Wystarczy włączyć swoje mózgi się na trochę. 590 00:31:04,030 --> 00:31:07,490 591 00:31:07,490 --> 00:31:20,720 I rzeczywiście, jeśli wziąć EIGEN n dolarów wartości 3 razy Vec znak, 592 00:31:20,720 --> 00:31:21,810 dobrze się to samo. 593 00:31:21,810 --> 00:31:24,726 To sformatowane inaczej w rzędzie Wektor zamiast wektora kolumny 594 00:31:24,726 --> 00:31:25,640 ale nic wielkiego. 595 00:31:25,640 --> 00:31:29,430 596 00:31:29,430 --> 00:31:35,170 I tak te są zasadniczo takie miłe rzeczy, które możemy zrobić z macierzami, 597 00:31:35,170 --> 00:31:36,489 wykazać listy. 598 00:31:36,489 --> 00:31:39,030 Powinien wykazać ładne rzeczy na temat funkcji, jak również. 599 00:31:39,030 --> 00:31:41,750 >> Więc say-- [niesłyszalne] Funkcja, call Miejmy 600 00:31:41,750 --> 00:31:51,960 to func przed funkcji n n squared-- w rzeczywistości, to naprawdę nie jest najlepszy. 601 00:31:51,960 --> 00:31:55,632 a, b, kwadratowej oraz b. 602 00:31:55,632 --> 00:31:58,547 603 00:31:58,547 --> 00:32:00,380 Więc jedna rzecz, o Funkcje, ponownie, jest to, że 604 00:32:00,380 --> 00:32:01,963 nie potrzebują wyraźnych oświadczeń powrotne. 605 00:32:01,963 --> 00:32:04,250 Więc można just-- Ostatnie stwierdzenie oceniane 606 00:32:04,250 --> 00:32:07,502 oświadczenie będzie zwracana, lub wartość zwracana. 607 00:32:07,502 --> 00:32:10,460 Więc w tym przypadku, mamy tylko oceny jeden rachunek, kwadrat oraz b. 608 00:32:10,460 --> 00:32:12,043 To będzie wartość domyślna powrotu. 609 00:32:12,043 --> 00:32:14,530 To nie boli, aby umieścić w powrót wartości wyraźnie, 610 00:32:14,530 --> 00:32:16,880 zwłaszcza, jeśli masz do czynienia z Funkcja bardzo skomplikowanej logiki 611 00:32:16,880 --> 00:32:17,380 pływ. 612 00:32:17,380 --> 00:32:18,450 Ale ich nie potrzebują. 613 00:32:18,450 --> 00:32:24,890 Więc teraz możemy zrobić func 5, 1, oraz to jest to czego można się spodziewać. 614 00:32:24,890 --> 00:32:29,146 615 00:32:29,146 --> 00:32:31,270 Coś jeszcze można zrobić, możemy faktycznie funkcjono b 616 00:32:31,270 --> 00:32:33,260 jest równa 1, A równa się 5. 617 00:32:33,260 --> 00:32:36,870 618 00:32:36,870 --> 00:32:40,770 Jeśli więc określić, który numer tutaj, która argumentuje, do której argumentem 619 00:32:40,770 --> 00:32:44,680 w funkcji, można obrócić dookoła wartości te gdziekolwiek chcemy. 620 00:32:44,680 --> 00:32:48,405 >> PUBLICZNOŚCI: Czy istnieje powód napisać go z b 621 00:32:48,405 --> 00:32:52,404 równa, a nie tylko za pomocą numery i przecinek? 622 00:32:52,404 --> 00:32:54,820 CONNER HARRIS: Tak, zwykle to zrobić, jeśli masz funkcje 623 00:32:54,820 --> 00:32:58,540 z wielu argumentów. 624 00:32:58,540 --> 00:33:00,690 To może być często jak flagi, które można by tylko 625 00:33:00,690 --> 00:33:03,130 chcesz używać w rzadkich przypadkach. 626 00:33:03,130 --> 00:33:06,740 I w ten sposób można cię only-- może odnosić się do konkretnych argumentów 627 00:33:06,740 --> 00:33:09,110 że chcesz używać Domyślne wartości dla nie, 628 00:33:09,110 --> 00:33:14,470 i nie musisz się wypisać kilka flag równa false po nich. 629 00:33:14,470 --> 00:33:19,710 Albo mogę napisać to ponownie wartość domyślna wynosi 2, jak b. 630 00:33:19,710 --> 00:33:26,289 I wtedy mogłem zrobić f func, Zrobię, 4, 1, tym razem. 631 00:33:26,289 --> 00:33:28,580 I 17, które jest 4 do kwadratu plus 1, jak można się spodziewać. 632 00:33:28,580 --> 00:33:34,290 >> Ale może również po prostu Nazywamy to z funk 4, 633 00:33:34,290 --> 00:33:36,970 i będę miał 18 lat, z powodu Nie określić b. 634 00:33:36,970 --> 00:33:38,550 Tak b staje się domyślną wartość 2. 635 00:33:38,550 --> 00:33:41,700 636 00:33:41,700 --> 00:33:47,200 >> OK, więc teraz, jeśli jesteś następujące wraz z demo, 637 00:33:47,200 --> 00:33:51,010 wpisz tę linię na twój rozkaz monitować i zobaczyć, co z tego wyjdzie. 638 00:33:51,010 --> 00:33:52,090 Faktycznie, nie rób tego. 639 00:33:52,090 --> 00:33:52,590 Wpisz tego. 640 00:33:52,590 --> 00:33:57,780 641 00:33:57,780 --> 00:34:01,000 Powinieneś otrzymać coś takiego. 642 00:34:01,000 --> 00:34:04,780 Więc mtcars jest wbudowany danych ustawić dla tej demonstracji 643 00:34:04,780 --> 00:34:13,550 cele, które pochodzi with-- że pochodzi W domyślnie z dystrybucji r. 644 00:34:13,550 --> 00:34:19,211 Jest to kompilacja statystyk 1974 numer magazynu Motor Trend w 645 00:34:19,211 --> 00:34:20,710 na szeregu różnych modeli samochodów. 646 00:34:20,710 --> 00:34:28,270 >> Więc nie mil na galon, cylinders-- Nie pamiętam, co disp jest-- KM. 647 00:34:28,270 --> 00:34:31,610 648 00:34:31,610 --> 00:34:32,420 Prawdopodobnie. 649 00:34:32,420 --> 00:34:36,920 Jeśli tylko samochody Google MT, a następnie jeden z pierwszych wyników 650 00:34:36,920 --> 00:34:38,730 będzie od Oficjalna dokumentacja r 651 00:34:38,730 --> 00:34:41,080 i będzie to wyjaśnić wszystkie te pola danych. 652 00:34:41,080 --> 00:34:47,020 Więc waga jest-- wag jest Masa samochodu ton. 653 00:34:47,020 --> 00:34:48,880 P s to czas ćwierć mili. 654 00:34:48,880 --> 00:34:52,409 655 00:34:52,409 --> 00:34:55,850 Więc teraz możemy zrobić jakieś ciekawe rzeczy o samochodach MT jest polem danych. 656 00:34:55,850 --> 00:35:01,640 >> Tak więc możemy robić rzeczy, jak nazwy wierszy, samochody mt. 657 00:35:01,640 --> 00:35:05,490 I to jest lista wszystkich wierszy zbiór danych, które mają nazwy samochodów. 658 00:35:05,490 --> 00:35:10,780 Możemy zrobić colnames, samochody mt to. 659 00:35:10,780 --> 00:35:15,500 Jeśli nie samochody MT, Strona sub-numeryczne, jak 2. 660 00:35:15,500 --> 00:35:18,177 mamy drugą kolumnę z To, co jest butle. 661 00:35:18,177 --> 00:35:19,370 >> PUBLICZNOŚCI: Co zrobiłeś? 662 00:35:19,370 --> 00:35:21,570 >> CONNER HARRIS: Wpisałem mt samochody, wsporniki e, 663 00:35:21,570 --> 00:35:24,180 które dał mi drugi Kolumna z samochodów mt. 664 00:35:24,180 --> 00:35:34,501 665 00:35:34,501 --> 00:35:38,110 Albo, jeśli chcemy wiersz, mogę wpisać mtcars przecinkiem 2, na przykład. 666 00:35:38,110 --> 00:35:41,850 667 00:35:41,850 --> 00:35:46,390 Inne runda 2 przecinek, tak. 668 00:35:46,390 --> 00:35:48,880 A że idzie w swoim wierszu. 669 00:35:48,880 --> 00:35:54,680 To tutaj, po prostu daje ci kolumna, a kolumna jako wektor. 670 00:35:54,680 --> 00:36:04,634 671 00:36:04,634 --> 00:36:06,425 Właśnie uświadomiłem sobie teraz zapomniałem wykazać 672 00:36:06,425 --> 00:36:09,150 kilka fajnych rzeczy o wektorach że można zrobić z indeksów. 673 00:36:09,150 --> 00:36:10,480 Więc pozwól mi to zrobić teraz. 674 00:36:10,480 --> 00:36:17,130 Więc zróbmy c gets-- wprowadzenie to na pause-- 2 razy 1 do 10. 675 00:36:17,130 --> 00:36:21,360 Więc c jest tylko będzie wektor 2 do 20. 676 00:36:21,360 --> 00:36:24,640 Mogę wziąć elementy tak, c2. 677 00:36:24,640 --> 00:36:30,942 Mogę przekazać w wektorze tak, C-- mi pozwolisz 678 00:36:30,942 --> 00:36:34,470 używać innej nazwy niż c, jak vec c. 679 00:36:34,470 --> 00:36:37,591 680 00:36:37,591 --> 00:36:39,340 W zasadzie robię to tak nie dostaniesz 681 00:36:39,340 --> 00:36:45,010 zmieszany pomiędzy C jako Funkcja Konstrukcja wektora, 682 00:36:45,010 --> 00:36:48,800 a następnie c jako nazwy zmiennej. 683 00:36:48,800 --> 00:36:53,120 Vec wsporniki C 4, 5, 7. 684 00:36:53,120 --> 00:36:56,540 To będzie po mnie się czwarty, piąty, siedem elementów macierzy. 685 00:36:56,540 --> 00:37:01,740 Mogę zrobić vec, umieścić w negatywny indeks, jak negatywnym 4. 686 00:37:01,740 --> 00:37:06,500 Że dostanie mi się to z usunięte czwartym elementem. 687 00:37:06,500 --> 00:37:10,140 Następnie, jeśli chciałem zrobić plasterki, Mogę zrobić vec 2 do 6. 688 00:37:10,140 --> 00:37:15,480 2 okrężnicy 6 jest kolejnym wektor, który jest 2, 3, 4, 5, 6. 689 00:37:15,480 --> 00:37:18,230 Wypluwa to. 690 00:37:18,230 --> 00:37:20,770 >> Tak czy inaczej, z powrotem do samochodów mt. 691 00:37:20,770 --> 00:37:26,650 692 00:37:26,650 --> 00:37:28,450 Więc zróbmy kilka regresji. 693 00:37:28,450 --> 00:37:34,240 Powiedzmy modelu gets-- niech liniowo regress-- nie wiem. 694 00:37:34,240 --> 00:37:41,780 Najpierw zróbmy dołączyć mtcars, oczywiście. 695 00:37:41,780 --> 00:37:44,870 696 00:37:44,870 --> 00:38:00,010 Więc [niesłyszalne] Model lm, niech ustąpią mil na galon na masę tyldy. 697 00:38:00,010 --> 00:38:03,300 A następnie ramka danych jest mtcars. 698 00:38:03,300 --> 00:38:06,830 Więc podsumowanie modelu. 699 00:38:06,830 --> 00:38:12,900 700 00:38:12,900 --> 00:38:15,595 >> OK, więc wygląda to nieco skomplikowane. 701 00:38:15,595 --> 00:38:19,380 Ale w zasadzie, widząc, jak gdybyśmy spróbować wyrazić mil na galon 702 00:38:19,380 --> 00:38:23,970 jako funkcja liniowa wag czym my tu mamy tę linię, 703 00:38:23,970 --> 00:38:28,730 który przechwytuje na 37.28. 704 00:38:28,730 --> 00:38:33,830 37.28 będzie teoretyczne mile za galon samochodu, który waży zero. 705 00:38:33,830 --> 00:38:41,210 A następnie za każdą dodatkową tonę, knock około pięciu mil na galon 706 00:38:41,210 --> 00:38:42,440 od tego. 707 00:38:42,440 --> 00:38:45,120 Oba te współczynniki ci widać, błędy standardowe nie. 708 00:38:45,120 --> 00:38:47,870 I są bardzo statystycznie istotny. 709 00:38:47,870 --> 00:38:55,740 >> Tak więc możemy być bardzo pewne, 1 e 10 do ujemnej 10. 710 00:38:55,740 --> 00:38:59,510 Tak więc 1 razy coś do ujemnego 10, że jeśli się cięższy samochód, 711 00:38:59,510 --> 00:39:01,440 będzie miał gorsze mil na galon. 712 00:39:01,440 --> 00:39:04,940 713 00:39:04,940 --> 00:39:07,250 Albo możemy przetestować jakiś inny model. 714 00:39:07,250 --> 00:39:09,230 Jak zamiast cofa się to na wadze, 715 00:39:09,230 --> 00:39:12,600 niech ustąpią to na dziennik wagi, Bo może efektywną wagę 716 00:39:12,600 --> 00:39:15,690 na przebieg nie jest w jakiś sposób liniowy. 717 00:39:15,690 --> 00:39:18,540 >> To dało nam r kwadratowy 0.7528. 718 00:39:18,540 --> 00:39:19,610 Warto więc spróbować. 719 00:39:19,610 --> 00:39:21,485 Tym razem zróbmy inna zmienna, też. 720 00:39:21,485 --> 00:39:22,500 Model2. 721 00:39:22,500 --> 00:39:24,800 Więc podsumowanie, model2. 722 00:39:24,800 --> 00:39:28,200 723 00:39:28,200 --> 00:39:31,390 W porządku, więc ponownie, Dostaliśmy nasze najlepsze dopasowanie linię tutaj. 724 00:39:31,390 --> 00:39:36,160 I to time-- to mówiąc: w zasadzie, że za każdym razem 725 00:39:36,160 --> 00:39:38,090 zwiększenie masy samochód o współczynnik E 726 00:39:38,090 --> 00:39:40,580 tracisz to wiele mil na galon. 727 00:39:40,580 --> 00:39:43,210 728 00:39:43,210 --> 00:39:50,326 >> A więc tym razem nasza norma resztkowa błędów it--, że nie ma znaczenia, naprawdę. 729 00:39:50,326 --> 00:39:53,540 Pozostałą błąd standardowy jest w zasadzie tylko błąd standardowy 730 00:39:53,540 --> 00:39:57,760 że nie zostawili po ciebie zabrać linię trendu. 731 00:39:57,760 --> 00:40:02,805 A nasza r do kwadratu tutaj jest 0,81, która jest nieco lepsza niż to, co 732 00:40:02,805 --> 00:40:07,640 mieliśmy wcześniej, 0.52. 733 00:40:07,640 --> 00:40:09,750 >> A więc teraz dodajmy Termin tej regresji. 734 00:40:09,750 --> 00:40:13,020 Warto więc regres mil na galon zarówno w dzienniku wag 735 00:40:13,020 --> 00:40:21,130 i zróbmy, q mil, czwarta czas mile. 736 00:40:21,130 --> 00:40:26,190 OK, to musi mieć the-- Dobrze, qsec. 737 00:40:26,190 --> 00:40:26,690 Qsec. 738 00:40:26,690 --> 00:40:30,630 739 00:40:30,630 --> 00:40:35,000 Actually-- Przepraszam, co? 740 00:40:35,000 --> 00:40:37,000 Pozwólcie mi nazwać to coś jeszcze oprócz model2. 741 00:40:37,000 --> 00:40:38,000 Pozwól mi nazwać tę model3. 742 00:40:38,000 --> 00:40:40,860 743 00:40:40,860 --> 00:40:42,900 A więc teraz możemy zrobić podsumowanie model3. 744 00:40:42,900 --> 00:40:46,850 745 00:40:46,850 --> 00:40:49,100 I znowu, to jest w zasadzie czego może oczekiwać. 746 00:40:49,100 --> 00:40:51,750 Masz pozytywny przechwycić. 747 00:40:51,750 --> 00:40:54,550 Skuteczne zwiększenie Masa jest ujemny. 748 00:40:54,550 --> 00:40:58,490 I skuteczne zwiększenie kwartał czas mile 749 00:40:58,490 --> 00:41:02,420 jest pozytywna, ale jeśli mniej niż waga. 750 00:41:02,420 --> 00:41:06,010 Teraz intuicyjnie, można zrozumieć to mówiąc, myślę o samochodach sportowych. 751 00:41:06,010 --> 00:41:08,950 Jest to bardzo szybkie przyspieszenie, bardzo krótkie czasy ćwierć mili. 752 00:41:08,950 --> 00:41:13,729 Oni również zamiar używać więcej gazu, natomiast bardziej sensowne samochody będą 753 00:41:13,729 --> 00:41:16,020 mieć wolniejsze przyspieszenie, wyższe razy ćwierć mili, 754 00:41:16,020 --> 00:41:20,890 i zużywają mniej gazu ,, tak wyższe mil na galon. 755 00:41:20,890 --> 00:41:21,390 Wielki. 756 00:41:21,390 --> 00:41:23,431 A więc teraz nadszedł czas, aby wykreślić coś takiego. 757 00:41:23,431 --> 00:41:27,810 Więc do-- tak nagie kości możemy zrobić plots-- 758 00:41:27,810 --> 00:41:35,280 bo już dołączone tej ramki danych before-- możemy po prostu zrobić działek, mpg wag. 759 00:41:35,280 --> 00:41:38,762 760 00:41:38,762 --> 00:41:39,720 Dodać do tego nieco większe. 761 00:41:39,720 --> 00:41:55,050 762 00:41:55,050 --> 00:41:57,350 Nie, w zasadzie mają wykres punktowy, ale punkty 763 00:41:57,350 --> 00:41:58,690 są trochę trudne do zobaczenia w tej sprawie. 764 00:41:58,690 --> 00:42:04,860 765 00:42:04,860 --> 00:42:10,900 >> Nie pamiętam, od ręki, co Składnia jest do zmiany fabuły. 766 00:42:10,900 --> 00:42:14,100 Więc myślę, że to będzie to dobry czas, aby wywołać, 767 00:42:14,100 --> 00:42:18,000 jest to bardzo miłe wbudowane pomocy funkcja, pomoc cytaty funkcjonować nazwę. 768 00:42:18,000 --> 00:42:21,690 Sprowadzimy się w zasadzie cokolwiek chcesz. 769 00:42:21,690 --> 00:42:28,010 770 00:42:28,010 --> 00:42:32,730 Myślę, że rzeczywiście to zrobić Typ równa p dla punktów działek. 771 00:42:32,730 --> 00:42:34,369 Czy to cokolwiek zmienić? 772 00:42:34,369 --> 00:42:35,160 I nie, nie. 773 00:42:35,160 --> 00:42:39,160 774 00:42:39,160 --> 00:42:39,660 W porządku. 775 00:42:39,660 --> 00:42:46,760 776 00:42:46,760 --> 00:42:49,580 >> Z jakiegoś powodu, kiedy to zrobił na własnym komputerze, jakiś czas temu, 777 00:42:49,580 --> 00:42:52,080 wszystkie punkty Rozproszenie były o wiele jaśniejsze. 778 00:42:52,080 --> 00:43:06,390 779 00:43:06,390 --> 00:43:13,970 Tak czy inaczej, są tego rodzaju rozrzut widoczne? 780 00:43:13,970 --> 00:43:15,124 Nie ma tam nikogo. 781 00:43:15,124 --> 00:43:16,165 A Występuje kilka, niektóre nie. 782 00:43:16,165 --> 00:43:18,860 783 00:43:18,860 --> 00:43:21,185 Jakby można je zobaczyć, prawda? 784 00:43:21,185 --> 00:43:24,310 Więc jeśli chcemy dodać najlepiej dopasowana linia do tej działce tutaj, co jest nieco pusty 785 00:43:24,310 --> 00:43:29,290 bones-- pozwól mi zrobić to nieco ładniejszy. 786 00:43:29,290 --> 00:43:38,075 Głównym równa w stosunku wagi. 787 00:43:38,075 --> 00:43:46,322 788 00:43:46,322 --> 00:43:49,740 Mil na galon. 789 00:43:49,740 --> 00:43:53,570 Ponownie, można zobaczyć, jak przydatne opcjonalne argumenty są tu z również 790 00:43:53,570 --> 00:43:58,090 nie trzeba umieścić rzeczy w sposób pewien porządek z argumentami klawiatury 791 00:43:58,090 --> 00:44:01,600 gdy masz działek, ponieważ to zajmie wiele argumentów. 792 00:44:01,600 --> 00:44:07,490 >> Xlab równe wagi, wagi, ton. 793 00:44:07,490 --> 00:44:10,091 794 00:44:10,091 --> 00:44:10,590 W porządku. 795 00:44:10,590 --> 00:44:17,340 796 00:44:17,340 --> 00:44:21,480 OK, tak, to urządzenie to jest trochę denerwujące. 797 00:44:21,480 --> 00:44:30,160 Ale widać jakby tam, jest tytuł wykresu na stronie. 798 00:44:30,160 --> 00:44:35,260 Tutaj there's-- na dnie tutaj nie ma osi etykiety. 799 00:44:35,260 --> 00:44:37,700 Nie pamiętam od ręki co rozkazy ars-- 800 00:44:37,700 --> 00:44:41,000 jakie funkcje są w celu zwiększenia wielkość tych etykiet i tytułów, 801 00:44:41,000 --> 00:44:43,110 ale są tam. 802 00:44:43,110 --> 00:44:46,625 >> I tak, jeśli chcemy dodaj najlepszego dopasowania linii, 803 00:44:46,625 --> 00:44:49,250 możemy zrobić coś like-- I mają składnia napisane tutaj. 804 00:44:49,250 --> 00:44:52,280 805 00:44:52,280 --> 00:45:11,130 Więc pamiętaj, że wystarczy dodać modelu był mpg, wagi mtcars. 806 00:45:11,130 --> 00:45:16,470 I tak, jeśli chciałem dodać najlepsze dopasowanie Linia, mogę zrobić, model liniowy b. 807 00:45:16,470 --> 00:45:18,556 I bom, mamy najlepszego dopasowania linii. 808 00:45:18,556 --> 00:45:19,970 To trochę trudne do zobaczenia ponownie. 809 00:45:19,970 --> 00:45:22,178 Jestem bardzo przykro o trudności technologiczne. 810 00:45:22,178 --> 00:45:25,230 Ale to działa w zasadzie górnej lewej do prawej dolnej. 811 00:45:25,230 --> 00:45:27,550 >> A jeśli skala były większe, można było zobaczyć 812 00:45:27,550 --> 00:45:31,260 że przechwytują to, co można, znaleźć w statystykach podsumowujących 813 00:45:31,260 --> 00:45:34,790 jeśli wpiszesz Podsumowanie modelu. 814 00:45:34,790 --> 00:45:40,130 OK, więc mam nadzieję, że każdy dostaje coś z poczucia tego, co 815 00:45:40,130 --> 00:45:42,030 R to, co jest dobre dla. 816 00:45:42,030 --> 00:45:45,520 Można zrobić znacznie ładniejsze działki niż to w swoim czasie, jeśli chcesz. 817 00:45:45,520 --> 00:45:50,100 818 00:45:50,100 --> 00:45:53,950 >> Więc interfejsu funkcji obcych. 819 00:45:53,950 --> 00:46:00,330 To jest coś, co nie jest zazwyczaj pokryte wykładów wprowadzających 820 00:46:00,330 --> 00:46:03,560 lub wprowadzające coś dla r. 821 00:46:03,560 --> 00:46:05,584 Nie jest prawdopodobne, będziesz go potrzebować. 822 00:46:05,584 --> 00:46:08,000 Uważam jednak, że warto w moje projekty w przeszłości. 823 00:46:08,000 --> 00:46:10,984 I nie ma dobra samouczek dla niego w Internecie. 824 00:46:10,984 --> 00:46:12,900 Więc jestem po prostu będzie wypychać cię przez cały ten 825 00:46:12,900 --> 00:46:16,606 i jesteś wolny, aby wyjść. 826 00:46:16,606 --> 00:46:18,480 I tak obcy Interfejs funkcja jest co 827 00:46:18,480 --> 00:46:23,130 można użyć, aby zadzwonić, aby zobaczyć Funkcje z przewozem R. wewnętrznie, 828 00:46:23,130 --> 00:46:29,850 R jest zbudowany na arytmetyczna C. R jest po prostu C w 64-bitowe, zmiennoprzecinkowe arytmetyka, 829 00:46:29,850 --> 00:46:32,852 która jest typu double [niesłyszalne]. 830 00:46:32,852 --> 00:46:35,060 A może chcesz zrobić to dla paru powodów. 831 00:46:35,060 --> 00:46:39,250 Na jedną, R jest interpretowany, jest to nie kompilowane do kodu maszynowego. 832 00:46:39,250 --> 00:46:42,170 Więc można przepisać wewnętrzne pętle w C, a następnie dostać 833 00:46:42,170 --> 00:46:45,920 Zaletą korzystania z R. odczuwalna jest to trochę bardziej wygodne niż C. 834 00:46:45,920 --> 00:46:48,899 Ma lepszą Wykresy Wyposażenie i etażerka. 835 00:46:48,899 --> 00:46:51,690 A jednocześnie jest w stanie uzyskać prędkość z wewnętrznej pętli, 836 00:46:51,690 --> 00:46:53,650 czyli tam, gdzie jest on naprawdę potrzebny. 837 00:46:53,650 --> 00:46:56,330 >> Ponowne użycie istniejących bibliotek C, to też jest ważne. 838 00:46:56,330 --> 00:47:00,320 Jeśli masz jakieś biblioteki C dla podobnych, Nie wiem, transformacji Fouriera, 839 00:47:00,320 --> 00:47:05,190 lub niektóre bardzo archaiku Procedura statystyki używane 840 00:47:05,190 --> 00:47:09,470 w wysokiej astrofizyki energii czy coś, nie wiem. 841 00:47:09,470 --> 00:47:13,058 Wysokiej astrofizyka energii nie jest nawet myśleć, jak sądzę. 842 00:47:13,058 --> 00:47:16,480 Ale można zrobić, że zamiast napisać natywną portu R z nich. 843 00:47:16,480 --> 00:47:22,725 I na the-- i znowu, tak jak w przypadku Ciebie wyglądają w większości standardowych bibliotek R, 844 00:47:22,725 --> 00:47:25,600 na wewnętrzne, elementy wewnętrzne są będzie korzystać z funkcji obcego 845 00:47:25,600 --> 00:47:26,724 interfejs bardzo intensywnie. 846 00:47:26,724 --> 00:47:31,630 Oni mają takie rzeczy jak Fourier przekształca lub obliczenie korelacji 847 00:47:31,630 --> 00:47:34,890 Współczynniki napisany w C, i będziesz Wystarczy R obwoluty wokół nich. 848 00:47:34,890 --> 00:47:38,230 Interfejs jest nieco trudne. Myślę 849 00:47:38,230 --> 00:47:43,750 jego trudności jest przesadzone w sposób Wiele z instrukcjami, które znajdziesz. 850 00:47:43,750 --> 00:47:46,200 Ale mimo to, że jest to nieco mylące. 851 00:47:46,200 --> 00:47:48,650 I nie były w stanie znaleźć dobry poradnik dla niego, 852 00:47:48,650 --> 00:47:51,980 tak, to jest to właśnie teraz. 853 00:47:51,980 --> 00:47:55,360 Ponownie, to cały odcinek jest bardziej do wglądu. 854 00:47:55,360 --> 00:47:57,687 Nie martw się o kopiowaniu wszystko, co się w tej chwili. 855 00:47:57,687 --> 00:48:00,020 Więc następujących instrukcji są dla systemów uniksowych, 856 00:48:00,020 --> 00:48:05,150 Linux, BSD, OS X nie wiem jak to działa w systemie Windows, 857 00:48:05,150 --> 00:48:08,280 ale proszę, nie rób swoje Ostateczny projekt w systemie Windows. 858 00:48:08,280 --> 00:48:10,790 859 00:48:10,790 --> 00:48:12,460 Naprawdę nie chcę. 860 00:48:12,460 --> 00:48:14,770 UNIX jest znacznie lepszy zestaw się na co dzień programowania. 861 00:48:14,770 --> 00:48:19,320 862 00:48:19,320 --> 00:48:21,390 Tak więc, w zasadzie obcych Interfejs funkcji. 863 00:48:21,390 --> 00:48:24,420 Jeśli chcesz napisać C Funkcja stosowania z R, 864 00:48:24,420 --> 00:48:27,250 musi podjąć wszystkie argumenty jak wskaźniki. 865 00:48:27,250 --> 00:48:30,666 >> Więc dla pojedynczych wartości, to Oznacza to wskazał na wartości. 866 00:48:30,666 --> 00:48:33,040 Tablic, jest to wskazówka pierwszego elementu, który 867 00:48:33,040 --> 00:48:36,750 jest to, co w rzeczywistości oznacza, nazwy tablicy. 868 00:48:36,750 --> 00:48:40,140 Ponownie, jest to coś, co powinno być dość całkowicie dół po p ustawić pięć. 869 00:48:40,140 --> 00:48:43,334 Nazwy tablic są tylko wskaźniki pierwszego elementu 870 00:48:43,334 --> 00:48:44,750 Typ zmiennoprzecinkowej jest podwójna. 871 00:48:44,750 --> 00:48:47,310 A twoja funkcja musi zwrócić nieważne. 872 00:48:47,310 --> 00:48:50,810 Tylko w ten sposób, że może właściwie powiedzieć, R, co się stało 873 00:48:50,810 --> 00:48:54,410 jest poprzez modyfikację pamięci, który dał R do niego za pomocą funkcji obcego 874 00:48:54,410 --> 00:48:54,910 berło. 875 00:48:54,910 --> 00:48:58,180 876 00:48:58,180 --> 00:49:00,127 >> Więc pisałem to Przykładem, jest 877 00:49:00,127 --> 00:49:02,460 funkcja, która oblicza korzystania kropka iloczyn dwóch wektorów. 878 00:49:02,460 --> 00:49:05,060 To trwa dwa argumenty, vec1, vec2, które są same wektory, 879 00:49:05,060 --> 00:49:06,934 i n, który jest długości, bo znowu, 880 00:49:06,934 --> 00:49:12,630 R ma wbudowane [niesłyszalne], aby dowiedzieć się, Długość wektora, a C nie. 881 00:49:12,630 --> 00:49:16,182 W C, wektory jest dowolna ograniczony fragment pamięci. 882 00:49:16,182 --> 00:49:17,890 Więc sposób można obliczenia produkty kropki 883 00:49:17,890 --> 00:49:23,470 to jest po prostu ustawić się parametr do zera, a następnie iterację 884 00:49:23,470 --> 00:49:28,760 od 1 do gwiazdy n, ponieważ n jest wskaźnikiem długości, 885 00:49:28,760 --> 00:49:32,929 wystarczy dodać coś do to parametr wyjściowy. 886 00:49:32,929 --> 00:49:34,970 I to może być dobra praktyka jeśli masz zamiar zrobić 887 00:49:34,970 --> 00:49:37,270 to napisać dwie odrębne funkcje C. 888 00:49:37,270 --> 00:49:41,970 Jednym z nich has-- jedna z nich po prostu ma argumentów i typów 889 00:49:41,970 --> 00:49:43,970 że oni zwyczajnie być w C 890 00:49:43,970 --> 00:49:47,780 >> Więc on ma tablicę argumenty jak wskaźniki. 891 00:49:47,780 --> 00:49:57,090 Ale argumenty pojedynczej wartości, takie jak n, właśnie trwa jako wartości przez kopię, 892 00:49:57,090 --> 00:49:57,917 bez wskazówek. 893 00:49:57,917 --> 00:49:59,750 I to nie robi [Niesłyszalne] się wskaźnik. 894 00:49:59,750 --> 00:50:01,290 A potem możesz mieć inna, w zasadzie, 895 00:50:01,290 --> 00:50:03,623 Funkcja otoki, że w zasadzie uchwyty wymagania 896 00:50:03,623 --> 00:50:07,740 funkcji obcych interfejs dla Ciebie. 897 00:50:07,740 --> 00:50:11,840 >> Sposób, w jaki nazywamy to w R jest, raz masz czynność napisany w języku C, 898 00:50:11,840 --> 00:50:17,770 wpisać R, R cmd shlib Komenda wspólna biblioteka, 899 00:50:17,770 --> 00:50:20,110 foo kropka c, czy cokolwiek Twoja nazwa pliku, 900 00:50:20,110 --> 00:50:23,020 powłoki i OS nie w terminalu R. 901 00:50:23,020 --> 00:50:25,200 A to stworzy Biblioteka nazywany foo dot tak. 902 00:50:25,200 --> 00:50:28,180 A potem można go załadować w nasz skrypt lub interaktywnie 903 00:50:28,180 --> 00:50:32,310 z polecenia dyn dot obciążenia. 904 00:50:32,310 --> 00:50:35,720 Wtedy nie jest funkcją w R nazywa kropka c. 905 00:50:35,720 --> 00:50:39,310 >> Trwa to argumenty, które są Pierwsza nazwa funkcji w C 906 00:50:39,310 --> 00:50:40,970 który chcesz zadzwonić. 907 00:50:40,970 --> 00:50:43,920 A następnie wszystkie parametry do tej funkcji, 908 00:50:43,920 --> 00:50:45,420 muszą być w odpowiedniej kolejności. 909 00:50:45,420 --> 00:50:48,580 Musisz użyć tego typu Funkcje przymusu jako liczba całkowita, jak 910 00:50:48,580 --> 00:50:52,050 dwukrotnie, jako znak i jako logiczne. 911 00:50:52,050 --> 00:50:54,710 I wtedy, gdy zwraca Lista, która ponownie jest tylko 912 00:50:54,710 --> 00:50:57,550 skojarzony tablicę Nazwy parametrów i wartości 913 00:50:57,550 --> 00:51:00,950 po funkcja prowadzi. 914 00:51:00,950 --> 00:51:08,520 >> Więc w tym przypadku, ponieważ kropka prod ma Argumenty vec1, vec2 i int n, n out. 915 00:51:08,520 --> 00:51:11,980 Kropka c mamy dot prod, nazwa funkcji 916 00:51:11,980 --> 00:51:16,250 że dzwonisz, vec1, vec2, typ zmusić. 917 00:51:16,250 --> 00:51:20,060 Długość obu wektora Po prostu wybrał vec1 arbitralnie. 918 00:51:20,060 --> 00:51:25,479 Byłoby bardziej wytrzymałe powiedzieć s całkowita min długość vec1, długość vec2. 919 00:51:25,479 --> 00:51:27,520 Następnie tak jak podwójne zero, dlatego, że tak naprawdę nie 920 00:51:27,520 --> 00:51:29,644 obchodzi, co idzie do z parametrem, ponieważ jesteśmy 921 00:51:29,644 --> 00:51:32,270 ustawienie go na tak zera. 922 00:51:32,270 --> 00:51:37,560 >> A następnie wyniki będzie duża związane tablica zasadzie 923 00:51:37,560 --> 00:51:42,090 vec1 jest cokolwiek, vec2 jest cokolwiek. 924 00:51:42,090 --> 00:51:44,330 Ale jesteśmy zainteresowani się, więc możemy się o tym przekonać. 925 00:51:44,330 --> 00:51:47,780 Jest to kolejny, bardzo przykładem zabawki interfejsu funkcji obcych. 926 00:51:47,780 --> 00:51:54,160 Ale jeśli masz do obliczenia kropkę Produkty masywnych wektory w pętli, 927 00:51:54,160 --> 00:51:56,960 lub jeśli masz do zrobienia coś jeszcze w pętli, 928 00:51:56,960 --> 00:51:59,850 i nie chcesz polegać na badania, która ma trochę nad głową 929 00:51:59,850 --> 00:52:02,830 wbudowane w niej, co może być użyteczne. 930 00:52:02,830 --> 00:52:05,870 >> Ponownie, to zwykle nie jest Temat wprowadzający do R. 931 00:52:05,870 --> 00:52:08,571 To nie jest bardzo dobrze udokumentowane. 932 00:52:08,571 --> 00:52:11,070 Jestem po prostu w tym, bo I okazało się przydatne w przeszłości. 933 00:52:11,070 --> 00:52:13,654 Tak, złe praktyki. 934 00:52:13,654 --> 00:52:15,820 Wspomniałem, że istnieje pętli w funkcji. 935 00:52:15,820 --> 00:52:21,150 Generalnie nie powinna, język, nie używaj go. 936 00:52:21,150 --> 00:52:26,100 W oparciu o jak R realizuje iteracji wewnętrznie, może być wolna. 937 00:52:26,100 --> 00:52:28,540 Oni po prostu również brzydko wyglądać. 938 00:52:28,540 --> 00:52:32,410 >> R obsługuje wektory bardzo ładnie, więc często nie trzeba go używać. 939 00:52:32,410 --> 00:52:35,050 940 00:52:35,050 --> 00:52:38,900 Następnie można zwykle wymienić wektor często 941 00:52:38,900 --> 00:52:42,490 z tych funkcji zwanych wysokie Funkcje zamówienie, Mapa, Reduce, 942 00:52:42,490 --> 00:52:44,404 Znajdź lub Filter. 943 00:52:44,404 --> 00:52:46,320 Ja po prostu dać trochę przykłady co to robić. 944 00:52:46,320 --> 00:52:49,957 Mapa jest wyższa funkcja celu, ponieważ trwa funkcję jako argument. 945 00:52:49,957 --> 00:52:52,290 Więc można nadać mu funkcji, można nadać mu tablicę, 946 00:52:52,290 --> 00:52:54,640 i będzie stosować funkcję dla każdego elementu macierzy 947 00:52:54,640 --> 00:52:55,681 i zwracać nową tablicę. 948 00:52:55,681 --> 00:52:58,035 949 00:52:58,035 --> 00:53:00,160 Zmniejszyć, w zasadzie dać to tablica, dajesz go 950 00:53:00,160 --> 00:53:02,930 funkcja, która przyjmuje dwa argumenty. 951 00:53:02,930 --> 00:53:07,100 Będzie stosować funkcję po pierwsze, Pierwszy argument z jakąś wartość rozrusznika. 952 00:53:07,100 --> 00:53:09,440 Następnie do tego wyniku w drugim. 953 00:53:09,440 --> 00:53:12,590 Następnie do tego wyniku w trzecim, następnie do tego wyniku w czwartym. 954 00:53:12,590 --> 00:53:14,870 A potem wrócić, gdy dojdzie do końca. 955 00:53:14,870 --> 00:53:17,620 Tak na przykład, jeśli chcesz obliczyć sumę wszystkich elementach 956 00:53:17,620 --> 00:53:23,240 w tablicy, nie można nazwać zmniejszyć z [niesłyszalne] zmniejszyć dodatek 957 00:53:23,240 --> 00:53:26,620 funkcji, takich jak funk a, b, zwracają PLUS B. 958 00:53:26,620 --> 00:53:28,960 A następnie uruchomić wartość 0. 959 00:53:28,960 --> 00:53:32,950 >> A wszystko to można je znaleźć opisane w dokumentacji Rt 960 00:53:32,950 --> 00:53:35,720 w każdym podręczniku na programowanie funkcjonalne. 961 00:53:35,720 --> 00:53:38,330 Jest też ta klasa funkcje wywoływane zastosowanie funkcji, 962 00:53:38,330 --> 00:53:42,807 które don't-- są nieco trudne do wyjaśnienia, 963 00:53:42,807 --> 00:53:45,640 ale jeśli spojrzeć w [niesłyszalne] zarezerwowane które przytoczyłem na początku, 964 00:53:45,640 --> 00:53:48,615 wyjaśnia je całkiem dobrze w Jego dodatek na programowaniu R. 965 00:53:48,615 --> 00:53:51,599 966 00:53:51,599 --> 00:53:53,390 Więcej informacji na temat praktyk, dołączając do wektorów. 967 00:53:53,390 --> 00:53:57,570 968 00:53:57,570 --> 00:53:58,070 Tak? 969 00:53:58,070 --> 00:54:01,651 970 00:54:01,651 --> 00:54:02,900 Myślę, że powinno to poprawić. 971 00:54:02,900 --> 00:54:07,450 W pierwszej linii, vec strzałka, że strzałka nie powinno tam być. 972 00:54:07,450 --> 00:54:10,920 Można przypisać do wektora, znowu, by zająć jego długość plus 1 973 00:54:10,920 --> 00:54:13,220 i przypisanie jakąś wartość do tego. 974 00:54:13,220 --> 00:54:18,970 To przedłuży wektor, lub może zrobić Věc równa C Věc nowaWartość. 975 00:54:18,970 --> 00:54:21,540 Ponownie, jeśli używasz C z jeden argument jako wektor, 976 00:54:21,540 --> 00:54:23,300 wynikające z hierarchii zostanie spłaszczona. 977 00:54:23,300 --> 00:54:27,160 Więc po prostu się wektor który jest wydłużony o 1. 978 00:54:27,160 --> 00:54:30,410 Nie wolno tego robić. 979 00:54:30,410 --> 00:54:33,330 >> Powodem, dla ciebie nie należy robić to jest to. 980 00:54:33,330 --> 00:54:37,430 Kiedy przeznaczyć wektor, to Daje to pewien fragment pamięci. 981 00:54:37,430 --> 00:54:40,680 Jeśli zwiększenie tej wielkości wektorowych, musi przydzielić wektor 982 00:54:40,680 --> 00:54:43,820 gdzieś indziej. 983 00:54:43,820 --> 00:54:46,980 I tak realokacja jest dość drogie. 984 00:54:46,980 --> 00:54:50,530 Nie będę wdawać się w szczegóły, jak podzielniki pamięci są realizowane 985 00:54:50,530 --> 00:54:57,280 na poziomie systemu operacyjnego ale to zajmuje dużo czasu 986 00:54:57,280 --> 00:54:58,962 znaleźć nowy kawałek pamięci. 987 00:54:58,962 --> 00:55:00,920 A także, jeśli jesteś realokacji wiele, wiele 988 00:55:00,920 --> 00:55:03,500 z coraz większą kawałki, możesz skończyć 989 00:55:03,500 --> 00:55:06,420 z czegoś, co nazywa fragmentacja pamięci, 990 00:55:06,420 --> 00:55:09,390 gdzie dostępna pamięć jest podzielone na wiele małych bloków 991 00:55:09,390 --> 00:55:11,500 w punkcie podzielniki pamięci widzenia. 992 00:55:11,500 --> 00:55:15,340 I robi się coraz trudniej znaleźć pamięć do innych rzeczy. 993 00:55:15,340 --> 00:55:19,455 Zamiast więc, jeśli chcesz to zrobić, jeśli trzeba rozwijać wektor z jednego końca 994 00:55:19,455 --> 00:55:24,240 do następnego, a nie dołączając do niego stale, należy wstępnie przydzielić go. 995 00:55:24,240 --> 00:55:29,310 Vec strzałki, długość wektora wynosi 1000, czy cokolwiek innego. 996 00:55:29,310 --> 00:55:33,200 >> I wtedy można po prostu przypisać do wartości jednego nosiciela 997 00:55:33,200 --> 00:55:36,000 czas po tym, jak przydzielane raz. 998 00:55:36,000 --> 00:55:40,140 Wpadłem na to, znowu, mój wakacyjnej pracy kiedy pisałem NRA dyferencjał 999 00:55:40,140 --> 00:55:42,120 równań. 1000 00:55:42,120 --> 00:55:43,180 Nie symboliczne numeryczna. 1001 00:55:43,180 --> 00:55:49,290 Chodzi o to, że skoro masz jedna wartość dla rozwiązania, 1002 00:55:49,290 --> 00:55:51,240 używasz, że do obliczenia następny. 1003 00:55:51,240 --> 00:55:53,700 Więc moje naturalne naiwny Nachylenie było powiedzieć OK, 1004 00:55:53,700 --> 00:55:56,930 więc zacznę z wektorem to istotna wartość. 1005 00:55:56,930 --> 00:56:01,260 Obliczyć z tej następnej wartości że idzie na moje rozwiązanie wektora, 1006 00:56:01,260 --> 00:56:02,630 i dołączyć to. 1007 00:56:02,630 --> 00:56:05,290 >> Stworzyć coś innego, dołącz to. 1008 00:56:05,290 --> 00:56:08,120 To poszło bardzo, bardzo powoli. 1009 00:56:08,120 --> 00:56:11,540 A kiedy ja sobie z tego sprawę i zmieniłem systemu 1010 00:56:11,540 --> 00:56:16,020 dołączaniu do tego wektora jak 10000 do 100000 razy 1011 00:56:16,020 --> 00:56:18,910 po prostu pre-alokacji wektor i po prostu działa z tym. 1012 00:56:18,910 --> 00:56:22,100 Mam ponad 1000-krotnie prędkość w górę. 1013 00:56:22,100 --> 00:56:26,280 Więc to jest bardzo często Pułapka do programowania R. 1014 00:56:26,280 --> 00:56:31,560 Jeśli potrzebujesz, aby zbudować wektor kawałek po kawałku, wstępnie przeznaczyć go. 1015 00:56:31,560 --> 00:56:35,360 1016 00:56:35,360 --> 00:56:40,240 >> Inną wspólną podróż up-- to jest moja ostatnia zjeżdżalnia, nie worry-- jest obsługa błędów. 1017 00:56:40,240 --> 00:56:42,890 R, szczerze mówiąc, nie Naprawdę to zrobić bardzo dobrze. 1018 00:56:42,890 --> 00:56:45,010 Istnieje wiele problemy, które mogą pojawić się. 1019 00:56:45,010 --> 00:56:48,360 Na przykład, jeśli masz tablicę lub wektor z funkcją 1020 00:56:48,360 --> 00:56:52,377 że spodziewaliśmy pojedyncza Wartość pochodzić z, lub odwrotnie, 1021 00:56:52,377 --> 00:56:55,460 i przekazać, że do funkcji, które Napisałeś spodziewa się jedną wartość, 1022 00:56:55,460 --> 00:56:57,270 że może być problem. 1023 00:56:57,270 --> 00:57:01,440 >> Niektóre funkcje zwraca null, tak jak, powiedzmy, 1024 00:57:01,440 --> 00:57:05,560 odczyt z klucz nie istnieje na liście. 1025 00:57:05,560 --> 00:57:08,527 Ale wartość null nie jest jak C gdzie jeśli próbujesz przeczytać 1026 00:57:08,527 --> 00:57:11,360 ze starego wskaźnika, [niesłyszalne] null pointer, to po prostu SEG usterek 1027 00:57:11,360 --> 00:57:14,109 a jeśli jesteś w debugger to mówi dokładnie, gdzie jesteś. 1028 00:57:14,109 --> 00:57:17,080 1029 00:57:17,080 --> 00:57:20,772 Zamiast tego, null do-- funkcje zrobi nieprzewidywalne rzeczy 1030 00:57:20,772 --> 00:57:21,730 jeśli są one handed null. 1031 00:57:21,730 --> 00:57:24,575 Jak jeśli podał max wartość null, będzie ona daje minus nieskończoność. 1032 00:57:24,575 --> 00:57:27,230 1033 00:57:27,230 --> 00:57:28,190 I tak, tak. 1034 00:57:28,190 --> 00:57:30,880 1035 00:57:30,880 --> 00:57:32,630 I tak to się stało mi kiedyś, gdy miałem 1036 00:57:32,630 --> 00:57:34,771 zmienił kilka pól w mojej listy struktury 1037 00:57:34,771 --> 00:57:37,520 raz, bez zmiany ich gdzie indziej kiedy czyta się od nich. 1038 00:57:37,520 --> 00:57:40,670 A potem mam wszelkiego rodzaju przypadkowe Wyniki nieskończoność pojawiają się 1039 00:57:40,670 --> 00:57:43,080 a ja nie mam pojęcia, skąd one pochodzą. 1040 00:57:43,080 --> 00:57:45,310 I niestety, nie nie ma prawdziwych R Tryb ścisłe 1041 00:57:45,310 --> 00:57:48,940 gdzie można powiedzieć, jeśli coś Wygląda na to, może to być błąd, 1042 00:57:48,940 --> 00:57:51,960 po prostu zatrzymać się tam, więc mogę być zdyscyplinowani i naprawić. 1043 00:57:51,960 --> 00:57:55,282 1044 00:57:55,282 --> 00:57:57,240 Jednak jest coś, nazywa się zatrzymać jeśli nie. 1045 00:57:57,240 --> 00:58:00,480 Jest to równoznaczne z assert C, w jeśli już o tym rozmawialiśmy. 1046 00:58:00,480 --> 00:58:02,690 Nie sądzę, C dochodzić Jest to temat wykładu, 1047 00:58:02,690 --> 00:58:06,370 ale twój szef sekcji może przeszedłby przez to. 1048 00:58:06,370 --> 00:58:10,393 I zatrzymania, jeśli nie ma w zasadzie żadnej orzecznik, więc wszelkie oświadczenia, 1049 00:58:10,393 --> 00:58:11,824 może być prawdziwe lub fałszywe. 1050 00:58:11,824 --> 00:58:13,490 A jeśli to fałszywe, zatrzymuje program. 1051 00:58:13,490 --> 00:58:18,260 Dowiesz się, co dokładnie linię, byli i co stanie się niepowodzeniem. 1052 00:58:18,260 --> 00:58:21,910 >> I bardzo użyteczne, na przykład, sprawdzania czystości, wejścia funkcyjne. 1053 00:58:21,910 --> 00:58:25,110 Więc jeśli masz funkcją i można oczekiwać, powiedzmy, 1054 00:58:25,110 --> 00:58:29,640 czy należy dać mi datę, chcę terminy być tylko wektor o długości 1 1055 00:58:29,640 --> 00:58:31,735 a gdzieś między 1 a 31. 1056 00:58:31,735 --> 00:58:34,420 1057 00:58:34,420 --> 00:58:36,170 A jeśli nie, wiem coś poszło nie tak. 1058 00:58:36,170 --> 00:58:40,280 I wybrać się tam zatrzymać przed tym ma efektów losowych pukanie z kodem 1059 00:58:40,280 --> 00:58:44,190 że trudniej jest śledzić za pośrednictwem. 1060 00:58:44,190 --> 00:58:47,170 Więc to jest jeden z możliwych używać do przystanku, czy nie. 1061 00:58:47,170 --> 00:58:48,660 >> Tak czy inaczej, OK. 1062 00:58:48,660 --> 00:58:49,690 Tak, że to koniec. 1063 00:58:49,690 --> 00:58:51,290 Dziękuję bardzo za przybycie. 1064 00:58:51,290 --> 00:58:53,710 Jestem amatorem ranga na to. 1065 00:58:53,710 --> 00:58:57,270 Tak mi przykro, jeśli jesteś znudzony lub zdezorientowany lub podobnie. 1066 00:58:57,270 --> 00:59:01,670 Jestem szczęśliwy, że pytania przez e-mail w connorharris@college.harvard.edu~~pobj. 1067 00:59:01,670 --> 00:59:07,230 Dotyczy to także wszystkich oglądania tego na żywo lub w późniejszym czasie. 1068 00:59:07,230 --> 00:59:10,190 Ponadto, choć nie jestem TF, jestem również bardzo 1069 00:59:10,190 --> 00:59:13,900 gotów służyć jako nieoficjalny doradca dla każdego, kto jest 1070 00:59:13,900 --> 00:59:15,460 za pomocą badań w końcowym projekcie. 1071 00:59:15,460 --> 00:59:19,900 >> Jeśli chcesz, aby to, a potem po prostu porozmawiać z TF 1072 00:59:19,900 --> 00:59:23,750 a następnie napisać do mnie maila, tak Wiem, co pracujesz 1073 00:59:23,750 --> 00:59:26,680 i tak mogę ustawić spotkanie razy z Ciebie, jeśli chcesz. 1074 00:59:26,680 --> 00:59:27,990 Więc jeszcze raz, bardzo dziękuję. 1075 00:59:27,990 --> 00:59:28,960 Mam nadzieję, że się podobało. 1076 00:59:28,960 --> 00:59:29,450 >> PUBLICZNOŚCI: [niesłyszalne]. 1077 00:59:29,450 --> 00:59:30,617 >> CONNER HARRIS: Oczywiście. 1078 00:59:30,617 --> 00:59:34,910 >> PUBLICZNOŚCI: Jaki projekt będzie studentem CS używać R dla? 1079 00:59:34,910 --> 00:59:37,427 1080 00:59:37,427 --> 00:59:40,510 CONNER HARRIS: Więc jeśli nie masz zrobić coś, co jest czysto w eksploracji danych, 1081 00:59:40,510 --> 00:59:43,790 Przykładowo, i nie Jest wiele rzeczy 1082 00:59:43,790 --> 00:59:46,692 można z tym zrobić z danymi górnictwo i uczenie maszynowe. 1083 00:59:46,692 --> 00:59:48,900 Możesz też użyć R dla składnikiem coś. 1084 00:59:48,900 --> 00:59:52,022 Przyniosłem się pierwotnie przykład od tego, czy piszesz na stronie internetowej 1085 00:59:52,022 --> 00:59:54,730 i chcesz uruchomić zautomatyzowane Analiza statystyczna serwera 1086 00:59:54,730 --> 00:59:57,990 dzienniki w określonym czasie każdego dnia, że może być coś, co jest 1087 00:59:57,990 --> 01:00:01,260 bardzo proste do zrobienia tylko w krótkim R skrypt, który można zaplanować 1088 01:00:01,260 --> 01:00:04,200 uruchamianie każdej nocy, na przykład. 1089 01:00:04,200 --> 01:00:06,550 >> I jestem pewien, jeśli jest jakiś powód, że 1090 01:00:06,550 --> 01:00:11,520 chcą statystyki lub możliwości graficzne i mają ten uruchamia się automatycznie, a nie 1091 01:00:11,520 --> 01:00:13,790 konieczności interakcji z rzeczy w programie Excel, 1092 01:00:13,790 --> 01:00:16,750 na przykład, że coś możesz użyć R dla. 1093 01:00:16,750 --> 01:00:21,190 Więc jakieś pytania przed wyjazdem? 1094 01:00:21,190 --> 01:00:21,690 Nie? 1095 01:00:21,690 --> 01:00:24,960 Dobrze, dobrze, jeszcze raz, dziękuję Dziękuję bardzo za przybycie. 1096 01:00:24,960 --> 01:00:29,417