1 00:00:00,000 --> 00:00:00,750 2 00:00:00,750 --> 00:00:09,800 >> [MUSIC JOC] 3 00:00:09,800 --> 00:00:13,014 4 00:00:13,014 --> 00:00:13,680 DUSTIN TRAN: Bună. 5 00:00:13,680 --> 00:00:14,980 Numele meu este Dustin. 6 00:00:14,980 --> 00:00:18,419 Deci, voi prezenta Analiza datelor în R. 7 00:00:18,419 --> 00:00:19,710 Doar un pic despre mine. 8 00:00:19,710 --> 00:00:24,320 Eu sunt în prezent un student absolvent in Inginerie și Științe Aplicate. 9 00:00:24,320 --> 00:00:28,330 Studiez o intersecție de învățare și statistici mașină 10 00:00:28,330 --> 00:00:31,375 astfel Analiza datelor din R este într-adevăr fundamental la ceea ce 11 00:00:31,375 --> 00:00:33,790 Fac pe o bază de zi cu zi. 12 00:00:33,790 --> 00:00:35,710 >> Și R este ales bun pentru analiza datelor 13 00:00:35,710 --> 00:00:39,310 pentru că este foarte bine pentru realizarea de prototipuri. 14 00:00:39,310 --> 00:00:43,590 Și, de obicei, când faci un fel de analiză a datelor, o mulțime de probleme 15 00:00:43,590 --> 00:00:44,920 sunt de gând să cognitive. 16 00:00:44,920 --> 00:00:48,700 Și așa vrei doar să aibă un limbaj foarte bine că 17 00:00:48,700 --> 00:00:53,770 este doar bun pentru a face funcții predefinite, spre deosebire 18 00:00:53,770 --> 00:00:57,430 a avea de a face cu lucruri de nivel scăzut. 19 00:00:57,430 --> 00:01:01,040 Deci, la început, Mă duc de a introduce ceea ce este R, de ce ar fi 20 00:01:01,040 --> 00:01:04,540 doriți să-l folosească, și apoi trece peste unele în demo, 21 00:01:04,540 --> 00:01:07,060 și du-te de acolo. 22 00:01:07,060 --> 00:01:08,150 >> Deci, ce este R? 23 00:01:08,150 --> 00:01:11,180 R este doar un limbaj dezvoltat pentru calcul statistic 24 00:01:11,180 --> 00:01:12,450 și vizualizare. 25 00:01:12,450 --> 00:01:16,000 Deci, ce înseamnă acest lucru este că este un limbaj foarte excelent 26 00:01:16,000 --> 00:01:22,400 pentru orice fel de lucru care se ocupă cu incertitudine sau de vizualizare a datelor. 27 00:01:22,400 --> 00:01:24,850 Deci, ai toate astea distribuții de probabilitate. 28 00:01:24,850 --> 00:01:27,140 Nu vor fi built-in functii. 29 00:01:27,140 --> 00:01:31,650 Veți avea, de asemenea, excelent complot pachete. 30 00:01:31,650 --> 00:01:34,110 >> Python este un alt concurent limbaj de date. 31 00:01:34,110 --> 00:01:40,020 Și un lucru pe care mi se pare că R este mult mai bine la vizualizare este. 32 00:01:40,020 --> 00:01:45,200 Deci, ceea ce veți vedea în demo ca bine este doar un limbaj foarte intuitiv 33 00:01:45,200 --> 00:01:48,050 care pur și simplu funcționează extrem de bine. 34 00:01:48,050 --> 00:01:53,140 De asemenea, este gratuit și open source, cum este orice altă limbă bun cred. 35 00:01:53,140 --> 00:01:55,440 >> Și aici, o grămadă de doar cuvinte cheie aruncat la tine. 36 00:01:55,440 --> 00:02:00,450 E dinamic, ceea ce înseamnă dacă aveți o anumit tip atribuită unui obiect 37 00:02:00,450 --> 00:02:02,025 decât că va schimba doar pe zbor. 38 00:02:02,025 --> 00:02:05,670 E leneș așa că e deștept despre cum se face calcule. 39 00:02:05,670 --> 00:02:12,250 Funcțional însemnând poate funcționa într-adevăr bazat pe funcțiilor așa anything-- 40 00:02:12,250 --> 00:02:16,910 orice fel de manipulare ești face, se va baza pe funcții. 41 00:02:16,910 --> 00:02:20,162 >> Operatorii Deci binare, de exemplu, sunt funcții doar inerent. 42 00:02:20,162 --> 00:02:21,870 Și tot ceea ce ai de gând să faci este 43 00:02:21,870 --> 00:02:24,690 O să fi rulat de pe funcții de sine. 44 00:02:24,690 --> 00:02:27,140 Și apoi obiect orientat, de asemenea. 45 00:02:27,140 --> 00:02:30,930 >> Deci, aici este un complot xkcd. 46 00:02:30,930 --> 00:02:34,350 Nu numai pentru că mă simt ca și cum Xkcd este fundamental pentru orice fel 47 00:02:34,350 --> 00:02:37,770 de prezentare, ci pentru că Mă simt ca și cum acest lucru într-adevăr 48 00:02:37,770 --> 00:02:42,160 Ciocane la punctul în care o mulțime de moment în care faci un fel de date 49 00:02:42,160 --> 00:02:46,570 analiză, problema nu este atât de mult cât de repede se execută, 50 00:02:46,570 --> 00:02:49,850 dar cât de mult se va luați la programa sarcina. 51 00:02:49,850 --> 00:02:54,112 Deci, aici este doar analizează dacă strategie a sau b este mai eficient. 52 00:02:54,112 --> 00:02:55,820 Acest lucru va fi ceva ca esti 53 00:02:55,820 --> 00:02:58,290 O să se ocupe foarte mult de la un fel de limbaje de nivel scăzut 54 00:02:58,290 --> 00:03:03,440 în cazul în care ai de a face cu defecte SEG, alocare de memorie, initializations, 55 00:03:03,440 --> 00:03:05,270 chiar făcând funcțiile built-in. 56 00:03:05,270 --> 00:03:09,920 Și chestia asta este tot manipulat foarte, foarte elegant în R. 57 00:03:09,920 --> 00:03:12,839 >> Deci, doar pentru a ciocan acest punct, cel mai mare blocaj 58 00:03:12,839 --> 00:03:13,880 va fi cognitive. 59 00:03:13,880 --> 00:03:17,341 Deci, analiza datelor este o problemă foarte greu. 60 00:03:17,341 --> 00:03:19,340 Fie că faci masina de învățare sau esti 61 00:03:19,340 --> 00:03:22,550 faci doar un fel de explorare a datelor de bază, 62 00:03:22,550 --> 00:03:25,290 nu vrei să aibă pentru a lua un document 63 00:03:25,290 --> 00:03:27,440 și apoi compila ceva de fiecare dată când 64 00:03:27,440 --> 00:03:31,010 doriți să vedeți ce o coloană arată, ceea ce intrările special într-o matrice 65 00:03:31,010 --> 00:03:32,195 arată. 66 00:03:32,195 --> 00:03:34,320 Deci, vrei doar să aibă unele interfețe foarte frumos 67 00:03:34,320 --> 00:03:37,740 puteți rula o funcție simplă că indicii de orice 68 00:03:37,740 --> 00:03:41,870 doriți și doar rulați de acolo. 69 00:03:41,870 --> 00:03:44,190 Și ai nevoie de domeniu anumite limbi pentru asta. 70 00:03:44,190 --> 00:03:51,750 Și R va ajuta cu adevarat sa definesc problemă și de a rezolva o în acest mod. 71 00:03:51,750 --> 00:03:58,690 >> Deci, aici este o programare arată complot popularitate din R cum a dispărut în timp. 72 00:03:58,690 --> 00:04:04,060 Deci, după cum puteți vedea, cum ar fi 2013 sau așa că doar cu sufletul la gură în sus enorm. 73 00:04:04,060 --> 00:04:09,570 Și acest lucru a fost doar din cauza asta tendință imens în industria de tehnologie 74 00:04:09,570 --> 00:04:10,590 Date despre mari. 75 00:04:10,590 --> 00:04:13,010 De asemenea, nu doar tehnologia industrie, dar de fapt 76 00:04:13,010 --> 00:04:16,490 orice that-- industrie, deoarece o mulțime de industriile 77 00:04:16,490 --> 00:04:20,589 sunt un fel de fundamentale pentru încearcă să rezolve aceste probleme. 78 00:04:20,589 --> 00:04:24,590 Și, de obicei, puteți avea ceva bun modalitate de măsurare a acestor probleme 79 00:04:24,590 --> 00:04:29,720 sau chiar să le definire sau rezolvarea acestora folosind date. 80 00:04:29,720 --> 00:04:35,430 Deci, cred că chiar acum R este a 11-a Cele mai populare limbă pe TIOBE 81 00:04:35,430 --> 00:04:38,200 și a fost în creștere de atunci. 82 00:04:38,200 --> 00:04:40,740 83 00:04:40,740 --> 00:04:43,080 >> Deci, aici e ceva mai mult caracteristici ale R. Are 84 00:04:43,080 --> 00:04:46,900 un număr enorm de pachete pentru toate aceste lucruri diferite. 85 00:04:46,900 --> 00:04:52,470 Deci orice moment aveți un anumite probleme, cele mai multe 86 00:04:52,470 --> 00:04:55,060 timp R va avea această funcție pentru tine. 87 00:04:55,060 --> 00:04:58,520 Deci, dacă doriți să construi un fel de mașină 88 00:04:58,520 --> 00:05:02,770 algoritm de învățare numit Aleatorie Forest sau Arbori de decizie, 89 00:05:02,770 --> 00:05:07,530 sau chiar încearcă să ia media de o funcție sau la oricare dintre aceste lucruri, 90 00:05:07,530 --> 00:05:10,000 R va avea asta. 91 00:05:10,000 --> 00:05:14,190 >> Și dacă nu-i pasă de optimizare, un lucru care este comun 92 00:05:14,190 --> 00:05:17,430 se că după ce ați terminat de prototipuri un fel de limbaj de nivel înalt, 93 00:05:17,430 --> 00:05:19,810 va arunca că in-- doar veți port care peste 94 00:05:19,810 --> 00:05:21,550 la un limbaj de nivel scăzut. 95 00:05:21,550 --> 00:05:26,090 Ce e bun despre R este că, odată ce ești făcut prototipuri se, puteți rula C ++, 96 00:05:26,090 --> 00:05:29,510 sau Fortran, sau oricare dintre acestea cele de nivel inferior direct în R. 97 00:05:29,510 --> 00:05:32,320 Deci, asta e un adevărat facilitate rece despre R, 98 00:05:32,320 --> 00:05:35,930 dacă îți pasă cu adevărat despre punctul de optimizare. 99 00:05:35,930 --> 00:05:39,490 >> Și este, de asemenea, foarte bun pentru vizualizare web. 100 00:05:39,490 --> 00:05:43,530 Deci D3.js, de exemplu, este Cred că un alt seminar 101 00:05:43,530 --> 00:05:45,130 că am prezentat astăzi. 102 00:05:45,130 --> 00:05:48,510 Și acest lucru este cu adevărat minunat pentru face vizualizări interactive. 103 00:05:48,510 --> 00:05:54,460 Și D3.js presupune că aveți un fel de date care urmează să fie reprezentate grafic 104 00:05:54,460 --> 00:05:58,080 și R este o modalitate foarte bună de a fi în stare să facă analiza datelor înainte să-l exportați 105 00:05:58,080 --> 00:06:04,220 pe la D3.js sau chiar doar rulați D3.js comenzi în R sine, 106 00:06:04,220 --> 00:06:08,240 precum și toate acestea alte biblioteci de asemenea. 107 00:06:08,240 --> 00:06:13,041 >> Așa că a fost doar introducerea ceea ce este R și de ce s-ar putea folosi. 108 00:06:13,041 --> 00:06:14,790 Așa sperăm, am ai convins ceva 109 00:06:14,790 --> 00:06:18,460 despre doar încercarea de a vedea cum este. 110 00:06:18,460 --> 00:06:23,930 Așa că am de gând să merg mai departe și trece prin unele fundamentale despre obiecte R 111 00:06:23,930 --> 00:06:26,150 și ce poți să faci cu adevărat. 112 00:06:26,150 --> 00:06:29,690 >> Deci, aici este doar o grămadă de comenzi de matematica. 113 00:06:29,690 --> 00:06:35,000 Deci, spune you're-- vrei să construiești limbă-te și tu vrei doar 114 00:06:35,000 --> 00:06:38,080 pentru a avea o grămadă de diferite instrumente. 115 00:06:38,080 --> 00:06:42,520 Orice fel de operație voi că vei vreau este destul de mult va fi în R. 116 00:06:42,520 --> 00:06:44,150 >> Deci, aici este 2 plus 2. 117 00:06:44,150 --> 00:06:46,090 Aici este de 2 ori pi. 118 00:06:46,090 --> 00:06:51,870 R are o grămadă de constante built-in pe care le veți folosi frecvent ca pi, e. 119 00:06:51,870 --> 00:06:56,230 >> Și apoi, aici e 7 plus runif, așa runif de 1. 120 00:06:56,230 --> 00:07:02,450 Aceasta este o funcție care este generează o uniformă aleator la 0 la 1. 121 00:07:02,450 --> 00:07:04,400 Și apoi există 3 la puterea de 4. 122 00:07:04,400 --> 00:07:06,430 E rădăcini pătrate. 123 00:07:06,430 --> 00:07:07,270 >> Nu e jurnal. 124 00:07:07,270 --> 00:07:14,500 Deci, log va face de bază exponențială de la sine. 125 00:07:14,500 --> 00:07:18,337 Și apoi, dacă specificați o bază, atunci poti sa faci ce vrei de bază. 126 00:07:18,337 --> 00:07:19,920 Și apoi aici sunt câteva alte comenzi. 127 00:07:19,920 --> 00:07:22,180 Deci ai 23 mod 2. 128 00:07:22,180 --> 00:07:24,910 Apoi, aveți restul. 129 00:07:24,910 --> 00:07:27,110 Apoi, aveți științific notația dacă, de asemenea, 130 00:07:27,110 --> 00:07:34,060 vreau să fac doar mai mult și lucruri mai complicate. 131 00:07:34,060 --> 00:07:37,320 >> Deci, aici este cesiune. 132 00:07:37,320 --> 00:07:40,830 Deci, misiuni tipice în R se face cu o săgeată 133 00:07:40,830 --> 00:07:43,440 așa că este mai puțin decât și apoi cratima. 134 00:07:43,440 --> 00:07:47,250 Deci, aici eu sunt doar atribuire 3 la Val variabilă. 135 00:07:47,250 --> 00:07:50,160 >> Și apoi am imprimarea val și apoi imprimă trei. 136 00:07:50,160 --> 00:07:53,920 În mod implicit în R interpret, ea va imprima lucrurile pentru tine 137 00:07:53,920 --> 00:07:57,280 astfel încât să nu trebuie să specificați imprima un val orice moment doriți să imprimați ceva. 138 00:07:57,280 --> 00:08:00,200 Puteți face doar val și atunci va face asta pentru tine. 139 00:08:00,200 --> 00:08:04,380 >> De asemenea, puteți utiliza egali punct de vedere tehnic ca un operator de atribuire. 140 00:08:04,380 --> 00:08:07,190 Nu sunt ușoare subtilitățile între folosind săgeata 141 00:08:07,190 --> 00:08:10,730 Operatorul și egal Operatorul de misiuni. 142 00:08:10,730 --> 00:08:15,470 Cea mai mare parte prin convenție, toată lumea va folosi doar operatorul de săgeată. 143 00:08:15,470 --> 00:08:21,850 >> Și aici, eu atribuirea acest notație oblic numit un colon 6. 144 00:08:21,850 --> 00:08:26,010 Aceasta generează un vector la 1 la 6. 145 00:08:26,010 --> 00:08:29,350 Și asta într-adevăr frumos, pentru că atunci alocați doar vectorul de val 146 00:08:29,350 --> 00:08:34,270 și care funcționează de la sine. 147 00:08:34,270 --> 00:08:37,799 >> Deci, acest lucru este deja merge de la o single-- o date foarte intuitiv 148 00:08:37,799 --> 00:08:41,070 Structura de doar un dublu de un anumit tip de tip într-un vector 149 00:08:41,070 --> 00:08:45,670 și care va colecta toate valorile scalare pentru tine. 150 00:08:45,670 --> 00:08:50,770 Deci, după ce la scalar, voi au obiecte R și acesta este un vector. 151 00:08:50,770 --> 00:08:55,610 Un vector este nici un fel de colecție de același tip. 152 00:08:55,610 --> 00:08:58,150 Deci, aici sunt o grămadă de vectori. 153 00:08:58,150 --> 00:08:59,800 >> Deci, aceasta este numeric. 154 00:08:59,800 --> 00:09:02,440 Numeric este modul R de a spune dublu. 155 00:09:02,440 --> 00:09:07,390 Și astfel în mod implicit, orice Numărul va fi un dublu. 156 00:09:07,390 --> 00:09:13,150 >> Deci, dacă aveți c de 1,1, 3, negativ 5.7, c este o funcție. 157 00:09:13,150 --> 00:09:16,760 Acest lucru concateneaza toate trei numere într-un vector. 158 00:09:16,760 --> 00:09:19,619 Și acest lucru va be-- deci, dacă observați 3 de la sine, 159 00:09:19,619 --> 00:09:21,910 în mod normal, v-ar asuma că acest lucru este ca un întreg, 160 00:09:21,910 --> 00:09:25,050 ci pentru că toți vectorii sunt de același tip, 161 00:09:25,050 --> 00:09:28,660 aceasta este un vector de dublu sau numeric în acest caz. 162 00:09:28,660 --> 00:09:34,920 >> rnorm este o funcție care generează variables-- normală standard de 163 00:09:34,920 --> 00:09:36,700 sau valori normale standard. 164 00:09:36,700 --> 00:09:38,360 Și eu precizând două dintre ele. 165 00:09:38,360 --> 00:09:43,840 Așa că fac rnorm 2, alocarea că, pentru a devs, iar apoi am imprimarea devs. 166 00:09:43,840 --> 00:09:47,350 Deci, acestea sunt doar două Valorile normale aleatoare. 167 00:09:47,350 --> 00:09:50,060 >> Și apoi Ints dacă faci îți pasă de numere întregi. 168 00:09:50,060 --> 00:09:54,650 Deci, aceasta este doar despre memorie alocare și salvarea dimensiunea memoriei. 169 00:09:54,650 --> 00:10:01,460 Deci, va trebui să adăugați numerele de capital L. 170 00:10:01,460 --> 00:10:04,170 >> In general, aceasta este Notație istoric R lui 171 00:10:04,170 --> 00:10:06,940 pentru ceva numit întreg lung. 172 00:10:06,940 --> 00:10:09,880 Astfel, cele mai multe ori, veți fie se ocupă cu camere duble. 173 00:10:09,880 --> 00:10:15,180 Și dacă va fi vreodată mai târziu pe optimiza codul dvs., 174 00:10:15,180 --> 00:10:18,110 puteți adăuga doar aceste L's ulterior sau în timpul acesta 175 00:10:18,110 --> 00:10:22,280 daca esti ca precognitivă despre ceea ce ai de gând să faci aceste variabile. 176 00:10:22,280 --> 00:10:25,340 177 00:10:25,340 --> 00:10:26,890 >> Deci, aici este un vector de caractere. 178 00:10:26,890 --> 00:10:31,440 Deci, din nou, eu concatenarea trei șiruri de data asta. 179 00:10:31,440 --> 00:10:36,230 Observați că siruri de caractere duble și siruri de caractere unice sunt aceleași în R. 180 00:10:36,230 --> 00:10:41,000 Deci, am arthur și lui Marvin și așa când am o imprimarea, toate acestea 181 00:10:41,000 --> 00:10:43,210 sunt de gând să arate siruri duble. 182 00:10:43,210 --> 00:10:45,880 Și, dacă doriți să includă șirul dublu sau single 183 00:10:45,880 --> 00:10:50,070 în personajele tale, atunci puteți fie alternativ siruri de caractere tale. 184 00:10:50,070 --> 00:10:53,540 >> Deci, Marvin pentru al doilea element, acesta este 185 00:10:53,540 --> 00:10:56,380 O să vă show-- Trebuie doar siruri de caractere dublu 186 00:10:56,380 --> 00:10:59,050 și apoi un singur șir deci acest lucru este alternativ. 187 00:10:59,050 --> 00:11:04,040 În caz contrar, dacă doriți să utilizați un dublu Operatorul șir într-un șir dublu 188 00:11:04,040 --> 00:11:07,090 atunci când se declară, atunci utilizați doar operatorul de evacuare. 189 00:11:07,090 --> 00:11:10,600 Deci, ce faci dublu șir backslash. 190 00:11:10,600 --> 00:11:13,330 >> Și, în sfârșit, avem, de asemenea au vectori logice. 191 00:11:13,330 --> 00:11:15,890 Deci, logical-- atât de adevărat și FALSE, și sunt 192 00:11:15,890 --> 00:11:18,880 Va fi cu majuscule. 193 00:11:18,880 --> 00:11:22,370 Și apoi, din nou, eu concatenarea ei și apoi le atribuirea de bools. 194 00:11:22,370 --> 00:11:24,590 Deci bools se va arăta tu TRUE, FALSE, TRUE și. 195 00:11:24,590 --> 00:11:28,280 196 00:11:28,280 --> 00:11:31,620 >> Deci, aici este indexare vectorized. 197 00:11:31,620 --> 00:11:34,870 Deci, la început, am Iau un function-- 198 00:11:34,870 --> 00:11:39,230 aceasta se numește o sequence-- secvență între 2 și 12. 199 00:11:39,230 --> 00:11:42,490 Și eu iau o secvență de 2. 200 00:11:42,490 --> 00:11:46,660 Deci va face 2, 4, 6, 8, 10 și 12. 201 00:11:46,660 --> 00:11:50,080 Și apoi, eu sunt indexare pentru a obține al treilea element. 202 00:11:50,080 --> 00:11:55,770 >> Deci, un singur lucru de a păstra în minte este că R indexurile pornind de la 1. 203 00:11:55,770 --> 00:12:00,550 Deci, Vals 3 este de gând să dea tu al treilea element. 204 00:12:00,550 --> 00:12:04,580 Aceasta este un fel de diferit de alte Limbi în cazul în care începe de la zero. 205 00:12:04,580 --> 00:12:09,780 Deci, în C sau C ++, de exemplu, ești mergi la a lua al patrulea element. 206 00:12:09,780 --> 00:12:13,280 >> Și aici este vals 3-5. 207 00:12:13,280 --> 00:12:16,030 Deci, un lucru care este foarte cool este că 208 00:12:16,030 --> 00:12:20,410 poate genera variabile temporare interior și apoi doar le folosesc pe zbor. 209 00:12:20,410 --> 00:12:21,960 Deci, aici este 3-5. 210 00:12:21,960 --> 00:12:25,070 Așa că generarea unui vector 3, 4, și 5 și apoi 211 00:12:25,070 --> 00:12:29,700 Mă indexarea pentru a obține a treia, Elemente al patrulea, al cincilea și. 212 00:12:29,700 --> 00:12:32,280 >> Deci în mod similar, puteți abstract asta doar face 213 00:12:32,280 --> 00:12:35,280 orice fel de vector care vă oferă indexare. 214 00:12:35,280 --> 00:12:40,050 Deci, aici este vals și apoi Elemente în primul rând, al treilea, și al șaselea. 215 00:12:40,050 --> 00:12:42,800 Și apoi, dacă vrei pentru a face o completare, 216 00:12:42,800 --> 00:12:45,210 astfel încât să faci doar minus după aceea și că va 217 00:12:45,210 --> 00:12:48,600 vă dau tot ce nu-i în primul rând, al treilea, al șaselea element de ori. 218 00:12:48,600 --> 00:12:51,590 Deci, acest lucru va fi de 4, 8, și 10. 219 00:12:51,590 --> 00:12:54,380 >> Și dacă doriți să obțineți chiar mai avansate, 220 00:12:54,380 --> 00:12:57,610 puteți înlănțui vectori booleene. 221 00:12:57,610 --> 00:13:05,210 Deci, acest indice este de gând să vă dau acest vector de lungime Boolean 6. 222 00:13:05,210 --> 00:13:07,280 Deci, rep virgulă TRUE 3. 223 00:13:07,280 --> 00:13:09,680 Acest lucru se va repeta TRUE trei ori. 224 00:13:09,680 --> 00:13:12,900 Deci, acest lucru vă va oferi o vector TRUE, TRUE, TRUE. 225 00:13:12,900 --> 00:13:17,470 >> Rep FALSE 4-- acest lucru se întâmplă pentru a vă oferi un vector de FALSE, FALSE, FALSE, FALSE. 226 00:13:17,470 --> 00:13:21,280 Și, apoi c se va înlănțui aceste două Booleans împreună. 227 00:13:21,280 --> 00:13:24,090 Deci, ai de gând să obțineți trei TRUEs și apoi patru FALSEs. 228 00:13:24,090 --> 00:13:28,460 >> Așa că, atunci când Vals index, ești mergi la a lua TRUE, TRUE, adevărat. 229 00:13:28,460 --> 00:13:31,420 Așa că o să spun da, Vreau cele trei elemente. 230 00:13:31,420 --> 00:13:33,520 Și apoi FALSE, FALSE, FALSE, FALSE se întâmplă 231 00:13:33,520 --> 00:13:37,140 să spun nu, nu vreau acele elemente așa că nu o să le restituie. 232 00:13:37,140 --> 00:13:41,490 >> Și cred că e de fapt o greșeală de scriere aici deoarece acest spune repeta TRUE 3 233 00:13:41,490 --> 00:13:47,990 și se repetă FALSE 4, și punct de vedere tehnic, tu doar au șase elemente atât de repete FALSE, 234 00:13:47,990 --> 00:13:50,470 ar trebui să fie repetată FALSE 3. 235 00:13:50,470 --> 00:13:55,260 Cred că R este, de asemenea, destul de astfel de inteligent că dacă tocmai specificați 4 aici, atunci 236 00:13:55,260 --> 00:13:56,630 aceasta nu va mai erorii. 237 00:13:56,630 --> 00:13:58,480 Acesta vă va oferi doar această valoare. 238 00:13:58,480 --> 00:14:00,970 Deci va ignora pur și simplu că al patrulea FALSE. 239 00:14:00,970 --> 00:14:05,310 240 00:14:05,310 --> 00:14:09,270 >> Deci, aici este cesiune vectorized. 241 00:14:09,270 --> 00:14:15,480 Deci, set.seed-- acest stabileste doar semințe de numere pseudoaleatoare. 242 00:14:15,480 --> 00:14:20,110 Așa că setarea sămânța de 42, ceea ce înseamnă că dacă am genera 243 00:14:20,110 --> 00:14:22,950 trei aleatorie valori, iar apoi, dacă 244 00:14:22,950 --> 00:14:27,400 rula set.seed pe cont propriu calculator folosind aceeași valoare 42, 245 00:14:27,400 --> 00:14:30,990 atunci veți primi, de asemenea, aceleași trei normale aleatorii. 246 00:14:30,990 --> 00:14:33,411 >> Deci, acest lucru este foarte bun pentru reproductibilitate. 247 00:14:33,411 --> 00:14:35,910 De obicei, când faci ceva tip de analiză științifică, 248 00:14:35,910 --> 00:14:37,230 ce-ar vrea să setați semințele. 249 00:14:37,230 --> 00:14:41,270 În acest fel alti oameni de stiinta pot doar reproduce același cod exact ai 250 00:14:41,270 --> 00:14:44,790 făcut pentru că vor avea exact variabile aleatoare aceleași that-- sau aleatoare 251 00:14:44,790 --> 00:14:47,270 Valorile pe care le-ați luat, de asemenea. 252 00:14:47,270 --> 00:14:49,870 253 00:14:49,870 --> 00:14:53,910 >> Și astfel atribuirea vectorized aici dă dovadă de Vals 1 la 2. 254 00:14:53,910 --> 00:14:59,290 Deci, este nevoie de primele două elemente de Vals și apoi le atribuie la 0. 255 00:14:59,290 --> 00:15:03,940 Și apoi, puteți de asemenea, doar face lucru similar cu Booleans. 256 00:15:03,940 --> 00:15:09,340 >> Deci, Vals nu este egal cu 0-- această voință vă dau un FALSE vector, FALSE, TRUE 257 00:15:09,340 --> 00:15:10,350 în acest caz. 258 00:15:10,350 --> 00:15:13,770 Și apoi, o să spună orice din aceste indici care au fost TRUE, 259 00:15:13,770 --> 00:15:15,270 apoi se va atribui care la 5. 260 00:15:15,270 --> 00:15:18,790 Deci, este nevoie de al treilea element aici și apoi atribuie 5. 261 00:15:18,790 --> 00:15:22,300 >> Și acest lucru este foarte frumos comparativ cu limbaje de nivel scăzut 262 00:15:22,300 --> 00:15:25,560 în cazul în care va trebui să utilizați pentru bucle pentru a face toate aceste lucruri vectorized 263 00:15:25,560 --> 00:15:30,281 pentru că e doar foarte intuitiv și este un singur-linie. 264 00:15:30,281 --> 00:15:32,030 Și ce e vorba mare notație vectorized 265 00:15:32,030 --> 00:15:37,020 este că în R, acestea sunt un fel de built-in, astfel încât acestea sunt aproape la fel de repede 266 00:15:37,020 --> 00:15:42,490 ca face într-un limbaj de nivel scăzut ca spre deosebire de a face o buclă de la R 267 00:15:42,490 --> 00:15:46,317 și apoi au să facă indexarea dinamic în sine. 268 00:15:46,317 --> 00:15:48,900 Și care va fi mai lentă decât a face acest tip de lucru vectorized 269 00:15:48,900 --> 00:15:55,950 în cazul în care se poate face acest lucru în paralel, în cazul în care o face în filetare practic. 270 00:15:55,950 --> 00:15:58,650 >> Deci, aici este vectorizate operațiuni. 271 00:15:58,650 --> 00:16:04,920 Deci, eu sunt generatoare de o valoare la 1 la 3, atribuirea că la vec1, 3 la 5, vec2, 272 00:16:04,920 --> 00:16:05,950 adăugându-le împreună. 273 00:16:05,950 --> 00:16:11,490 Le adaugă componente înțelept așa e 1 plus 3, 2 plus 4, și așa mai departe. 274 00:16:11,490 --> 00:16:13,330 >> vec1 ori vec2. 275 00:16:13,330 --> 00:16:16,110 Aceasta multiplică două Valori component înțelept. 276 00:16:16,110 --> 00:16:21,830 Deci, este o ori de 3, de 2 ori 4, și apoi de 3 ori 5. 277 00:16:21,830 --> 00:16:28,250 >> Și apoi, în mod similar, puteți face, de asemenea, comparisons-- comparații logice. 278 00:16:28,250 --> 00:16:33,640 Deci e FALS FALS ADEVARAT în acest caz pentru că 1 nu este mai mare de 3, 279 00:16:33,640 --> 00:16:35,920 2 nu este mai mare de 4. 280 00:16:35,920 --> 00:16:41,160 Aceasta este, cred, un alt greșeli, 3 este cu siguranță nu mai mare de 5. 281 00:16:41,160 --> 00:16:41,660 Da. 282 00:16:41,660 --> 00:16:45,770 Și astfel încât să puteți face doar tot aceste operațiuni simple 283 00:16:45,770 --> 00:16:48,350 deoarece moștenit lor din clasele înșiși. 284 00:16:48,350 --> 00:16:51,110 285 00:16:51,110 --> 00:16:52,580 >> Așa că a fost doar vectorul. 286 00:16:52,580 --> 00:16:56,530 Și asta e un fel de cele mai fundamentale R obiect deoarece dat un vector, 287 00:16:56,530 --> 00:16:59,170 puteți construi obiecte mai avansate. 288 00:16:59,170 --> 00:17:00,560 >> Deci, aici e un matrice. 289 00:17:00,560 --> 00:17:05,030 Aceasta este, în esență, de captare de ce o matrice este ea însăși. 290 00:17:05,030 --> 00:17:10,099 Deci, în acest caz, este trei diferit vectori, în cazul în care fiecare este o coloană, 291 00:17:10,099 --> 00:17:12,710 sau puteți lua în considerare ca fiecare dintre ele este un rând. 292 00:17:12,710 --> 00:17:18,250 >> Așa că stocarea o matrice de la 1 la 9 și apoi mă specificarea 3 rânduri. 293 00:17:18,250 --> 00:17:23,364 Deci 1-9 vă va oferi un vector de 1, 2, 3, 4, 5, 6, și tot drumul până la 9. 294 00:17:23,364 --> 00:17:29,250 >> Un lucru de a păstra, de asemenea, în minte este că Magazine R valori în format coloane majore. 295 00:17:29,250 --> 00:17:34,160 Deci, cu alte cuvinte, atunci când vezi 1 9, se va stoca them-- 296 00:17:34,160 --> 00:17:36,370 se va fi 1, 2, 3 în prima coloană, 297 00:17:36,370 --> 00:17:38,510 și apoi o va face 4, 5, 6 în a doua coloană, 298 00:17:38,510 --> 00:17:41,440 și apoi 7, 8, 9 în coloana a treia. 299 00:17:41,440 --> 00:17:45,570 >> Și aici sunt alte funcții comune care le puteți utiliza. 300 00:17:45,570 --> 00:17:49,650 Deci mat dim, acest lucru vă va oferi dimensiunile matricei. 301 00:17:49,650 --> 00:17:52,620 O să vă întoarceți un vector de dimensiune. 302 00:17:52,620 --> 00:17:55,580 Deci, în acest caz, deoarece matricea noastra este 3 cu 3, 303 00:17:55,580 --> 00:18:01,900 se gând să vă dau un vector numeric e 3 3. 304 00:18:01,900 --> 00:18:05,270 >> Și aici este doar arată multiplicare matrice. 305 00:18:05,270 --> 00:18:11,970 Deci, de obicei, daca doar faci asterisk-- astfel mat asterisc mat-- 306 00:18:11,970 --> 00:18:15,380 acest lucru se întâmplă pentru a fi operație pentru componente înțelept 307 00:18:15,380 --> 00:18:17,300 sau ceea ce se numește produsul Hadamard. 308 00:18:17,300 --> 00:18:21,310 Deci va face fiecare componentă-înțelept elemente. 309 00:18:21,310 --> 00:18:23,610 Cu toate acestea, dacă doriți multiplication-- matrice 310 00:18:23,610 --> 00:18:29,380 astfel înmulțirea primele ori rând prima coloană a doua matrice de 311 00:18:29,380 --> 00:18:34,510 și așa on-- v-ar folosi această operațiune la sută. 312 00:18:34,510 --> 00:18:38,110 >> Și t de mat este doar un operație pentru transpune. 313 00:18:38,110 --> 00:18:42,590 Așa că spun iau transpusa în matricea, se multiplica prin matricea 314 00:18:42,590 --> 00:18:43,090 în sine. 315 00:18:43,090 --> 00:18:45,006 Și apoi o să întoarce la voi un alt 3 316 00:18:45,006 --> 00:18:50,700 de 3 matrice care arată produsul pe care vrea. 317 00:18:50,700 --> 00:18:53,750 >> Și astfel că a fost matrice. 318 00:18:53,750 --> 00:18:56,020 Aici este ceea ce se numește un cadru de date. 319 00:18:56,020 --> 00:19:00,780 Un cadru de date vă puteți gândi ca o matrice, dar fiecare coloană sine 320 00:19:00,780 --> 00:19:02,990 va fi de un tip diferit. 321 00:19:02,990 --> 00:19:07,320 >> Deci, ce este foarte misto despre date rame este că în analiza datelor sine, 322 00:19:07,320 --> 00:19:11,260 ai de gând să aibă toate aceste date eterogene și toate acestea într-adevăr 323 00:19:11,260 --> 00:19:15,640 lucruri murdar în care fiecare din coloanele înșiși pot fi de diferite tipuri. 324 00:19:15,640 --> 00:19:21,460 Deci, aici vreau să spun crea o cadru de date, face int la 1 la 3, 325 00:19:21,460 --> 00:19:24,750 și apoi au, de asemenea, un vector de caractere. 326 00:19:24,750 --> 00:19:28,470 Așa că am putea indexa prin fiecare dintre aceste coloane 327 00:19:28,470 --> 00:19:30,930 și apoi voi primi valorile în sine. 328 00:19:30,930 --> 00:19:34,370 Și puteți face, de asemenea, un fel de operațiuni pe cadre de date. 329 00:19:34,370 --> 00:19:38,040 Și cele mai multe ori atunci când sunteți face analize de date sau un fel 330 00:19:38,040 --> 00:19:42,042 de preprocesare, vei putea de lucru cu aceste structuri de date 331 00:19:42,042 --> 00:19:44,250 în cazul în care fiecare coloană se întâmplă a fi de un tip diferit. 332 00:19:44,250 --> 00:19:47,880 333 00:19:47,880 --> 00:19:52,970 >> În cele din urmă, astfel încât acestea sunt, în esență, doar cele patru obiecte esențiale în lista R. 334 00:19:52,970 --> 00:19:55,820 va colecta orice fel alte obiecte doriți. 335 00:19:55,820 --> 00:20:00,130 Deci va stoca aceasta într-o singură variabilă pe care le puteți accesa cu ușurință. 336 00:20:00,130 --> 00:20:02,370 >> Deci, aici, eu iau o listă. 337 00:20:02,370 --> 00:20:04,460 Spun lucruri egal 3. 338 00:20:04,460 --> 00:20:08,060 Așa că am de gând să aibă un element în lista, iar aceasta se numește chestia asta, 339 00:20:08,060 --> 00:20:10,570 și că va avea valoarea 3. 340 00:20:10,570 --> 00:20:13,140 >> Pot crea, de asemenea, o matrice. 341 00:20:13,140 --> 00:20:17,970 Deci, aceasta este de la 1 la 4 și scop rând este egal cu 2, deci o 2 de 2 matrice. 342 00:20:17,970 --> 00:20:20,270 De asemenea, în listă și se numește mat. 343 00:20:20,270 --> 00:20:24,690 moreStuff, un șir de caractere, și chiar o altă listă în sine. 344 00:20:24,690 --> 00:20:27,710 >> Deci, aceasta este o listă care este 5 și urs. 345 00:20:27,710 --> 00:20:30,990 Deci are valoarea de 5 și IT are ursul șir de caractere 346 00:20:30,990 --> 00:20:32,710 și este o listă în interiorul-o listă. 347 00:20:32,710 --> 00:20:35,965 Astfel încât să puteți avea aceste lucruri recursive unde 348 00:20:35,965 --> 00:20:38,230 aveți another-- o tastați în tipul. 349 00:20:38,230 --> 00:20:41,420 Deci în mod similar, puteți avea o matrice într-o altă matrice și așa mai departe. 350 00:20:41,420 --> 00:20:44,264 Și o listă este doar o modalitate buna de colectare și agregare 351 00:20:44,264 --> 00:20:45,430 toate aceste obiecte diferite. 352 00:20:45,430 --> 00:20:50,210 353 00:20:50,210 --> 00:20:57,150 >> Și, în sfârșit, aici este doar ajutor în cazul în care acest lucru a fost doar trecut peste foarte repede. 354 00:20:57,150 --> 00:21:01,350 Deci, oricând ești confuz despre un fel de funcție, 355 00:21:01,350 --> 00:21:03,510 puteți face ajutorul acestei funcții. 356 00:21:03,510 --> 00:21:07,120 Deci, poți să faci de ajutor matrice sau o matrice semn de întrebare. 357 00:21:07,120 --> 00:21:11,430 Și ajutor și semnul de întrebare sunt doar prescurtare pentru același lucru 358 00:21:11,430 --> 00:21:13,040 astfel încât acestea sunt pseudonime. 359 00:21:13,040 --> 00:21:16,820 >> lm este o funcție care doar nu un model liniar. 360 00:21:16,820 --> 00:21:20,340 Dar dacă doar ai nici o idee cum că lucrări, puteți face doar ajutorul LM 361 00:21:20,340 --> 00:21:24,610 și că voi da niște un fel de documente care 362 00:21:24,610 --> 00:21:27,960 Se pare ca un fel de Pagina om în Unix, în cazul în care 363 00:21:27,960 --> 00:21:34,210 aveți o scurtă descriere a ceea ce face, de asemenea, ceea ce argumentele sale sunt, 364 00:21:34,210 --> 00:21:38,850 ce se întoarce, și la doar sfaturi cu privire la modul în care să-l folosească, și câteva exemple de asemenea. 365 00:21:38,850 --> 00:21:41,680 366 00:21:41,680 --> 00:21:52,890 >> Așa că lasă-mă să merg mai departe și spectacol unele demo de utilizare a R. OK. 367 00:21:52,890 --> 00:21:55,470 Așa că m-am dus peste foarte rapid doar datele 368 00:21:55,470 --> 00:21:59,440 Structuri și un fel de op-- unele dintre operațiunile. 369 00:21:59,440 --> 00:22:02,960 Iată unele funcții. 370 00:22:02,960 --> 00:22:06,750 >> Deci, aici Mă duc pentru a defini o funcție. 371 00:22:06,750 --> 00:22:09,970 Deci, eu sunt, de asemenea, cu ajutorul Operatorul de atribuire aici, 372 00:22:09,970 --> 00:22:12,610 și apoi vreau să spun declare ca o funcție. 373 00:22:12,610 --> 00:22:14,140 Și este nevoie de valoarea x. 374 00:22:14,140 --> 00:22:18,210 Deci, aceasta este orice valoare doriti și am de gând să se întoarcă x sine. 375 00:22:18,210 --> 00:22:20,840 Deci, aceasta este funcția de identitate. 376 00:22:20,840 --> 00:22:23,670 >> Și ce e cool despre acest în comparație cu alte limbi 377 00:22:23,670 --> 00:22:26,330 și un alt nivel scăzut Limbi este că x 378 00:22:26,330 --> 00:22:29,350 pot fi de orice tip în sine și se va întoarce acel tip. 379 00:22:29,350 --> 00:22:35,251 Astfel, puteți imagine-- Să mă doar să rulați acest repede. 380 00:22:35,251 --> 00:22:35,750 Scuze. 381 00:22:35,750 --> 00:22:40,300 >> Deci, un singur lucru trebuie să menționez, de asemenea, este că acest editor eu sunt, folosind 382 00:22:40,300 --> 00:22:41,380 este numit rstudio. 383 00:22:41,380 --> 00:22:44,389 Aceasta este ceea ce se numește un IDE. 384 00:22:44,389 --> 00:22:46,180 Și un lucru care este foarte frumos despre acest 385 00:22:46,180 --> 00:22:51,500 este că aceasta include o mulțime de lucruri pe care vrei să faci în R de la sine 386 00:22:51,500 --> 00:22:53,180 doar foarte intuitiv. 387 00:22:53,180 --> 00:22:55,550 >> Deci, aici este o consolă interpret. 388 00:22:55,550 --> 00:23:02,160 Deci în mod similar, puteți obține, de asemenea, acest consolă brut doar de a face un R. de capital 389 00:23:02,160 --> 00:23:05,630 Și aceasta este exact același lucru ca și consola. 390 00:23:05,630 --> 00:23:12,210 Deci, eu pot face doar id funcție x, x, x. 391 00:23:12,210 --> 00:23:16,130 Și then-- și apoi că va fi bine în sine. 392 00:23:16,130 --> 00:23:19,200 393 00:23:19,200 --> 00:23:21,740 >> Deci, rstudio este mare deoarece are consola. 394 00:23:21,740 --> 00:23:25,360 Ea are, de asemenea, documentele doriți pentru a rula pe. 395 00:23:25,360 --> 00:23:28,629 Și apoi are unele variabile pe care le puteți vedea în medii. 396 00:23:28,629 --> 00:23:30,420 Și apoi, dacă aveți pentru a face parcele, atunci 397 00:23:30,420 --> 00:23:33,730 puteti vedea doar aici, spre deosebire de gestionarea tuturor acestor ferestre diferite 398 00:23:33,730 --> 00:23:35,940 de la sine. 399 00:23:35,940 --> 00:23:40,530 >> De fapt Eu folosesc personal Vim, dar eu simt ca rstudio este excelent doar 400 00:23:40,530 --> 00:23:44,640 pentru a obține o idee bună de modul de utilizare a R. De obicei, 401 00:23:44,640 --> 00:23:47,040 când încerci să învăța unele noi sarcini, 402 00:23:47,040 --> 00:23:49,590 nu vrei să se ocupe prea multe lucruri deodată. 403 00:23:49,590 --> 00:23:53,120 Deci, R este doar o rstudio very-- este o modalitate foarte buna de a învăța R 404 00:23:53,120 --> 00:23:56,760 fără a fi nevoie de a face cu toate aceste alte lucruri. 405 00:23:56,760 --> 00:23:58,600 >> Deci, aici eu sunt difuzate id salut. 406 00:23:58,600 --> 00:24:00,090 Acest întoarce salut. 407 00:24:00,090 --> 00:24:01,740 id 123. 408 00:24:01,740 --> 00:24:04,610 Aici este un vector de numere întregi. 409 00:24:04,610 --> 00:24:08,620 Deci în mod similar, pentru că puteți ia orice fel de valoare, 410 00:24:08,620 --> 00:24:16,060 poti face revenirea id de x astfel se întoarce 1234 și 5. 411 00:24:16,060 --> 00:24:22,210 >> Și permiteți-mi să vă arăt că aceasta este într-adevăr un număr întreg. 412 00:24:22,210 --> 00:24:28,800 Și în mod similar, dacă faci clasă id x, va fi întreg. 413 00:24:28,800 --> 00:24:34,170 Și apoi, puteți, de asemenea compara cele două și e adevărat. 414 00:24:34,170 --> 00:24:38,350 Așa că a verifica dacă ID-x este egal Egal cu x și aviz 415 00:24:38,350 --> 00:24:39,760 că vă oferă două TRUEs. 416 00:24:39,760 --> 00:24:44,280 Deci, acest lucru nu se spune sunt cele două obiecte identice, 417 00:24:44,280 --> 00:24:46,845 dar sunt fiecare dintre intrările în cadrul vectorii identice. 418 00:24:46,845 --> 00:24:50,000 419 00:24:50,000 --> 00:24:52,090 >> Iată bounded.compare. 420 00:24:52,090 --> 00:24:58,470 Deci, acest lucru este puțin mai complicat prin aceea că are o condiție dacă și altcineva 421 00:24:58,470 --> 00:25:00,960 și apoi este nevoie de doi argumente la un moment dat. 422 00:25:00,960 --> 00:25:02,640 Deci x este de orice tip. 423 00:25:02,640 --> 00:25:06,280 Și eu spun acest lucru al doilea argument este o. 424 00:25:06,280 --> 00:25:08,380 Acest lucru poate fi orice, de asemenea. 425 00:25:08,380 --> 00:25:12,490 Dar în mod implicit, o să ia 5, dacă nu se specifică nimic. 426 00:25:12,490 --> 00:25:16,730 >> Deci, aici am de gând să spun dacă x este mai mare decât o. 427 00:25:16,730 --> 00:25:19,220 Deci, dacă eu nu specifica o, ea spune că dacă x este mai mare de 5, 428 00:25:19,220 --> 00:25:20,470 apoi am de gând să se întoarcă TRUE. 429 00:25:20,470 --> 00:25:23,230 altfel, am de gând să se întoarcă FALSE. 430 00:25:23,230 --> 00:25:24,870 Așa că lasă-mă să merg mai departe și de a defini acest lucru. 431 00:25:24,870 --> 00:25:30,600 432 00:25:30,600 --> 00:25:34,550 >> Și acum am de gând să rula bounded.compare 3. 433 00:25:34,550 --> 00:25:39,150 Așa se spune este de 3 mai than-- este mai mare de 3 5. 434 00:25:39,150 --> 00:25:41,830 Nu, nu e așa de FALSE. 435 00:25:41,830 --> 00:25:46,550 >> Și bounded.compare 3 și am de gând să-l compare cu ajutorul unui egal cu 2. 436 00:25:46,550 --> 00:25:50,700 Așa că acum spun da, acum am doresc o să fie altceva. 437 00:25:50,700 --> 00:25:52,750 Așa că am de gând să spun un, ar trebui să fie de 2. 438 00:25:52,750 --> 00:25:56,640 >> Pot face nici acest tip de notație sau spun un egal cu 2. 439 00:25:56,640 --> 00:25:58,720 Aceasta este o mult mai ușor de citit în care, atunci când sunteți 440 00:25:58,720 --> 00:26:01,450 uita la aceste într-adevăr funcții complicate care 441 00:26:01,450 --> 00:26:08,110 ia arguments-- multiple și acest poate fi zeci oftentimes-- doar că 442 00:26:08,110 --> 00:26:11,140 o este egal cu 2 este mai ușor de citit pentru vă astfel încât mai târziu, în viitor 443 00:26:11,140 --> 00:26:13,020 veți ști ce faci. 444 00:26:13,020 --> 00:26:17,120 >> Deci, în acest caz, sunt spune este 3 mai mare de 2. 445 00:26:17,120 --> 00:26:18,270 Da, este. 446 00:26:18,270 --> 00:26:22,350 Și în mod similar, pot elimina doar acest lucru și spune, este de 3 mai mare de 2 447 00:26:22,350 --> 00:26:23,440 unde o este egal cu 2. 448 00:26:23,440 --> 00:26:26,230 Și asta e de asemenea adevărat. 449 00:26:26,230 --> 00:26:26,730 Da? 450 00:26:26,730 --> 00:26:29,670 >> Audiența: Esti executare linie cu linie? 451 00:26:29,670 --> 00:26:30,670 >> DUSTIN TRAN: Da, eu sunt. 452 00:26:30,670 --> 00:26:33,900 Deci, ceea ce fac aici este luând acest text document-- 453 00:26:33,900 --> 00:26:39,825 și ceea ce este grozav la rstudio este că Eu pot rula doar o short-- o comandă rapidă a tastei. 454 00:26:39,825 --> 00:26:41,820 Așa că fac control-Enter. 455 00:26:41,820 --> 00:26:44,850 >> Și apoi, eu iau linie în documentul de text 456 00:26:44,850 --> 00:26:46,710 și apoi punerea în consolă. 457 00:26:46,710 --> 00:26:50,800 Deci, aici vreau să spun, bounded.compare și fac control-X. 458 00:26:50,800 --> 00:26:52,540 Deci, eu pot face doar rula aici. 459 00:26:52,540 --> 00:26:54,920 Și apoi că va lua linie și apoi pune-l aici. 460 00:26:54,920 --> 00:26:57,900 Și apoi în mod similar, pot alerga aici. 461 00:26:57,900 --> 00:27:04,630 Și atunci se va păstra doar definirea liniile în consola de genul asta. 462 00:27:04,630 --> 00:27:10,690 >> Și dacă observați, de asemenea, cret bretele sunt acolo ca și în C sintaxa. 463 00:27:10,690 --> 00:27:13,910 X- dacă în cazul în care condiția este, de asemenea, va folosi paranteze și apoi 464 00:27:13,910 --> 00:27:15,350 puteți folosi altceva. 465 00:27:15,350 --> 00:27:17,496 Un altul este mai dacă. 466 00:27:17,496 --> 00:27:21,440 Deci, asta va fi x este egal egal cu un, de exemplu. 467 00:27:21,440 --> 00:27:24,190 468 00:27:24,190 --> 00:27:26,350 Și apoi am de gând să reveni ceva aici. 469 00:27:26,350 --> 00:27:29,490 >> Observați că există două diferite lucruri aici ce se intampla. 470 00:27:29,490 --> 00:27:34,360 Una dintre ele este faptul că aici am specificând returna valoarea TRUE. 471 00:27:34,360 --> 00:27:35,950 Aici Spun doar că de x. 472 00:27:35,950 --> 00:27:39,970 Deci, R va fi, de obicei, în mod implicit ia ultimul arguments-- 473 00:27:39,970 --> 00:27:43,510 sau de a lua ultima linie a codului, și care va fi ceea ce este returnat. 474 00:27:43,510 --> 00:27:46,920 Deci, aici este același lucru ca face întoarcere de x. 475 00:27:46,920 --> 00:27:49,450 476 00:27:49,450 --> 00:27:50,540 >> Și să-ți arăt. 477 00:27:50,540 --> 00:27:54,000 478 00:27:54,000 --> 00:27:57,052 Și atunci, se va lucra la fel ca asta. 479 00:27:57,052 --> 00:27:58,260 Așa că lasă-mă să continue cu asta. 480 00:27:58,260 --> 00:28:00,630 >> Deci, mai, dacă. 481 00:28:00,630 --> 00:28:04,060 Și într-adevăr, eu pot întoarce orice mi-ar plăcea. 482 00:28:04,060 --> 00:28:06,680 Deci, eu nu trebuie nici măcar să întoarcere Booleans tot timpul, 483 00:28:06,680 --> 00:28:08,410 Mă pot întoarce pur și simplu altceva. 484 00:28:08,410 --> 00:28:10,670 Deci, eu pot face urs întoarcere. 485 00:28:10,670 --> 00:28:12,989 >> Deci, dacă x este egal cu egal a, se va reveni urs. 486 00:28:12,989 --> 00:28:14,530 În caz contrar, se va reveni TRUE. 487 00:28:14,530 --> 00:28:19,310 Pot face, de asemenea, un vector sau într-adevăr ceva. 488 00:28:19,310 --> 00:28:22,210 >> Și în mod normal în static Limbi dactilografiate, 489 00:28:22,210 --> 00:28:23,840 ai avea să specificați un tip de aici. 490 00:28:23,840 --> 00:28:25,750 Și observați că acesta poate fi pur și simplu orice. 491 00:28:25,750 --> 00:28:32,400 Și R este suficient de inteligent ca aceasta va face doar acest lucru și va funcționa bine. 492 00:28:32,400 --> 00:28:33,620 >> Așa că lasă-mă să definesc asta. 493 00:28:33,620 --> 00:28:39,460 494 00:28:39,460 --> 00:28:41,230 Unexpected-- oh pare rău. 495 00:28:41,230 --> 00:28:44,336 Ar trebui să fie o acoladă aici. 496 00:28:44,336 --> 00:28:44,836 OK. 497 00:28:44,836 --> 00:28:45,336 Se răcește. 498 00:28:45,336 --> 00:28:52,580 499 00:28:52,580 --> 00:28:54,530 În regulă. 500 00:28:54,530 --> 00:28:58,250 Deci, acum sa compare 3 și un egal cu 3. 501 00:28:58,250 --> 00:29:01,860 Deci, ar trebui să return-- yeah-- ursul valoare. 502 00:29:01,860 --> 00:29:06,740 >> Deci, acum ceva mai general, este ca și cum ce despre alte structuri de date. 503 00:29:06,740 --> 00:29:09,110 Deci, aveți această funcție. 504 00:29:09,110 --> 00:29:15,360 Acest lucru se întâmplă pentru a lucra pe orice fel de valoare cum ar fi 3 sau orice numeric, 505 00:29:15,360 --> 00:29:17,500 cu alte cuvinte, dublu. 506 00:29:17,500 --> 00:29:19,330 >> Dar ceea ce despre ceva ca un vector. 507 00:29:19,330 --> 00:29:27,750 Deci, ce se întâmplă dacă do-- așa că sunt O să atribui val la, să zicem, 4 și 6. 508 00:29:27,750 --> 00:29:31,640 Deci, dacă mă voi întoarce acest lucru, aceasta este un vector de la 4, 5, 6. 509 00:29:31,640 --> 00:29:34,935 >> Acum, să vedem ce se întâmplă dacă fac bounded.compare val. 510 00:29:34,935 --> 00:29:37,680 511 00:29:37,680 --> 00:29:42,450 Deci, acest lucru se întâmplă pentru a vă oferi 15 1251. 512 00:29:42,450 --> 00:29:46,440 Deci, cu alte cuvinte, spune daca te uiti la această condiție 513 00:29:46,440 --> 00:29:50,040 așa se spune x este mai mic decât o sau ceva. 514 00:29:50,040 --> 00:29:51,880 Deci, aceasta este puțin confuz, deoarece acum 515 00:29:51,880 --> 00:29:53,379 tu chiar nu știu ce se întâmplă. 516 00:29:53,379 --> 00:29:58,690 Deci, cred un lucru care este într-adevăr bun despre doar încercarea de a depana 517 00:29:58,690 --> 00:30:04,600 este că puteți face doar val este mai mare decât o și a vedea ce se întâmplă acolo. 518 00:30:04,600 --> 00:30:09,720 >> Deci, val-- o este implicit 5 astfel Hai să facem Val mai mare de 5. 519 00:30:09,720 --> 00:30:14,280 Deci, aceasta este o FALSE FALSE vector ADEVARAT. 520 00:30:14,280 --> 00:30:17,206 Deci, acum, când te uiți la acest, se va spune dacă, 521 00:30:17,206 --> 00:30:20,080 și apoi o să vă dau această este un vector de false ADEVARAT. 522 00:30:20,080 --> 00:30:23,450 >> Deci, atunci când trece acest lucru în R, R nu are nici o idee despre ceea ce faci. 523 00:30:23,450 --> 00:30:26,650 Pentru că se așteaptă un singur valoare, care este un Boolean, iar acum 524 00:30:26,650 --> 00:30:29,420 dai un vector de Booleans. 525 00:30:29,420 --> 00:30:31,970 Deci în mod implicit, R este doar va spune ce naiba, 526 00:30:31,970 --> 00:30:35,440 Am de gând să se presupună că ești de gând să ia primul element de aici. 527 00:30:35,440 --> 00:30:38,320 Așa că am de gând să say-- am de gând să se presupună că acest lucru este fals. 528 00:30:38,320 --> 00:30:40,890 Deci va spune Nu, acest lucru nu este corect. 529 00:30:40,890 --> 00:30:45,246 >> De asemenea, se va fi val egal egal o. 530 00:30:45,246 --> 00:30:47,244 Nu, îmi pare rău 5. 531 00:30:47,244 --> 00:30:48,910 Și, de asemenea, va fi fals, de asemenea. 532 00:30:48,910 --> 00:30:52,410 Deci, o să spun nu, Nu este adevarat la fel de bine așa că este 533 00:30:52,410 --> 00:30:53,680 O să se întoarcă aceasta ultima. 534 00:30:53,680 --> 00:30:56,420 535 00:30:56,420 --> 00:31:01,360 >> Deci, aceasta este fie un lucru bun sau unul rău lucru, în funcție de modul în care îl vezi. 536 00:31:01,360 --> 00:31:05,104 Pentru că atunci când ești crearea acestor funcții, 537 00:31:05,104 --> 00:31:06,770 nu știi de fapt ce se întâmplă. 538 00:31:06,770 --> 00:31:10,210 Deci, uneori ai vrea o eroare, sau poate vrei doar un avertisment. 539 00:31:10,210 --> 00:31:12,160 În acest caz, R nu face asta. 540 00:31:12,160 --> 00:31:14,300 Deci, este într-adevăr până la ai bazat pe ce 541 00:31:14,300 --> 00:31:17,310 crezi limba ar trebui să facă în acest caz 542 00:31:17,310 --> 00:31:22,920 dacă treci într-un vector de Booleans când faci o condiție dacă. 543 00:31:22,920 --> 00:31:31,733 >> Deci, să spunem că ai avut originalul una cu altcineva dacă întoarce TRUE și ești 544 00:31:31,733 --> 00:31:34,190 O să se întoarcă FALSE. 545 00:31:34,190 --> 00:31:39,300 Deci, un fel de abstractizare acest lucru este să spun că am 546 00:31:39,300 --> 00:31:41,530 chiar nu au nevoie de acest lucru condiționată. 547 00:31:41,530 --> 00:31:47,220 Un alt lucru pe care îl pot face este doar revenind valorile în sine. 548 00:31:47,220 --> 00:31:53,240 Deci, dacă observați, dacă face val este mai mare de 5, 549 00:31:53,240 --> 00:31:56,350 acest lucru se întâmplă pentru a reveni un vector false ADEVARAT. 550 00:31:56,350 --> 00:31:58,850 >> Poate că aceasta este ceea ce doresc pentru bounded.compare. 551 00:31:58,850 --> 00:32:02,940 Vrei să se întoarcă un vector de Booleans unde se compară fiecare din valorile 552 00:32:02,940 --> 00:32:04,190 pentru ei. 553 00:32:04,190 --> 00:32:11,165 Deci, poți să faci doar bounded.compare Funcția x, un egal cu 5. 554 00:32:11,165 --> 00:32:13,322 555 00:32:13,322 --> 00:32:15,363 Și atunci în loc de a face această condiție dacă altceva, 556 00:32:15,363 --> 00:32:21,430 Mă duc să se întoarcă x este mai mare de 5. 557 00:32:21,430 --> 00:32:23,620 Deci, dacă e adevărat, atunci se va reveni TRUE. 558 00:32:23,620 --> 00:32:26,830 Și apoi, dacă nu e, e O să se întoarcă FALSE. 559 00:32:26,830 --> 00:32:30,880 >> Și acest lucru va lucra pentru oricare dintre aceste structuri. 560 00:32:30,880 --> 00:32:41,450 Deci, eu pot bounded.compare c 1 6 sau 9 și apoi voi spune un egal 6, 561 00:32:41,450 --> 00:32:42,799 de exemplu. 562 00:32:42,799 --> 00:32:44,840 Și apoi o să vă dau Boolean dreapta 563 00:32:44,840 --> 00:32:48,240 vector care sunteți proiectarea. 564 00:32:48,240 --> 00:32:50,660 >> Deci, acestea sunt doar funcții iar acum permiteți-mi să 565 00:32:50,660 --> 00:32:54,980 vă arăt câteva imagini interactive. 566 00:32:54,980 --> 00:32:59,700 Nu cred că de fapt am Wi-Fi aici asa ca lasa-ma doar merge mai departe 567 00:32:59,700 --> 00:33:01,970 și săriți peste asta cred. 568 00:33:01,970 --> 00:33:05,260 >> Dar un lucru e misto deși este că, dacă doar 569 00:33:05,260 --> 00:33:09,600 doresc să testeze o grămadă de comenzi date diferite, 570 00:33:09,600 --> 00:33:13,320 există o grămadă de diferite seturi de date care sunt deja preîncărcate în R. 571 00:33:13,320 --> 00:33:15,770 Deci una dintre ele este denumit setul de date iris. 572 00:33:15,770 --> 00:33:18,910 Aceasta este una dintre cele mai bine cunoscute cele din masina de învățare. 573 00:33:18,910 --> 00:33:23,350 De obicei Vei face doar un fel de cazuri de testare pentru a vedea dacă codul se execută. 574 00:33:23,350 --> 00:33:27,520 Așa că hai să verifice ceea ce iris este. 575 00:33:27,520 --> 00:33:33,130 >> Deci, acest lucru se întâmplă a fi un cadru de date. 576 00:33:33,130 --> 00:33:36,000 Și e un fel de mult timp, deoarece Tocmai am imprimat iris. 577 00:33:36,000 --> 00:33:38,810 Este imprimarea întregul lucru. 578 00:33:38,810 --> 00:33:42,830 Deci este dotat cu toate aceste nume diferite. 579 00:33:42,830 --> 00:33:45,505 Deci, iris este o colecție de diferite flori. 580 00:33:45,505 --> 00:33:48,830 În acest caz, se spune tu speciile de ea, 581 00:33:48,830 --> 00:33:54,760 toate aceste latimi diferite și lungimi de foaie și petale. 582 00:33:54,760 --> 00:33:58,880 >> Și astfel, în mod normal, în cazul în care doriți să imprimați iris, 583 00:33:58,880 --> 00:34:03,680 de exemplu, nu vrei să-l aibă face toate acestea pentru că poate prelua 584 00:34:03,680 --> 00:34:05,190 întreaga consolă. 585 00:34:05,190 --> 00:34:09,280 Deci, un lucru care este într-adevăr frumos este funcția cap. 586 00:34:09,280 --> 00:34:12,929 Deci, dacă faci doar cap iris, acest lucru vă va oferi 587 00:34:12,929 --> 00:34:17,389 primele cinci rânduri, sau șase cred. 588 00:34:17,389 --> 00:34:19,909 Și apoi de bine, puteti specifica doar aici. 589 00:34:19,909 --> 00:34:22,914 Deci, 20-- acest lucru va da tu primele 20 de rânduri. 590 00:34:22,914 --> 00:34:24,830 Și de fapt am fost un fel de surprins de faptul că această 591 00:34:24,830 --> 00:34:28,770 mi-a dat șase Să-mi merge mai departe și verificați iris-- sau cap, îmi pare rău. 592 00:34:28,770 --> 00:34:31,699 593 00:34:31,699 --> 00:34:34,960 Și aici se va da tu documentația 594 00:34:34,960 --> 00:34:37,960 din ceea ce face capul valoare. 595 00:34:37,960 --> 00:34:40,839 Deci, se întoarce primul sau ultima a unui obiect. 596 00:34:40,839 --> 00:34:42,630 Și apoi am de gând să uita-te la valorile implicite. 597 00:34:42,630 --> 00:34:47,340 Și apoi se spune implicit Metoda de cap x și n este egal cu 6L. 598 00:34:47,340 --> 00:34:50,620 Deci, acest returnează primele șase elemente. 599 00:34:50,620 --> 00:34:55,050 Și în mod similar dacă observați aici, m-am nu trebuie să specificați n = 6. 600 00:34:55,050 --> 00:34:56,840 În mod implicit se folosește șase, cred. 601 00:34:56,840 --> 00:35:00,130 Și apoi, dacă vreau să specificați un anumit valoare, atunci pot vedea la fel de bine. 602 00:35:00,130 --> 00:35:02,970 603 00:35:02,970 --> 00:35:10,592 >> Așa că este unele comenzi simple și aici este un alt unul care este doar-- bine, 604 00:35:10,592 --> 00:35:12,550 Am can-- aceasta este de fapt un pic mai complex, 605 00:35:12,550 --> 00:35:17,130 dar acest lucru va dura doar clasa de fiecare coloană a setului de date iris. 606 00:35:17,130 --> 00:35:20,910 Deci, aceasta vă va arăta ceea ce fiecare dintre acestea coloanele sunt în termeni de tipuri lor. 607 00:35:20,910 --> 00:35:23,665 Deci, lungime sepală este numeric, Lățimea sepală este numeric. 608 00:35:23,665 --> 00:35:26,540 Toate aceste valori sunt doar numeric pentru că vă pot spune de la aceste date 609 00:35:26,540 --> 00:35:29,440 structura acestea sunt toți o să numerică. 610 00:35:29,440 --> 00:35:34,310 >> Și coloana Specii va fi un factor. 611 00:35:34,310 --> 00:35:37,270 Deci, în mod normal, ai crede că acest lucru este ca un șir de caractere. 612 00:35:37,270 --> 00:35:48,830 Dar daca doar faci irisSpecies, și apoi am de gând să fac cap 5, 613 00:35:48,830 --> 00:35:51,820 iar acest lucru se întâmplă pentru a imprima în primele cinci valori. 614 00:35:51,820 --> 00:35:54,150 >> Și apoi observa acest lucru niveluri. 615 00:35:54,150 --> 00:35:58,870 Deci, acest lucru este saying-- acesta este modul lui R de a avea variabile categorice. 616 00:35:58,870 --> 00:36:03,765 Deci, în loc de doar având în șiruri de caractere, 617 00:36:03,765 --> 00:36:06,740 ea are un nivel care să specifice care dintre aceste lucruri sunt. 618 00:36:06,740 --> 00:36:12,450 >> Deci, haideți să spunem irisSpecies 1. 619 00:36:12,450 --> 00:36:17,690 Deci, ce vrei să faci aici este că sunt Subsetting la această coloană Specii. 620 00:36:17,690 --> 00:36:21,480 Deci, aceasta ia Coloană Specii și apoi 621 00:36:21,480 --> 00:36:23,820 indici l pentru a obține primul element. 622 00:36:23,820 --> 00:36:27,140 Deci, acest lucru ar trebui să vă dea setosa. 623 00:36:27,140 --> 00:36:28,710 Și, de asemenea, vă oferă niveluri aici. 624 00:36:28,710 --> 00:36:32,812 >> Astfel, puteți de asemenea compara acest lucru setosa caracter 625 00:36:32,812 --> 00:36:34,645 iar acest lucru nu se întâmplă să fie adevărat, deoarece una 626 00:36:34,645 --> 00:36:37,940 este de un tip diferit de celălalt. 627 00:36:37,940 --> 00:36:40,590 Sau Cred că este adevărat că R este mai inteligent decât asta. 628 00:36:40,590 --> 00:36:45,420 Și se uită la acest lucru și apoi spune, poate că aceasta este ceea ce vrei. 629 00:36:45,420 --> 00:36:51,860 Deci va spun caracterul string setosa este la fel ca aceasta. 630 00:36:51,860 --> 00:37:01,290 Și apoi în mod similar, puteți De asemenea, la fel ca și apuca aceste așa mai departe. 631 00:37:01,290 --> 00:37:05,580 >> Deci, care este doar un fel de comenzi rapide ale setului de date. 632 00:37:05,580 --> 00:37:08,030 Deci, aici e ceva de explorare a datelor. 633 00:37:08,030 --> 00:37:11,360 Deci, aceasta este un pic mai mult implicat cu analiza datelor. 634 00:37:11,360 --> 00:37:18,340 Și asta este luat de la unele bootcamp la R la Berkeley. 635 00:37:18,340 --> 00:37:20,790 >> Deci, bibliotecă străin. 636 00:37:20,790 --> 00:37:24,880 Așa că am de gând să se încarce într-un bibliotecă care se numește străin. 637 00:37:24,880 --> 00:37:32,460 Deci, acest lucru se întâmplă să-mi dea read.dta astfel presupunem că am acest set de date. 638 00:37:32,460 --> 00:37:39,000 Acest lucru este stocat în curentul director de consolă meu de lucru. 639 00:37:39,000 --> 00:37:42,190 Așa că hai să vedem ce directorul de lucru este. 640 00:37:42,190 --> 00:37:44,620 >> Deci, aici e directorul meu de lucru. 641 00:37:44,620 --> 00:37:50,040 Și citi date dot, acest lucru, spune acest fișier 642 00:37:50,040 --> 00:37:54,650 se află în dosarul de date de acest director de lucru curent. 643 00:37:54,650 --> 00:38:00,520 Și acest lucru nu este read.dta o comandă implicit. 644 00:38:00,520 --> 00:38:02,760 Cred că o încărcat în deja. 645 00:38:02,760 --> 00:38:04,750 IEI asumat Am încărcat acest lucru în deja. 646 00:38:04,750 --> 00:38:08,115 >> Dar așa read.dta nu se întâmplă a fi o comandă implicit. 647 00:38:08,115 --> 00:38:11,550 Și de aceea vei avea pentru a încărca în această bibliotecă package-- 648 00:38:11,550 --> 00:38:14,500 acest pachet numit străin. 649 00:38:14,500 --> 00:38:16,690 Și dacă nu aveți pachetul, cred 650 00:38:16,690 --> 00:38:19,180 străin este unul dintre cele încorporate. 651 00:38:19,180 --> 00:38:31,150 În caz contrar, puteți, de asemenea face install.packages 652 00:38:31,150 --> 00:38:33,180 iar acest lucru va instala pachetul. 653 00:38:33,180 --> 00:38:36,878 Și acest lucru vă va oferi R. Uh, nu. 654 00:38:36,878 --> 00:38:39,830 655 00:38:39,830 --> 00:38:43,140 Și apoi Mă duc să se oprească asta pentru că am o au deja. 656 00:38:43,140 --> 00:38:46,920 >> Dar ceea ce este foarte frumos despre R este faptul că gestionarea pachetului 657 00:38:46,920 --> 00:38:48,510 Sistemul este foarte elegant. 658 00:38:48,510 --> 00:38:52,470 Pentru că va stoca tot într-adevăr frumos pentru tine. 659 00:38:52,470 --> 00:38:59,780 Deci, în acest caz, se va stoca l în, cred, această bibliotecă aici. 660 00:38:59,780 --> 00:39:02,390 >> Deci, oricând doriți să instala pachete noi, 661 00:39:02,390 --> 00:39:04,980 e la fel de simplu ca și face install.packages 662 00:39:04,980 --> 00:39:07,500 și R va gestiona toate pachetele pentru tine. 663 00:39:07,500 --> 00:39:12,900 Deci, nu trebuie să faci ceva în Python, în cazul în care aveți pachet extern 664 00:39:12,900 --> 00:39:15,330 manageri, cum ar fi hârtie Anaconda în cazul în care ești 665 00:39:15,330 --> 00:39:18,310 doing-- instalați Pachete afara de Python 666 00:39:18,310 --> 00:39:20,940 și apoi încercați să le executați tine. 667 00:39:20,940 --> 00:39:22,210 Deci, acesta este într-adevăr un fel frumos. 668 00:39:22,210 --> 00:39:25,590 >> Și install.packages necesită internet. 669 00:39:25,590 --> 00:39:31,950 Este o ia de la un server și magazia că 670 00:39:31,950 --> 00:39:33,960 colectează toate Pachete este numit CRAN. 671 00:39:33,960 --> 00:39:40,690 Și puteți specifica ce fel de oglindă doriți să descărcați pachetele de. 672 00:39:40,690 --> 00:39:43,420 >> Deci, aici eu sunt de a lua acest set de date. 673 00:39:43,420 --> 00:39:46,240 Am citit în utilizarea acestei funcții. 674 00:39:46,240 --> 00:39:49,360 Așa că lasă-mă să merg mai departe și face asta. 675 00:39:49,360 --> 00:39:52,900 >> Deci, să presupunem că aveți această CCD 676 00:39:52,900 --> 00:39:55,550 și aveți absolut nici o idee ce este. 677 00:39:55,550 --> 00:39:58,560 Și acest fapt vine în sus destul de des în industria 678 00:39:58,560 --> 00:40:00,910 în cazul în care doar aveți aceste tone și tone de lucruri murdar 679 00:40:00,910 --> 00:40:02,890 și sunt incredibil de nemarcat. 680 00:40:02,890 --> 00:40:06,380 Deci, aici am această CCD și nu știu 681 00:40:06,380 --> 00:40:08,400 ceea ce este atât de Sunt doar arătând pentru a verifica. 682 00:40:08,400 --> 00:40:10,620 >> Așa că am de gând să fac cu capul înainte. 683 00:40:10,620 --> 00:40:14,190 Așa că am verifica primele șase coloane de ceea ce acest set de date este. 684 00:40:14,190 --> 00:40:21,730 Deci, aceasta este stat, pres04, iar apoi toate acestea fel diferit de coloane. 685 00:40:21,730 --> 00:40:25,612 Și ceea ce este interesant aici, cred, este că 686 00:40:25,612 --> 00:40:27,945 ar presupune că acest lucru arata ca un fel de alegeri. 687 00:40:27,945 --> 00:40:30,482 688 00:40:30,482 --> 00:40:32,190 Și cred că tocmai de la uita la dosar 689 00:40:32,190 --> 00:40:41,070 nume este un fel de colectare de date despre candidați sau alegători 690 00:40:41,070 --> 00:40:44,920 care au votat pentru președinți specifice sau candidații președinte 691 00:40:44,920 --> 00:40:46,550 pentru alegerile din 2004. 692 00:40:46,550 --> 00:40:52,920 >> Deci, aici este valorile 1, 2 astfel o modalitate de a stoca 693 00:40:52,920 --> 00:40:56,540 candidații președinte sunt numele lor. 694 00:40:56,540 --> 00:40:59,780 În acest caz, se pare ca ei sunt valori pur și simplu întregi. 695 00:40:59,780 --> 00:41:04,030 Deci 2004, a fost Bush versus Kerry cred. 696 00:41:04,030 --> 00:41:09,010 Și acum, să spunem că pur și simplu nu știu dacă 1 corespunde Bush sau 2 697 00:41:09,010 --> 00:41:11,703 corespunde Kerry sau și așa mai departe și așa mai departe, nu? 698 00:41:11,703 --> 00:41:15,860 >> Și acest lucru este, doar pentru mine, o problemă destul de comună. 699 00:41:15,860 --> 00:41:18,230 Deci, ce puteți face în acest caz? 700 00:41:18,230 --> 00:41:20,000 Așa că haideți să afișeze toate aceste lucruri. 701 00:41:20,000 --> 00:41:22,790 >> de stat, eu sunt presupunând că acest lucru provine din diferite state. 702 00:41:22,790 --> 00:41:25,100 partyid, venituri. 703 00:41:25,100 --> 00:41:27,710 Să ne uităm la partyid. 704 00:41:27,710 --> 00:41:32,800 Poate un singur lucru il poti face este uita-te la fiecare dintre observațiile 705 00:41:32,800 --> 00:41:36,250 care au o partyid de republican sau democrat sau ceva. 706 00:41:36,250 --> 00:41:38,170 Așa că hai să uităm la ceea ce este partyid. 707 00:41:38,170 --> 00:41:41,946 >> Așa că am de gând să ia dat și apoi mă duc 708 00:41:41,946 --> 00:41:47,960 pentru a face acest semn dolar Operatorul care am făcut-o anterior 709 00:41:47,960 --> 00:41:50,770 iar acest lucru se întâmplă la subset de acea coloană. 710 00:41:50,770 --> 00:41:57,760 Și apoi voi la cap acest lucru în 20, doar pentru a vedea cum arata. 711 00:41:57,760 --> 00:42:00,170 >> Deci, aceasta este doar o adunatura de AN. 712 00:42:00,170 --> 00:42:02,800 Deci, cu alte cuvinte, aveți datele care lipsesc cu privire la tipii ăștia. 713 00:42:02,800 --> 00:42:08,100 Dar tu, de asemenea, observați acest dat partyid este un factor 714 00:42:08,100 --> 00:42:10,030 astfel încât acest lucru vă oferă diferite categorii. 715 00:42:10,030 --> 00:42:14,170 Deci, cu alte cuvinte, partyid poate lua Democrat, republican, independent, 716 00:42:14,170 --> 00:42:16,640 sau altceva. 717 00:42:16,640 --> 00:42:23,940 >> Deci, haideți să mergem mai departe și să a se vedea care dintre acestea este-- oh, OK. 718 00:42:23,940 --> 00:42:28,480 Așa că am de gând să subset la partyid și apoi 719 00:42:28,480 --> 00:42:32,780 uita-te la cele care sunt Democrat, de exemplu. 720 00:42:32,780 --> 00:42:37,150 Acest lucru se întâmplă pentru a vă oferi un Boolean, un Boolean mare de TRUEs și FALSEs. 721 00:42:37,150 --> 00:42:41,630 >> Și acum, să zicem vreau a subset la tipii ăștia. 722 00:42:41,630 --> 00:42:47,260 Deci, acest lucru se va lua dat-mi și subset de oricare observații 723 00:42:47,260 --> 00:42:48,910 au egal partyid egal democrat. 724 00:42:48,910 --> 00:42:52,830 725 00:42:52,830 --> 00:42:55,180 Și acest lucru este destul de mult, deoarece există atât de mulți dintre ei. 726 00:42:55,180 --> 00:42:59,060 Așa că acum, am de gând să se îndrepte acest lucru în 20. 727 00:42:59,060 --> 00:43:05,690 728 00:43:05,690 --> 00:43:11,270 >> Și, după cum observați, este egal cu egal este interesant în care sunteți 729 00:43:11,270 --> 00:43:13,250 already-- bază de asemenea, inclusiv AN. 730 00:43:13,250 --> 00:43:19,010 Deci, în acest caz, tot nu se poate obține orice informație pentru că acum ai AN 731 00:43:19,010 --> 00:43:22,650 si doriti doar pentru a vedea care dintre observație corespund Democrat 732 00:43:22,650 --> 00:43:24,670 și nu acestea lipsesc se valori. 733 00:43:24,670 --> 00:43:27,680 Deci, cum te-ai scăpa de aceste AN? 734 00:43:27,680 --> 00:43:36,410 >> Deci, aici eu sunt doar folosind tasta pe meu cursor și apoi spune deplasează în jurul. 735 00:43:36,410 --> 00:43:39,778 Și apoi aici Mă duc să spun is.na datpartyid. 736 00:43:39,778 --> 00:43:48,970 737 00:43:48,970 --> 00:43:52,720 Deci acest lucru și și va lua doi vectori Boolean diferite 738 00:43:52,720 --> 00:43:57,160 și spun că va fi Adevărat și fals, de exemplu. 739 00:43:57,160 --> 00:43:59,190 Deci va face această componentă-înțelept. 740 00:43:59,190 --> 00:44:02,910 Deci, aici vreau să spun decolare cadrului de date, subset 741 00:44:02,910 --> 00:44:10,170 pentru cei care corespund Democrat, și scoateți oricare dintre ele care nu sunt NA. 742 00:44:10,170 --> 00:44:13,540 >> Deci, acest will-- ar trebui îți dau ceva. 743 00:44:13,540 --> 00:44:16,540 744 00:44:16,540 --> 00:44:17,600 Să vedem is.na. 745 00:44:17,600 --> 00:44:24,670 746 00:44:24,670 --> 00:44:27,690 Să încercăm datpartyid is.na. 747 00:44:27,690 --> 00:44:36,290 748 00:44:36,290 --> 00:44:45,290 Și acest lucru ar trebui să acorde Tu-- sorry-- doar un vector boolean. 749 00:44:45,290 --> 00:44:49,260 Și apoi, pentru că este atât de mult, Am de gând să subset la 20. 750 00:44:49,260 --> 00:44:49,760 OK. 751 00:44:49,760 --> 00:44:51,570 Deci, aceasta ar trebui să funcționeze. 752 00:44:51,570 --> 00:44:54,700 >> Și acesta va fi, de asemenea, TRUEs. 753 00:44:54,700 --> 00:45:01,830 Ah, deci eroarea mea este că eu I'm-- folosi C ++ și C alternativ, așa că am face 754 00:45:01,830 --> 00:45:03,590 această greșeală tot timpul. 755 00:45:03,590 --> 00:45:05,807 Și operatorul de fapt cel dorit. 756 00:45:05,807 --> 00:45:08,140 Nu vrei să folosească două ampersand, doar unul singur. 757 00:45:08,140 --> 00:45:14,970 758 00:45:14,970 --> 00:45:17,010 OK. 759 00:45:17,010 --> 00:45:18,140 >> Să vedem. 760 00:45:18,140 --> 00:45:20,930 761 00:45:20,930 --> 00:45:23,920 Așa că am subsetted la partyid unde sunt democrat 762 00:45:23,920 --> 00:45:25,300 și ei nu lipsesc valorile. 763 00:45:25,300 --> 00:45:27,690 Și acum să ne uităm la care dintre ei au votat pentru. 764 00:45:27,690 --> 00:45:31,530 Deci, se pare ca cel mai mult dintre ei au votat pentru 1. 765 00:45:31,530 --> 00:45:36,090 Așa că am de gând să merg mai departe și spun că este Kerry. 766 00:45:36,090 --> 00:45:39,507 >> Și în mod similar, puteți De asemenea, du-te la republican 767 00:45:39,507 --> 00:45:41,090 și sperăm, acest lucru ar trebui să vă dea 2. 768 00:45:41,090 --> 00:45:49,730 769 00:45:49,730 --> 00:45:51,770 E doar o grămadă de diferite coloane. 770 00:45:51,770 --> 00:45:53,070 Și într-adevăr, e 2. 771 00:45:53,070 --> 00:45:55,750 Deci, partyid toate republican, cele mai multe dintre ele sunt cu drept de vot pentru 2 persoane. 772 00:45:55,750 --> 00:45:58,390 >> Deci, se pare ca, doar uitandu-se la acest lucru, 773 00:45:58,390 --> 00:46:00,600 Republican va fi un very-- sau partyid 774 00:46:00,600 --> 00:46:02,790 va fi un foarte factor important în determinarea 775 00:46:02,790 --> 00:46:05,420 care candidatul sunt vom vota pentru. 776 00:46:05,420 --> 00:46:07,120 Și acest lucru este evident adevărat, în general. 777 00:46:07,120 --> 00:46:10,139 Iar acest Meciuri dumneavoastră intuiție, desigur. 778 00:46:10,139 --> 00:46:11,930 Deci, se pare ca eu sunt în criză de timp, astfel încât 779 00:46:11,930 --> 00:46:17,040 permiteți-mi să ar trebui să meargă mai departe și arată unele imagini rapide. 780 00:46:17,040 --> 00:46:21,120 Deci, aici e ceva care este ușor mai complicat cu vizualizare. 781 00:46:21,120 --> 00:46:26,450 Deci, în acest caz, aceasta este o foarte simplă analiză de doar verificare ce 782 00:46:26,450 --> 00:46:28,500 președintele '04 este. 783 00:46:28,500 --> 00:46:33,920 >> Deci, în acest caz, să spui a vrut să răspundă la această întrebare. 784 00:46:33,920 --> 00:46:38,540 Deci, să presupunem că am vrut să știm vot comportament în alegerile 2004 președinte 785 00:46:38,540 --> 00:46:41,170 și modul în care variază în funcție de rasă. 786 00:46:41,170 --> 00:46:44,380 Deci, nu numai vrei să a se vedea comportamentul de vot, 787 00:46:44,380 --> 00:46:47,860 dar doriți să subset al fiecărui rasă și un fel de rezumă. 788 00:46:47,860 --> 00:46:50,770 Și pot să vă spun doar prin această notație complex 789 00:46:50,770 --> 00:46:52,580 că acest lucru este un fel de asistent neclar. 790 00:46:52,580 --> 00:46:56,390 >> Astfel, una dintre cele mai avansate R pachetele care, de asemenea, un fel de recent 791 00:46:56,390 --> 00:47:00,070 este numit dplyr. 792 00:47:00,070 --> 00:47:03,060 Deci, este cea de aici. 793 00:47:03,060 --> 00:47:08,080 Și ggplot2 ggg-- este doar un frumos mod de a face vizualizări bune 794 00:47:08,080 --> 00:47:09,400 decât cea încorporat. 795 00:47:09,400 --> 00:47:11,108 >> Așa că am de gând să se încarce aceste două biblioteci. 796 00:47:11,108 --> 00:47:13,200 797 00:47:13,200 --> 00:47:16,950 Și apoi, am de gând să merg înainte și rulați această comandă. 798 00:47:16,950 --> 00:47:19,050 Se pot trata doar acest lucru ca o cutie neagră. 799 00:47:19,050 --> 00:47:23,460 >> Ce se întâmplă este că această conductă Operatorul se trece în acest argument 800 00:47:23,460 --> 00:47:24,110 în aici. 801 00:47:24,110 --> 00:47:28,070 Deci, eu spun grup de dat rasă și apoi președinte 04. 802 00:47:28,070 --> 00:47:31,530 Și apoi, toate aceste alte comenzi sunt filtrarea și apoi sintetizarea 803 00:47:31,530 --> 00:47:34,081 în cazul în care fac conta și atunci am o complot aici. 804 00:47:34,081 --> 00:47:39,980 805 00:47:39,980 --> 00:47:42,500 OK rece. 806 00:47:42,500 --> 00:47:44,620 Deci, haideți să mergem mai departe și vezi cum arata. 807 00:47:44,620 --> 00:47:52,280 808 00:47:52,280 --> 00:47:57,290 >> Deci, ce se întâmplă aici este că am doar complotat fiecare dintre curse și apoi 809 00:47:57,290 --> 00:47:59,670 care dintre ei au votat pentru. 810 00:47:59,670 --> 00:48:03,492 Și aceste două diferite Valorile corespund 2 și 1. 811 00:48:03,492 --> 00:48:05,325 Dacă doriți să fie mai elegant, puteți, de asemenea 812 00:48:05,325 --> 00:48:11,770 specifica doar că 2 este Kerry-- sau 2 este Bush, iar apoi 1 este Kerry. 813 00:48:11,770 --> 00:48:13,700 Și puteți avea, de asemenea, că în legenda ta. 814 00:48:13,700 --> 00:48:17,410 >> Și puteți împărți, de asemenea, aceste grafice. 815 00:48:17,410 --> 00:48:19,480 Pentru ca un lucru este că, dacă observați, 816 00:48:19,480 --> 00:48:24,560 acest lucru nu este foarte ușor să se identifice care dintre aceste două valori sunt mai mari. 817 00:48:24,560 --> 00:48:27,920 Deci, un lucru pe care vrea să face este să ia acest domeniu albastru 818 00:48:27,920 --> 00:48:31,855 și doar muta aici, astfel încât să pot compara aceste două una lângă alta. 819 00:48:31,855 --> 00:48:34,480 Și cred că e ceva ce Nu am timp să fac chiar acum, 820 00:48:34,480 --> 00:48:36,660 dar asta e, de asemenea, foarte ușor de făcut. 821 00:48:36,660 --> 00:48:40,310 Poti sa te uiti doar în paginile de manual ale ggplot. 822 00:48:40,310 --> 00:48:47,170 Deci, poți să faci la fel ca și ggplot că și citi în această pagină om. 823 00:48:47,170 --> 00:48:51,920 >> Așa că lasă-mă să repede vă arăt câteva lucruri interesante. 824 00:48:51,920 --> 00:48:57,610 Să mergem mai departe și du-te sa-- doar un aplicarea de masina de învățare. 825 00:48:57,610 --> 00:49:02,450 Să presupunem că avem aceste trei Pachete așa am de gând să se încarce acestora în. 826 00:49:02,450 --> 00:49:05,500 827 00:49:05,500 --> 00:49:09,170 Deci, asta doar imprimă unele Informații după ce am încărcat în lucru. 828 00:49:09,170 --> 00:49:15,220 Deci, eu spun acest read.csv, acest set de date, iar acum 829 00:49:15,220 --> 00:49:18,940 Am de gând să mergeți mai departe și uite și a vedea ce este în interiorul acestui set de date. 830 00:49:18,940 --> 00:49:22,080 >> Astfel, primele 20 de observații. 831 00:49:22,080 --> 00:49:27,190 Așa că am X1, X2, iar Y. Deci, se pare ca un buchet de aceste valori 832 00:49:27,190 --> 00:49:31,640 sunt variind de la 20 la 80, poate și ceva. 833 00:49:31,640 --> 00:49:37,700 Și apoi în mod similar pentru X2 și apoi acest Y pare a fi etichete 0 și 1. 834 00:49:37,700 --> 00:49:49,500 >> Pentru a verifica acest lucru, pot doar face X1 date rezumat. 835 00:49:49,500 --> 00:49:51,660 Și apoi în mod similar pentru toate celelalte coloane. 836 00:49:51,660 --> 00:49:55,300 Deci rezumat este o modalitate rapidă de doar arătându-vă valori rapid. 837 00:49:55,300 --> 00:49:56,330 Oh, îmi pare rău. 838 00:49:56,330 --> 00:49:58,440 Aceasta ar trebui să fie Y. 839 00:49:58,440 --> 00:50:03,420 >> Deci, în acest caz, dă cuantile, mediane, maxes de asemenea. 840 00:50:03,420 --> 00:50:07,130 În acest caz, dataY, puteți vedea că este doar de gând să fie 0 și 1. 841 00:50:07,130 --> 00:50:10,100 De asemenea, media este de a spune 0,6, înseamnă doar că ea 842 00:50:10,100 --> 00:50:13,380 se pare ca am mai multe 1s decât 0s. 843 00:50:13,380 --> 00:50:16,160 >> Așa că lasă-mă să merg mai departe și spectacol tu cum arata. 844 00:50:16,160 --> 00:50:17,470 Așa că Mă duc la complot asta. 845 00:50:17,470 --> 00:50:22,852 846 00:50:22,852 --> 00:50:24,636 Să vedem cum să îndepărteze acest lucru. 847 00:50:24,636 --> 00:50:30,492 848 00:50:30,492 --> 00:50:31,468 Oh OK. 849 00:50:31,468 --> 00:50:35,840 850 00:50:35,840 --> 00:50:36,340 OK. 851 00:50:36,340 --> 00:50:37,590 >> Deci, asta este ceea ce pare. 852 00:50:37,590 --> 00:50:46,310 Deci, se pare ca galben-am specificate ca 0, iar apoi roșu am specificat ca 1s. 853 00:50:46,310 --> 00:50:52,190 Deci, aici se pare ca puncte de etichete și ea 854 00:50:52,190 --> 00:50:56,410 Se pare că ai vrut doar câteva fel de clustering în acest sens. 855 00:50:56,410 --> 00:51:01,020 >> Și permiteți-mi să mergeți mai departe și spectacol tu unele dintre aceste funcții built-in. 856 00:51:01,020 --> 00:51:03,580 Deci, aici este lm. 857 00:51:03,580 --> 00:51:06,060 Deci, aceasta este doar încearcă pentru a se potrivi o linie de aceasta. 858 00:51:06,060 --> 00:51:08,640 Deci, ce este cel mai bun mod care pot potrivi o linie astfel de 859 00:51:08,640 --> 00:51:14,020 că va separa cel mai bine acest tip de grupare. 860 00:51:14,020 --> 00:51:21,790 Și în mod ideal, puteți vedea doar că tocmai am rulat toate aceste comenzi 861 00:51:21,790 --> 00:51:25,450 și apoi, am de gând înainte și adăugați linia. 862 00:51:25,450 --> 00:51:28,970 >> Deci, acest lucru pare ca cea mai buna ghicire. 863 00:51:28,970 --> 00:51:34,150 Durează cel mai bun care minimizează eroarea în încercarea de a se potrivi această linie. 864 00:51:34,150 --> 00:51:40,000 Evident, acest lucru pare un fel de bun, dar asta nu e cel mai bun. 865 00:51:40,000 --> 00:51:43,130 Și modele liniare, în general, vor fi 866 00:51:43,130 --> 00:51:46,811 foarte mare pentru teorie și doar un fel de fundamentele constitutive ale mașinii 867 00:51:46,811 --> 00:51:47,310 de învățare. 868 00:51:47,310 --> 00:51:50,330 Dar, în practică, ai de gând să vrei sa faci ceva mai general. 869 00:51:50,330 --> 00:51:54,280 >> Astfel, puteți încerca pur și simplu de funcționare ceva numit o rețea neuronală. 870 00:51:54,280 --> 00:51:57,110 Aceste lucruri sunt din ce in ce mai frecvente. 871 00:51:57,110 --> 00:52:00,530 Și ei doar lucrează fantastic pentru seturi de date de mari dimensiuni. 872 00:52:00,530 --> 00:52:07,080 Deci, în acest caz, ne vom have-- numai hai see-- avem nrow. 873 00:52:07,080 --> 00:52:09,010 Deci, nrow este doar că numărul de rânduri. 874 00:52:09,010 --> 00:52:11,790 Deci, în acest caz, am au 100 de observații. 875 00:52:11,790 --> 00:52:15,010 >> Așa că lasă-mă să merg mai departe și face o rețea neuronală. 876 00:52:15,010 --> 00:52:18,620 Deci, acest lucru este foarte frumos pentru că eu pot spune doar nnet 877 00:52:18,620 --> 00:52:21,767 iar apoi am regresia Y. Deci Y este acea coloană. 878 00:52:21,767 --> 00:52:23,850 Și apoi regresia pe celelalte două variabile. 879 00:52:23,850 --> 00:52:27,360 Deci, aceasta este mai scurt notație pentru X1 și X2. 880 00:52:27,360 --> 00:52:29,741 >> Deci, haideți să mergeți mai departe și a alerga acest lucru. 881 00:52:29,741 --> 00:52:30,240 Oh, îmi pare rău. 882 00:52:30,240 --> 00:52:32,260 Am nevoie pentru a rula toată chestia asta. 883 00:52:32,260 --> 00:52:37,500 Și acest lucru este doar de imprimare notație pentru cât de repede sau nu repede 884 00:52:37,500 --> 00:52:38,460 convergente. 885 00:52:38,460 --> 00:52:41,420 Deci, se pare că a converg. 886 00:52:41,420 --> 00:52:44,970 Așa că lasă-mă să merg mai departe și imprimare ce arata asta ca. 887 00:52:44,970 --> 00:52:51,260 >> Vezi aici e imaginea și aici este un contur care arată cât de bine se potrivește. 888 00:52:51,260 --> 00:52:56,380 Și acest lucru este doar-- puteți vedea acest că acest lucru este foarte, foarte frumos. 889 00:52:56,380 --> 00:52:59,400 Ar putea fi chiar overfitting, dar puteți, de asemenea, 890 00:52:59,400 --> 00:53:03,390 cont de acest lucru cu alte tehnici cum ar fi cross-validare. 891 00:53:03,390 --> 00:53:06,180 Și acestea sunt, de asemenea, construite în R. 892 00:53:06,180 --> 00:53:09,170 >> Și permiteți-mi să vă arăt susține mașină vector. 893 00:53:09,170 --> 00:53:12,470 Acesta este un alt într-adevăr comun Tehnica în masina de învățare. 894 00:53:12,470 --> 00:53:18,550 Este foarte similar cu modele liniare, dar se folosește ceea ce se numește o metodă nucleu. 895 00:53:18,550 --> 00:53:22,790 Și să vedem cât de bine că nu. 896 00:53:22,790 --> 00:53:26,430 Deci acesta este foarte similar cu modul bine o rețea neuronală efectuează, 897 00:53:26,430 --> 00:53:27,900 dar este mult mai lin. 898 00:53:27,900 --> 00:53:35,740 Și acest lucru se bazează pe de what-- cum muncă SVMs. 899 00:53:35,740 --> 00:53:40,250 >> Deci, aceasta este doar o foarte scurtă prezentare a unora 900 00:53:40,250 --> 00:53:43,822 funcțiilor built-in puteți face și, de asemenea, o parte din explorare date. 901 00:53:43,822 --> 00:53:45,905 Așa că lasă-mă să merg mai departe și du-te înapoi la diapozitivele. 902 00:53:45,905 --> 00:53:50,290 903 00:53:50,290 --> 00:53:53,670 >> Deci evident, aceasta este nu foarte cuprinzătoare. 904 00:53:53,670 --> 00:53:57,140 Și acest lucru este de fapt doar un teaser care vă arată ce poți să faci cu adevărat în R. 905 00:53:57,140 --> 00:53:59,100 Deci, dacă ai la fel ca pentru a afla mai multe, aici 906 00:53:59,100 --> 00:54:01,210 sunt o grămadă de resurse diferite. 907 00:54:01,210 --> 00:54:06,890 >> Deci, dacă ești pasionat de manuale sau esti doar pasionat de lectură lucruri on-line, 908 00:54:06,890 --> 00:54:09,670 atunci acesta este un fantastic unul de Hadley Wickham, 909 00:54:09,670 --> 00:54:13,010 care, de asemenea, a creat toate acestea Pachete cu adevărat rece. 910 00:54:13,010 --> 00:54:17,420 Daca esti pasionat de clipuri video, atunci Berkeley are un bootcamp minunat 911 00:54:17,420 --> 00:54:21,060 asta e several-- că e un fel de lung. 912 00:54:21,060 --> 00:54:24,210 Și vă va învăța aproape tot ce doriți să știți despre R. 913 00:54:24,210 --> 00:54:27,770 >> Și în mod similar, există Codeacademy și toate acestea alt tip 914 00:54:27,770 --> 00:54:29,414 site-uri de interactive. 915 00:54:29,414 --> 00:54:31,580 Ele sunt, de asemenea, obținerea common-- mai multe și mai frecvente. 916 00:54:31,580 --> 00:54:33,749 Deci, acest lucru este foarte similar cu Codeacademy. 917 00:54:33,749 --> 00:54:35,790 Și, în sfârșit, dacă doar doresc comunitar și de a ajuta, 918 00:54:35,790 --> 00:54:38,800 acestea sunt o grămadă de lucruri pe care le puteți merge la. 919 00:54:38,800 --> 00:54:40,880 Evident, noi încă utilizați liste de discuții, doar 920 00:54:40,880 --> 00:54:44,860 ca aproape orice alt comunitate limbaj de programare. 921 00:54:44,860 --> 00:54:47,880 Și #rstats, aceasta este comunitatea noastră Twitter. 922 00:54:47,880 --> 00:54:49,580 Asta este de fapt destul de comună. 923 00:54:49,580 --> 00:54:50,850 Și apoi utilizator! 924 00:54:50,850 --> 00:54:52,340 Este doar conferința noastră. 925 00:54:52,340 --> 00:54:55,390 >> Și apoi, desigur, puteți folosi toate aceste alte lucruri Q & A, 926 00:54:55,390 --> 00:54:57,680 ca Stack Overflow, Google și apoi GitHub. 927 00:54:57,680 --> 00:55:00,490 Deoarece cele mai multe dintre aceste pachete și o mulțime de comunității 928 00:55:00,490 --> 00:55:03,420 va fi centrat în jurul curs de dezvoltare Codul pentru că este open source. 929 00:55:03,420 --> 00:55:05,856 Și e doar foarte frumos pe GitHub. 930 00:55:05,856 --> 00:55:08,730 Și, în sfârșit, puteți să mă contactați dacă trebuie doar întrebări rapide. 931 00:55:08,730 --> 00:55:13,530 Deci ma puteti gasi pe Twitter aici, site-ul meu, și doar e-mail meu. 932 00:55:13,530 --> 00:55:17,840 Astfel, sperăm, că a fost something-- doar un teaser scurt 933 00:55:17,840 --> 00:55:20,900 de ce R este într-adevăr capabil de a face. 934 00:55:20,900 --> 00:55:23,990 Și sperăm, doar verifica aceste trei link-uri 935 00:55:23,990 --> 00:55:25,760 si vezi ce poti face mai mult. 936 00:55:25,760 --> 00:55:28,130 Și cred că asta este vorba doar despre asta. 937 00:55:28,130 --> 00:55:28,630 Mulțumesc. 938 00:55:28,630 --> 00:55:30,780 >> [Aplauze] 939 00:55:30,780 --> 00:55:31,968