1 00:00:00,000 --> 00:00:00,750 2 00:00:00,750 --> 00:00:09,800 >> [Muziek] 3 00:00:09,800 --> 00:00:13,014 4 00:00:13,014 --> 00:00:13,680 DUSTIN TRAN: Hi. 5 00:00:13,680 --> 00:00:14,980 Dustin Mijn Naam. 6 00:00:14,980 --> 00:00:18,419 Dus ik zal presenteren Data-analyse in R. 7 00:00:18,419 --> 00:00:19,710 Gewoon een beetje over mezelf. 8 00:00:19,710 --> 00:00:24,320 Ik ben momenteel een afgestudeerde student in de Techniek en Technische Wetenschappen. 9 00:00:24,320 --> 00:00:28,330 Ik studeer een kruispunt van machine learning en statistieken 10 00:00:28,330 --> 00:00:31,375 dus Data Analyse in R echt fundamenteel wat 11 00:00:31,375 --> 00:00:33,790 Ik doe op een dagelijkse basis. 12 00:00:33,790 --> 00:00:35,710 >> En R is vooral goed voor gegevensanalyse 13 00:00:35,710 --> 00:00:39,310 want het is heel goed voor prototyping. 14 00:00:39,310 --> 00:00:43,590 En meestal, als je aan het doen bent een soort gegevensanalyse, veel van de problemen 15 00:00:43,590 --> 00:00:44,920 gaat de cognitieve. 16 00:00:44,920 --> 00:00:48,700 En dus wil je gewoon hebben een aantal echt goede taal die 17 00:00:48,700 --> 00:00:53,770 is gewoon goed voor het doen van ingebouwde functies, in tegenstelling 18 00:00:53,770 --> 00:00:57,430 om dat te maken met een laag niveau dingen. 19 00:00:57,430 --> 00:01:01,040 Dus in het begin, ik ben gewoon gaan in te voeren wat is R, waarom zou 20 00:01:01,040 --> 00:01:04,540 u wilt gebruiken, en ga dan over naar een aantal demo, 21 00:01:04,540 --> 00:01:07,060 en gewoon door te gaan vanaf daar. 22 00:01:07,060 --> 00:01:08,150 >> Dus wat is R? 23 00:01:08,150 --> 00:01:11,180 R is gewoon een taal ontwikkeld voor statistische berekeningen 24 00:01:11,180 --> 00:01:12,450 en visualisatie. 25 00:01:12,450 --> 00:01:16,000 Dus wat dit betekent is dat het is een zeer goede taal 26 00:01:16,000 --> 00:01:22,400 voor elke soort ding dat zich bezighoudt met onzekerheid of data visualisatie. 27 00:01:22,400 --> 00:01:24,850 Dus je hebt al deze kansverdelingen. 28 00:01:24,850 --> 00:01:27,140 Er gaan worden ingebouwde functies. 29 00:01:27,140 --> 00:01:31,650 Je hebt ook een uitstekende plotten pakketten. 30 00:01:31,650 --> 00:01:34,110 >> Python is een andere concurrerende taal voor data. 31 00:01:34,110 --> 00:01:40,020 En één ding is dat ik vind dat R is veel beter in is visualisatie. 32 00:01:40,020 --> 00:01:45,200 Dus wat zie je in de demo als goed is gewoon een zeer intuïtieve taal 33 00:01:45,200 --> 00:01:48,050 die gewoon werkt zeer goed. 34 00:01:48,050 --> 00:01:53,140 Het is ook gratis en open source, zoals is een andere goede taal denk ik. 35 00:01:53,140 --> 00:01:55,440 >> En hier, een bos van net trefwoorden gegooid op je. 36 00:01:55,440 --> 00:02:00,450 Het is dynamisch, wat betekent dat als je een specifieke gedefineerd object 37 00:02:00,450 --> 00:02:02,025 dan zal het alleen maar veranderen op de vlieg. 38 00:02:02,025 --> 00:02:05,670 Het is lui, dus het is slim over hoe berekeningen doet. 39 00:02:05,670 --> 00:02:12,250 Functioneel ingericht, wat het kan echt werken gebaseerd off van functies zo anything-- 40 00:02:12,250 --> 00:02:16,910 elke vorm van manipulatie je bent doet, zal het worden gebaseerd off functies. 41 00:02:16,910 --> 00:02:20,162 >> Dus binaire operatoren, bijvoorbeeld, zijn gewoon inherent functies. 42 00:02:20,162 --> 00:02:21,870 En alles wat je gaat doen is 43 00:02:21,870 --> 00:02:24,690 gaat worden vandoor functies zelf. 44 00:02:24,690 --> 00:02:27,140 En dan object als goed georiënteerd. 45 00:02:27,140 --> 00:02:30,930 >> Dus hier is een XKCD plot. 46 00:02:30,930 --> 00:02:34,350 Niet alleen omdat ik het gevoel dat XKCD is fundamenteel voor elke vorm 47 00:02:34,350 --> 00:02:37,770 van de presentatie, maar omdat Ik voel me als dit echt 48 00:02:37,770 --> 00:02:42,160 hamert op het punt dat een groot deel van de tijd dat je aan het doen bent een soort van data 49 00:02:42,160 --> 00:02:46,570 analyse, het probleem is niet zozeer hoe snel het loopt, 50 00:02:46,570 --> 00:02:49,850 maar hoe lang het gaat neemt u mee naar de opdracht programmeren. 51 00:02:49,850 --> 00:02:54,112 Dus hier is gewoon te onderzoeken of strategie a of b is efficiënter. 52 00:02:54,112 --> 00:02:55,820 Dit gaat worden iets dat je bent 53 00:02:55,820 --> 00:02:58,290 gaat om veel te gaan met in soort van low-level talen 54 00:02:58,290 --> 00:03:03,440 waar je mee bezig bent seg fouten, toewijzen van geheugen, initialisaties, 55 00:03:03,440 --> 00:03:05,270 zelfs het maken van de ingebouwde functies. 56 00:03:05,270 --> 00:03:09,920 En dit spul is allemaal afgehandeld zeer, zeer elegant in R. 57 00:03:09,920 --> 00:03:12,839 >> Dus gewoon naar deze hamer punt, de grootste bottleneck 58 00:03:12,839 --> 00:03:13,880 zal cognitief worden. 59 00:03:13,880 --> 00:03:17,341 Dus hierbij zijn zeer moeilijk probleem. 60 00:03:17,341 --> 00:03:19,340 Of je doet machine learning of je bent 61 00:03:19,340 --> 00:03:22,550 doe gewoon een soort van basisgegevens exploratie, 62 00:03:22,550 --> 00:03:25,290 je niet wilt hebben om een ​​document te nemen 63 00:03:25,290 --> 00:03:27,440 en vervolgens compileren iets wat elke keer dat u 64 00:03:27,440 --> 00:03:31,010 willen zien wat een kolom eruit ziet, welke specifieke ingangen in een matrix 65 00:03:31,010 --> 00:03:32,195 lijkt op. 66 00:03:32,195 --> 00:03:34,320 Dus wil je gewoon hebben een aantal echt mooie interface 67 00:03:34,320 --> 00:03:37,740 U kunt een eenvoudige functie run dat indexen naar wat 68 00:03:37,740 --> 00:03:41,870 u wilt en je draait het vanaf daar. 69 00:03:41,870 --> 00:03:44,190 En je domeinnaam nodig specifieke talen voor dit. 70 00:03:44,190 --> 00:03:51,750 En R zal echt helpen u definieert de probleem oplossen op deze manier. 71 00:03:51,750 --> 00:03:58,690 >> Dus hier is een grafiek die de programmering populariteit van R als het is gegaan in de tijd. 72 00:03:58,690 --> 00:04:04,060 Dus zoals je kunt zien, zoals 2013 of zodat het net opgeblazen enorm. 73 00:04:04,060 --> 00:04:09,570 En dit is alleen maar omdat van die enorme trend in de technologische industrie 74 00:04:09,570 --> 00:04:10,590 over big data. 75 00:04:10,590 --> 00:04:13,010 Ook niet alleen de techniek industrie, maar echt 76 00:04:13,010 --> 00:04:16,490 elke sector dat-- omdat veel industrieën 77 00:04:16,490 --> 00:04:20,589 zijn een soort van fundamenteel belang voor proberen deze problemen op te lossen. 78 00:04:20,589 --> 00:04:24,590 En meestal, kunt u een aantal goede hebt manier van het meten van deze problemen 79 00:04:24,590 --> 00:04:29,720 of ze te definiëren of ze op te lossen met behulp van data. 80 00:04:29,720 --> 00:04:35,430 Dus ik denk dat op dit moment R is de 11e populairste taal op TIOBE 81 00:04:35,430 --> 00:04:38,200 en het is al groeit sindsdien. 82 00:04:38,200 --> 00:04:40,740 83 00:04:40,740 --> 00:04:43,080 >> Dus hier is wat meer kenmerken van R. Het heeft 84 00:04:43,080 --> 00:04:46,900 een enorm aantal pakketten en voor al deze verschillende dingen. 85 00:04:46,900 --> 00:04:52,470 Dus elke keer dat je een bepaald probleem, de meeste 86 00:04:52,470 --> 00:04:55,060 de tijd R zal die functie voor jou. 87 00:04:55,060 --> 00:04:58,520 Dus of je wilt bouwen een soort van machine 88 00:04:58,520 --> 00:05:02,770 learning algoritme Random Forest of besluit Bomen, 89 00:05:02,770 --> 00:05:07,530 of zelfs proberen de gemiddelde aannemen een functie of een van deze dingen, 90 00:05:07,530 --> 00:05:10,000 R zal hebben dat. 91 00:05:10,000 --> 00:05:14,190 >> En als je dat doet je de zorg over optimalisatie, een ding dat is normaal 92 00:05:14,190 --> 00:05:17,430 is dat nadat je klaar bent prototyping een soort van high-level taal, 93 00:05:17,430 --> 00:05:19,810 je zal gooien dat in-- je wil gewoon poort die meer dan 94 00:05:19,810 --> 00:05:21,550 om een ​​aantal low-level taal. 95 00:05:21,550 --> 00:05:26,090 Wat is er goed over R is dat als je eenmaal bent gedaan prototyping, kun je rennen C ++, 96 00:05:26,090 --> 00:05:29,510 of Fortran of een van deze lager niveau die direct in R. 97 00:05:29,510 --> 00:05:32,320 Dus dat is een echt leuke functie over R, 98 00:05:32,320 --> 00:05:35,930 als je echt zorgen over de optimalisatie punt. 99 00:05:35,930 --> 00:05:39,490 >> En het is ook echt goed voor web visualisaties. 100 00:05:39,490 --> 00:05:43,530 Dus D3.js bijvoorbeeld is Ik denk dat een ander seminar 101 00:05:43,530 --> 00:05:45,130 die we vandaag gepresenteerd. 102 00:05:45,130 --> 00:05:48,510 En dit is echt geweldig voor het doen van interactieve visualisaties. 103 00:05:48,510 --> 00:05:54,460 En D3.js gaat ervan uit dat je hebt een soort gegevens worden uitgezet 104 00:05:54,460 --> 00:05:58,080 en R is een geweldige manier te kunnen doen de data-analyse voordat u het exporteren 105 00:05:58,080 --> 00:06:04,220 over aan D3.js of zelfs gewoon lopen D3.js opdrachten om in R zelf, 106 00:06:04,220 --> 00:06:08,240 alsmede deze andere bibliotheken ook. 107 00:06:08,240 --> 00:06:13,041 >> Dus dat was gewoon de introductie van wat is R en waarom zou je het kunnen gebruiken. 108 00:06:13,041 --> 00:06:14,790 Dus hopelijk, ik heb ervan overtuigd dat u iets 109 00:06:14,790 --> 00:06:18,460 over gewoon proberen om te zien wat het is. 110 00:06:18,460 --> 00:06:23,930 Dus ik ga om verder te gaan en ga door sommige fundamenten over R objecten 111 00:06:23,930 --> 00:06:26,150 en wat je echt kunt doen. 112 00:06:26,150 --> 00:06:29,690 >> Dus hier is slechts een stelletje wiskunde opdrachten. 113 00:06:29,690 --> 00:06:35,000 Dat zeggen you're-- u wilt bouwen taal jezelf en je wil gewoon 114 00:06:35,000 --> 00:06:38,080 om een ​​bos van verschillende gereedschappen hebben. 115 00:06:38,080 --> 00:06:42,520 Elke vorm van exploitatie je denkt dat je zou willen is vrij veel gaat worden in R. 116 00:06:42,520 --> 00:06:44,150 >> Dus hier is 2 plus 2. 117 00:06:44,150 --> 00:06:46,090 Hier is 2 maal pi. 118 00:06:46,090 --> 00:06:51,870 R heeft een heleboel ingebouwde constanten die u vaak zult gebruiken, zoals pi, e. 119 00:06:51,870 --> 00:06:56,230 >> En dan, hier is 7 plus runif, dus runif van 1. 120 00:06:56,230 --> 00:07:02,450 Dit is een functie die genereert een willekeurig uniform 0-1. 121 00:07:02,450 --> 00:07:04,400 En dan is er nog 3 tot de macht 4. 122 00:07:04,400 --> 00:07:06,430 Er is worteltrekken. 123 00:07:06,430 --> 00:07:07,270 >> Er is logboek. 124 00:07:07,270 --> 00:07:14,500 Dus log zal nederig doen exponentiële vanzelf. 125 00:07:14,500 --> 00:07:18,337 En dan, als je een basis te geven, dan je kunt doen wat je wilt baseren. 126 00:07:18,337 --> 00:07:19,920 En dan zijn hier enkele andere commando's. 127 00:07:19,920 --> 00:07:22,180 Dus je hebt 23 mod 2. 128 00:07:22,180 --> 00:07:24,910 Dan heb je de rest. 129 00:07:24,910 --> 00:07:27,110 Dan wetenschappelijke heb je notatie als u ook 130 00:07:27,110 --> 00:07:34,060 willen gewoon meer te doen en ingewikkelder dingen. 131 00:07:34,060 --> 00:07:37,320 >> Dus hier is opdracht. 132 00:07:37,320 --> 00:07:40,830 Zo typisch opdrachten R gebeurt met een pijl 133 00:07:40,830 --> 00:07:43,440 dus het is minder dan en dan het koppelteken. 134 00:07:43,440 --> 00:07:47,250 Dus hier ben ik gewoon toewijzen 3 de variabele val. 135 00:07:47,250 --> 00:07:50,160 >> En dan heb ik het uit te printen val en dan drukt drie. 136 00:07:50,160 --> 00:07:53,920 Standaard in R tolk, het zullen dingen uit te printen voor u 137 00:07:53,920 --> 00:07:57,280 zodat u niet hoeft te specificeren afdrukken van een val elke keer als je iets wilt afdrukken. 138 00:07:57,280 --> 00:08:00,200 Je kunt gewoon doen val en dan zal dat voor u doen. 139 00:08:00,200 --> 00:08:04,380 >> Ook kunt u gebruik maken van technisch gelijk aan als een opdracht operator. 140 00:08:04,380 --> 00:08:07,190 Er zijn lichte subtiliteiten tussen het gebruik van de pijl 141 00:08:07,190 --> 00:08:10,730 exploitant en de gelijken operator voor opdrachten. 142 00:08:10,730 --> 00:08:15,470 Meestal door conventie, iedereen zal gewoon gebruik maken van de pijl operator. 143 00:08:15,470 --> 00:08:21,850 >> En hier, ik ben het toewijzen van deze schuine notatie genoemd 1 colon 6. 144 00:08:21,850 --> 00:08:26,010 Dit genereert een vector van 1 tot 6. 145 00:08:26,010 --> 00:08:29,350 En dit echt leuk want dan je gewoon de vector val toewijzen 146 00:08:29,350 --> 00:08:34,270 en dat werkt op zichzelf. 147 00:08:34,270 --> 00:08:37,799 >> Dus dit is al gaande van een single-- een zeer intuïtieve data 148 00:08:37,799 --> 00:08:41,070 structuur van slechts een double van een soort type in een vector 149 00:08:41,070 --> 00:08:45,670 en die allen zullen verzamelen de scalaire waarden voor u. 150 00:08:45,670 --> 00:08:50,770 Dus na gaande van scalaire, je hebben R objecten en dit is een vector. 151 00:08:50,770 --> 00:08:55,610 Een vector is een soort van verzamelen van hetzelfde type. 152 00:08:55,610 --> 00:08:58,150 Dus hier zijn een stelletje van vectoren. 153 00:08:58,150 --> 00:08:59,800 >> Dus dit is numeriek. 154 00:08:59,800 --> 00:09:02,440 Numeriek is R's manier van dubbel te zeggen. 155 00:09:02,440 --> 00:09:07,390 En dus standaard, elke nummer zal zijn van een dubbele. 156 00:09:07,390 --> 00:09:13,150 >> Dus als je c van 1,1, 3, negatief 5.7, de c een functie. 157 00:09:13,150 --> 00:09:16,760 Dit aaneengeschakeld drie getallen in een vector. 158 00:09:16,760 --> 00:09:19,619 En dit zal dus als be-- u merkt dat 3 op zichzelf, 159 00:09:19,619 --> 00:09:21,910 normaal gesproken zou je veronderstellen dat dit als een integer, 160 00:09:21,910 --> 00:09:25,050 maar omdat alle vectoren hetzelfde type 161 00:09:25,050 --> 00:09:28,660 Dit is een vector van dubbelspel of numeriek in dit geval. 162 00:09:28,660 --> 00:09:34,920 >> rnorm is een functie die genereert standaard normale variables-- 163 00:09:34,920 --> 00:09:36,700 of standaard normale waarden. 164 00:09:36,700 --> 00:09:38,360 En ik ben het specificeren van twee van hen. 165 00:09:38,360 --> 00:09:43,840 Dus ik doe rnorm 2, het toewijzen dat aan devs, en dan ga ik uit te printen devs. 166 00:09:43,840 --> 00:09:47,350 Dus dit zijn slechts twee willekeurige normale waarden. 167 00:09:47,350 --> 00:09:50,060 >> En dan ints als je dat doet u de zorg over gehele getallen. 168 00:09:50,060 --> 00:09:54,650 Dus dit is gewoon over het geheugen toewijzing en het opslaan van geheugen. 169 00:09:54,650 --> 00:10:01,460 Dus je zou moeten voegen uw nummers door de hoofdstad L. 170 00:10:01,460 --> 00:10:04,170 >> In het algemeen is dit Historische notatie R's 171 00:10:04,170 --> 00:10:06,940 voor iets genaamd lange integer. 172 00:10:06,940 --> 00:10:09,880 Dus de meeste van de tijd, zult u te maken krijgt met tweepersoonskamers. 173 00:10:09,880 --> 00:10:15,180 En als je ooit zal later op het optimaliseren van uw code, 174 00:10:15,180 --> 00:10:18,110 je kan het gewoon toe te voegen deze L's daarna of tijdens het 175 00:10:18,110 --> 00:10:22,280 als je net als precognitieve over wat je gaat om deze variabelen te doen. 176 00:10:22,280 --> 00:10:25,340 177 00:10:25,340 --> 00:10:26,890 >> Dus hier is een teken vector. 178 00:10:26,890 --> 00:10:31,440 Dus nogmaals, ik ben het aaneenschakelen drie snaren deze tijd. 179 00:10:31,440 --> 00:10:36,230 Merk op dat dubbele snaren en enkele snaren zijn hetzelfde in R. 180 00:10:36,230 --> 00:10:41,000 Dus ik heb arthur en marvin's en zo als ik het af te drukken, allemaal 181 00:10:41,000 --> 00:10:43,210 gaan om dubbele snaren te laten zien. 182 00:10:43,210 --> 00:10:45,880 En als je wilt ook op te nemen het dubbele of enkele snaar 183 00:10:45,880 --> 00:10:50,070 in je personages, dan kunt u ofwel afwisselen je snaren. 184 00:10:50,070 --> 00:10:53,540 >> Dus marvin's voor de tweede element, dit is 185 00:10:53,540 --> 00:10:56,380 ga je show-- gewoon dubbele snaren 186 00:10:56,380 --> 00:10:59,050 en dan een snaar dus dit is afwisselend. 187 00:10:59,050 --> 00:11:04,040 Anders, als je wilt een dubbel gebruiken touwtje operator in een dubbel strijkkwartet 188 00:11:04,040 --> 00:11:07,090 als je aangifte te doen, dan je gewoon gebruik maken van de ontsnapping operator. 189 00:11:07,090 --> 00:11:10,600 Dus je doet het backslash dubbele string. 190 00:11:10,600 --> 00:11:13,330 >> Tot slot hebben we ook hebben logische vectoren. 191 00:11:13,330 --> 00:11:15,890 Dus logical-- dus TRUE en FALSE, en ze zijn 192 00:11:15,890 --> 00:11:18,880 gaan alle hoofdletters zijn. 193 00:11:18,880 --> 00:11:22,370 En dan, nogmaals, ik ben het aaneenschakelen hen en ze vervolgens toe te wijzen aan bools. 194 00:11:22,370 --> 00:11:24,590 Dus bools gaat tonen je TRUE, FALSE, en WAAR. 195 00:11:24,590 --> 00:11:28,280 196 00:11:28,280 --> 00:11:31,620 >> Dus hier is gevectoriseerd indexering. 197 00:11:31,620 --> 00:11:34,870 Dus in het begin, ik ben het nemen van een function-- 198 00:11:34,870 --> 00:11:39,230 dit is een sequence-- genoemd sequentie van 2 tot 12. 199 00:11:39,230 --> 00:11:42,490 En ik ben het nemen van een reeks in door 2. 200 00:11:42,490 --> 00:11:46,660 Dus het gaat doen 2, 4, 6, 8, 10 en 12. 201 00:11:46,660 --> 00:11:50,080 En dan, ik ben indexering het derde element krijgen. 202 00:11:50,080 --> 00:11:55,770 >> Dus een ding in gedachten te houden is dat R indexen door vanaf 1. 203 00:11:55,770 --> 00:12:00,550 Dus vals 3 gaat geven u het derde element. 204 00:12:00,550 --> 00:12:04,580 Dit is een soort van anders dan andere talen waar het begint van nul. 205 00:12:04,580 --> 00:12:09,780 Dus in C of C ++, bijvoorbeeld, je bent naar het vierde element krijgen. 206 00:12:09,780 --> 00:12:13,280 >> En hier is vals 3-5. 207 00:12:13,280 --> 00:12:16,030 Dus een ding dat is echt cool is dat je 208 00:12:16,030 --> 00:12:20,410 kunnen tijdelijke variabelen binnen te genereren en dan ze gewoon te gebruiken op de vlieg. 209 00:12:20,410 --> 00:12:21,960 Dus hier is 3-5. 210 00:12:21,960 --> 00:12:25,070 Dus ik ben het genereren van een vector 3, 4 en 5 en vervolgens 211 00:12:25,070 --> 00:12:29,700 Ik ben het indexeren om de derde te krijgen, vierde en vijfde elementen. 212 00:12:29,700 --> 00:12:32,280 >> Zo ook is, je kunt abstracte dit gewoon doen 213 00:12:32,280 --> 00:12:35,280 een soort van een vector dat geeft je het indexeren. 214 00:12:35,280 --> 00:12:40,050 Dus hier is vals en vervolgens de eerste, derde en zesde elementen. 215 00:12:40,050 --> 00:12:42,800 En dan, als je wilt een aanvulling te doen, 216 00:12:42,800 --> 00:12:45,210 zodat je gewoon doen de min achteraf en dat zal 217 00:12:45,210 --> 00:12:48,600 geven u alles wat dat is niet het eerste, derde of zesde element. 218 00:12:48,600 --> 00:12:51,590 Zo zal dit 4, 8 en 10. 219 00:12:51,590 --> 00:12:54,380 >> En als je wilt krijgen nog meer geavanceerde, 220 00:12:54,380 --> 00:12:57,610 u kunt samenvoegen Booleaanse vectoren. 221 00:12:57,610 --> 00:13:05,210 Dus deze index gaat u deze Boolean vector van lengte 6. 222 00:13:05,210 --> 00:13:07,280 Dus rep TRUE komma 3. 223 00:13:07,280 --> 00:13:09,680 Dit wordt herhaald TRUE driemaal. 224 00:13:09,680 --> 00:13:12,900 Dus dit zal u een geven vector TRUE, TRUE, TRUE. 225 00:13:12,900 --> 00:13:17,470 >> rep VALSE 4-- dit gaat om je geven een vector van FALSE, FALSE, FALSE, FALSE. 226 00:13:17,470 --> 00:13:21,280 En dan c gaat samenvoegen die twee Booleans samen. 227 00:13:21,280 --> 00:13:24,090 Dus je gaat om drie te krijgen Trues en vervolgens vier FALSEs. 228 00:13:24,090 --> 00:13:28,460 >> Zodat wanneer je index vals, je bent gaan naar de TRUE, TRUE, TRUE te krijgen. 229 00:13:28,460 --> 00:13:31,420 Dus dat gaat om ja te zeggen, Ik wil deze drie elementen. 230 00:13:31,420 --> 00:13:33,520 En dan FALSE, FALSE, FALSE, FALSE gaat 231 00:13:33,520 --> 00:13:37,140 om nee te zeggen, ik heb geen van die elementen willen dus het is niet van plan om ze terug. 232 00:13:37,140 --> 00:13:41,490 >> En ik denk dat er eigenlijk een typo hier want dit zegt herhaling TRUE 3 233 00:13:41,490 --> 00:13:47,990 en herhaal VALSE 4, en technisch, je slechts zes elementen zo herhaaldelijk valse, 234 00:13:47,990 --> 00:13:50,470 het moet herhalen VALSE 3 zijn. 235 00:13:50,470 --> 00:13:55,260 Ik denk dat R is ook slim genoeg dergelijke dat als je gewoon opgeeft 4 hier, dan 236 00:13:55,260 --> 00:13:56,630 het zal zelfs niet fout uit. 237 00:13:56,630 --> 00:13:58,480 Het zal alleen maar geven u deze waarde. 238 00:13:58,480 --> 00:14:00,970 Dus het zal gewoon negeren dat vierde FALSE. 239 00:14:00,970 --> 00:14:05,310 240 00:14:05,310 --> 00:14:09,270 >> Dus hier is gevectoriseerd opdracht. 241 00:14:09,270 --> 00:14:15,480 Dus set.seed-- dit zet gewoon de zaad voor de pseudo-willekeurige getallen. 242 00:14:15,480 --> 00:14:20,110 Dus ik ben het instellen van het zaad tot 42, wat betekent dat als ik te genereren 243 00:14:20,110 --> 00:14:22,950 drie willekeurige normale waarden, en dan als je 244 00:14:22,950 --> 00:14:27,400 run set.seed op uw eigen computer met dezelfde waarde 42, 245 00:14:27,400 --> 00:14:30,990 dan krijg je ook de dezelfde drie willekeurige normalen. 246 00:14:30,990 --> 00:14:33,411 >> Dus dit is echt goed voor reproduceerbaarheid. 247 00:14:33,411 --> 00:14:35,910 Meestal, als je doet wat soort van wetenschappelijke analyse, 248 00:14:35,910 --> 00:14:37,230 je zou willen om het zaad te stellen. 249 00:14:37,230 --> 00:14:41,270 Op die manier andere wetenschappers kan het gewoon reproduceren exact dezelfde code die je hebt 250 00:14:41,270 --> 00:14:44,790 gedaan omdat ze de exacte zult hebben dezelfde random variabelen dat-- of willekeurige 251 00:14:44,790 --> 00:14:47,270 waarden die je uit hebt genomen ook. 252 00:14:47,270 --> 00:14:49,870 253 00:14:49,870 --> 00:14:53,910 >> En dus is de vectoriële opdracht Hier toont het vals 1-2. 254 00:14:53,910 --> 00:14:59,290 Zo neemt de eerste twee elementen Vals en dan wijst ze naar 0. 255 00:14:59,290 --> 00:15:03,940 En dan, je kunt ook gewoon doen het soortgelijk iets met de Booleans. 256 00:15:03,940 --> 00:15:09,340 >> Dus vals is niet gelijk aan deze wil 0-- geven u een vector FALSE, FALSE, TRUE 257 00:15:09,340 --> 00:15:10,350 in dit geval. 258 00:15:10,350 --> 00:15:13,770 En dan, het gaat om iets te zeggen van die indexen dat waar was, 259 00:15:13,770 --> 00:15:15,270 dan is dat het gaat om toe te wijzen die tot 5. 260 00:15:15,270 --> 00:15:18,790 Dus het duurt het derde element hier en dan wijst deze toe aan 5. 261 00:15:18,790 --> 00:15:22,300 >> En dit is echt leuk in vergelijking met low-level talen 262 00:15:22,300 --> 00:15:25,560 waar je moet gebruiken voor het loops om dit alles te gevectoriseerde dingen doen 263 00:15:25,560 --> 00:15:30,281 want het is gewoon erg intuïtief en het is een one-liner. 264 00:15:30,281 --> 00:15:32,030 En wat is er veel over gevectoriseerd notatie 265 00:15:32,030 --> 00:15:37,020 is dat in R, zijn dit soort ingebouwd, zodat ze bijna net zo snel 266 00:15:37,020 --> 00:15:42,490 als het doen in een low-level taal als in tegenstelling tot het maken van een lus in R 267 00:15:42,490 --> 00:15:46,317 en dan het hebben van het te doen de dynamische indexering zelf. 268 00:15:46,317 --> 00:15:48,900 En dat zal langzamer dan het doen zijn dit soort gevectoriseerde ding 269 00:15:48,900 --> 00:15:55,950 waar hij het kan doen in parallel, waar hij doet het in threading principe. 270 00:15:55,950 --> 00:15:58,650 >> Dus hier is gevectoriseerd operaties. 271 00:15:58,650 --> 00:16:04,920 Dus ik ben het genereren van een waarde van 1 tot 3, toewijzen dat voor vec1, 3 tot 5, vec2, 272 00:16:04,920 --> 00:16:05,950 op te tellen. 273 00:16:05,950 --> 00:16:11,490 Het voegt ze component-wise zo het is 1 plus 3, 2 plus 4 enzovoort. 274 00:16:11,490 --> 00:16:13,330 >> vec1 tijden vec2. 275 00:16:13,330 --> 00:16:16,110 Dit vermenigvuldigt de twee waardeert component wijs. 276 00:16:16,110 --> 00:16:21,830 Dus het is 1 keer 3, 2 keer 4, en daarna 3 keer 5. 277 00:16:21,830 --> 00:16:28,250 >> En dan, op dezelfde manier kunt u ook doen comparisons-- logische vergelijkingen. 278 00:16:28,250 --> 00:16:33,640 Dus het is FALSE FALSE TRUE in deze geval, omdat 1 niet groter is dan 3, 279 00:16:33,640 --> 00:16:35,920 2 niet groter is dan 4. 280 00:16:35,920 --> 00:16:41,160 Dat is, denk ik, een andere typo, 3 is zeker niet meer dan 5. 281 00:16:41,160 --> 00:16:41,660 Yeah. 282 00:16:41,660 --> 00:16:45,770 En dus kun je gewoon alles doen deze eenvoudige bewerkingen 283 00:16:45,770 --> 00:16:48,350 omdat hun geërfd van de klassen zelf. 284 00:16:48,350 --> 00:16:51,110 285 00:16:51,110 --> 00:16:52,580 >> Dus dat was gewoon de vector. 286 00:16:52,580 --> 00:16:56,530 En dat is een soort van de meest fundamentele R object omdat een gegeven vector, 287 00:16:56,530 --> 00:16:59,170 kunt u meer geavanceerde objecten te construeren. 288 00:16:59,170 --> 00:17:00,560 >> Dus hier is een matrix. 289 00:17:00,560 --> 00:17:05,030 Dit is in wezen de abstractie wat een matrix zelf. 290 00:17:05,030 --> 00:17:10,099 Dus in dit geval is het drie vectoren, waarbij elk is een kolom, 291 00:17:10,099 --> 00:17:12,710 of u kunt het overwegen aangezien elk een rij. 292 00:17:12,710 --> 00:17:18,250 >> Dus ik ben het opslaan van een matrix van 1 tot 9 en dan ben ik het opgeven van 3 rijen. 293 00:17:18,250 --> 00:17:23,364 Dus 1-9 zul je een vector 1 te geven, 2, 3, 4, 5, 6, en helemaal tot 9. 294 00:17:23,364 --> 00:17:29,250 >> Een ding om ook in gedachten te houden is dat R slaat waarden in kolom-grote-formaat. 295 00:17:29,250 --> 00:17:34,160 Dus met andere woorden, als je ziet 1 tot en met 9, het gaat om them-- slaan 296 00:17:34,160 --> 00:17:36,370 het gaat om 1, 2, 3 in de eerste kolom, 297 00:17:36,370 --> 00:17:38,510 en dan zal het doen 4, 5, 6 in de tweede kolom, 298 00:17:38,510 --> 00:17:41,440 en 7, 8, 9, in de derde kolom. 299 00:17:41,440 --> 00:17:45,570 >> En hier zijn enkele andere gemeenschappelijke functies die u kunt gebruiken. 300 00:17:45,570 --> 00:17:49,650 Dus dim mat, dit zal u geven de afmetingen van de matrix. 301 00:17:49,650 --> 00:17:52,620 Het zal u terug een vector van de dimensie. 302 00:17:52,620 --> 00:17:55,580 Dus in dit geval, omdat onze matrix is ​​3 bij 3, 303 00:17:55,580 --> 00:18:01,900 het zal u een op te geven numerieke vector die 3 3. 304 00:18:01,900 --> 00:18:05,270 >> En hier is gewoon laten zien matrixvermenigvuldiging. 305 00:18:05,270 --> 00:18:11,970 Dus meestal, als je gewoon doen asterisk-- zo mat sterretje mat-- 306 00:18:11,970 --> 00:18:15,380 dit gaat worden component-wise operatie 307 00:18:15,380 --> 00:18:17,300 of wat het Hadamardproduct genoemd. 308 00:18:17,300 --> 00:18:21,310 Dus het gaat om elke doen element component-wijs. 309 00:18:21,310 --> 00:18:23,610 Echter, als je wilt matrix multiplication-- 310 00:18:23,610 --> 00:18:29,380 dus de eerste rij keer vermenigvuldigen de tweede matrix de eerste kolom 311 00:18:29,380 --> 00:18:34,510 en dus on-- je zou gebruiken Dit procent operatie. 312 00:18:34,510 --> 00:18:38,110 >> En t van de mat is slechts een operatie voor transpositie. 313 00:18:38,110 --> 00:18:42,590 Dus ik zeg neem de transpositie in de matrix, vermenigvuldigen met de matrix 314 00:18:42,590 --> 00:18:43,090 zelf. 315 00:18:43,090 --> 00:18:45,006 En dan dat het gaat om terug te keren naar je nog eens 3 316 00:18:45,006 --> 00:18:50,700 door 3 matrix tonen het product dat u zou willen. 317 00:18:50,700 --> 00:18:53,750 >> En dat was matrix. 318 00:18:53,750 --> 00:18:56,020 Hier is wat een data-frame genoemd. 319 00:18:56,020 --> 00:19:00,780 Een data-frame die je kunt bedenken als een matrix, maar elke kolom zich 320 00:19:00,780 --> 00:19:02,990 gaat van een ander type. 321 00:19:02,990 --> 00:19:07,320 >> Dus wat is echt cool over data frames is dat data analyse zelf, 322 00:19:07,320 --> 00:19:11,260 je gaat dit allemaal heterogene data en al deze echt 323 00:19:11,260 --> 00:19:15,640 rommelige dingen waarbij elke kolom zelf kunnen van verschillende types. 324 00:19:15,640 --> 00:19:21,460 Dus hier zeg ik maak een data-frame, doe ints van 1 tot 3, 325 00:19:21,460 --> 00:19:24,750 en dan hebben ook een karakter vector. 326 00:19:24,750 --> 00:19:28,470 Dus ik kan indexeren door elk van deze kolommen 327 00:19:28,470 --> 00:19:30,930 en dan zal ik de waarden zelf te krijgen. 328 00:19:30,930 --> 00:19:34,370 En je kunt ook een soort activiteit op gegevensframes. 329 00:19:34,370 --> 00:19:38,040 En de meeste van de tijd wanneer u bent het doen van data-analyse of een soort 330 00:19:38,040 --> 00:19:42,042 van voorbewerking, dan heb je de werken met deze gegevensstructuren 331 00:19:42,042 --> 00:19:44,250 waarbij elke kolom gaat te zijn van een ander type. 332 00:19:44,250 --> 00:19:47,880 333 00:19:47,880 --> 00:19:52,970 >> Tot slot, dus deze zijn in wezen net de vier essentiële objecten in R. List 334 00:19:52,970 --> 00:19:55,820 zal gewoon elke verzamelen andere objecten die u wilt. 335 00:19:55,820 --> 00:20:00,130 Dus het zal deze op te slaan in één variabele die u gemakkelijk kunt openen. 336 00:20:00,130 --> 00:20:02,370 >> Dus hier ben ik het nemen van een lijst. 337 00:20:02,370 --> 00:20:04,460 Ik zeg dingen gelijk aan 3. 338 00:20:04,460 --> 00:20:08,060 Dus ik ga naar één element hebben in de lijst, en dit wordt spul heet, 339 00:20:08,060 --> 00:20:10,570 en het gaat om de waarde 3 hebben. 340 00:20:10,570 --> 00:20:13,140 >> Ik kan ook een matrix te creëren. 341 00:20:13,140 --> 00:20:17,970 Dus dit is 1 tot 4 en eindrij gelijk is aan 2, dus een 2 bij 2 matrix. 342 00:20:17,970 --> 00:20:20,270 Ook in de lijst en het is mat geroepen. 343 00:20:20,270 --> 00:20:24,690 moreStuff, een tekenreeks, en zelfs een andere lijst op zich. 344 00:20:24,690 --> 00:20:27,710 >> Dus dit is een lijst die is 5 en de beer. 345 00:20:27,710 --> 00:20:30,990 Dus de waarde 5 en heeft de tekenreeks beer 346 00:20:30,990 --> 00:20:32,710 en het is een lijst in een lijst. 347 00:20:32,710 --> 00:20:35,965 Zo kunt u deze hebt recursieve dingen waar 348 00:20:35,965 --> 00:20:38,230 je hebt another-- een Typ in het type. 349 00:20:38,230 --> 00:20:41,420 Zo ook is, kunt u een matrix in een andere matrix, enzovoort. 350 00:20:41,420 --> 00:20:44,264 En een lijst is gewoon een goede manier van het verzamelen en aggregeren 351 00:20:44,264 --> 00:20:45,430 al deze verschillende objecten. 352 00:20:45,430 --> 00:20:50,210 353 00:20:50,210 --> 00:20:57,150 >> En tot slot, hier is gewoon te helpen in het geval dit was gewoon weg heel snel voorbij. 354 00:20:57,150 --> 00:21:01,350 Dus wanneer je in de war bent over een soort van functie, 355 00:21:01,350 --> 00:21:03,510 U kunt hulp van die functie te doen. 356 00:21:03,510 --> 00:21:07,120 Dus je kunt hulp matrix doen of een vraagteken matrix. 357 00:21:07,120 --> 00:21:11,430 En hulp en het vraagteken zijn gewoon afkorting voor hetzelfde 358 00:21:11,430 --> 00:21:13,040 dus ze zijn aliassen. 359 00:21:13,040 --> 00:21:16,820 >> lm is een functie die doet gewoon een lineair model. 360 00:21:16,820 --> 00:21:20,340 Maar als je gewoon geen idee hoe dat werken, kan je gewoon hulp van lm doen 361 00:21:20,340 --> 00:21:24,610 en dat je sommige geven soort van documentatie 362 00:21:24,610 --> 00:21:27,960 ziet eruit als een soort van man-pagina in Unix, waar 363 00:21:27,960 --> 00:21:34,210 heb je een korte beschrijving van wat het doet, ook wat de argumenten zijn, 364 00:21:34,210 --> 00:21:38,850 wat is het resultaat, en gewoon tips over hoe te gebruiken, en voorbeelden ook. 365 00:21:38,850 --> 00:21:41,680 366 00:21:41,680 --> 00:21:52,890 >> Dus laat me gaan en laten zien sommige demo van het gebruik van R. OK. 367 00:21:52,890 --> 00:21:55,470 Dus ging ik over zeer snel alleen de gegevens 368 00:21:55,470 --> 00:21:59,440 structuren en een soort van de op-- een deel van de operaties. 369 00:21:59,440 --> 00:22:02,960 Hier is een aantal functies. 370 00:22:02,960 --> 00:22:06,750 >> Dus hier ben ik gewoon gaan definiëren van een functie. 371 00:22:06,750 --> 00:22:09,970 Dus ik ben ook met behulp van toewijzingsoperator hier, 372 00:22:09,970 --> 00:22:12,610 en dan ga ik zeggen verklaren het als een functie. 373 00:22:12,610 --> 00:22:14,140 En het neemt de waarde x. 374 00:22:14,140 --> 00:22:18,210 Dus dit is geen waarde die u wilt en ik ga terug x zelf. 375 00:22:18,210 --> 00:22:20,840 Dus dit is de identiteit functie. 376 00:22:20,840 --> 00:22:23,670 >> En wat heb je aan deze vergelijking met andere talen 377 00:22:23,670 --> 00:22:26,330 en andere low-level talen is dat x 378 00:22:26,330 --> 00:22:29,350 van elk type zelf kan en het zal dat type terug. 379 00:22:29,350 --> 00:22:35,251 Dus je kunt imagine-- dus laten me alleen deze lopen snel op. 380 00:22:35,251 --> 00:22:35,750 Sorry. 381 00:22:35,750 --> 00:22:40,300 >> Dus een ding moet ik ook vermelden is dat deze editor ben ik met behulp 382 00:22:40,300 --> 00:22:41,380 heet rstudio. 383 00:22:41,380 --> 00:22:44,389 Dit is wat een IDE genoemd. 384 00:22:44,389 --> 00:22:46,180 En een ding dat is echt leuk over dit 385 00:22:46,180 --> 00:22:51,500 is dat het bevat veel van de dingen die je wilt doen in R op zichzelf 386 00:22:51,500 --> 00:22:53,180 gewoon heel intuïtief. 387 00:22:53,180 --> 00:22:55,550 >> Dus hier is een tolk console. 388 00:22:55,550 --> 00:23:02,160 Zo ook is, kunt u ook dit te krijgen console rauwe gewoon door het doen van een hoofdletter R. 389 00:23:02,160 --> 00:23:05,630 En dit is precies de hetzelfde als de console. 390 00:23:05,630 --> 00:23:12,210 Dus ik kan gewoon doen id functie x, x, x. 391 00:23:12,210 --> 00:23:16,130 En then-- en dan dat zal wel goed zelf. 392 00:23:16,130 --> 00:23:19,200 393 00:23:19,200 --> 00:23:21,740 >> Dus rstudio is geweldig omdat het de console. 394 00:23:21,740 --> 00:23:25,360 Het heeft ook de documenten u wilt om op te draaien. 395 00:23:25,360 --> 00:23:28,629 En dan het heeft een aantal variabelen die je kunt zien in omgevingen. 396 00:23:28,629 --> 00:23:30,420 En dan, als je om percelen te doen, dan moet je 397 00:23:30,420 --> 00:23:33,730 kan gewoon zien dat hier, in tegenstelling tot beheren van al deze verschillende vensters 398 00:23:33,730 --> 00:23:35,940 zelf. 399 00:23:35,940 --> 00:23:40,530 >> Ik heb eigenlijk persoonlijk gebruik Vim, maar ik voelen als rstudio is uitstekend net 400 00:23:40,530 --> 00:23:44,640 voor het krijgen van een goed idee hoe R. Meestal gebruiken, 401 00:23:44,640 --> 00:23:47,040 wanneer je probeert te leren een aantal nieuwe taak, 402 00:23:47,040 --> 00:23:49,590 u niet wilt verwerken te veel dingen tegelijk. 403 00:23:49,590 --> 00:23:53,120 Dus R is gewoon een very-- rstudio is een zeer goede manier van leren R 404 00:23:53,120 --> 00:23:56,760 zonder dat te maken met al deze andere dingen. 405 00:23:56,760 --> 00:23:58,600 >> Dus hier Ik ben actief id hallo. 406 00:23:58,600 --> 00:24:00,090 Hierdoor keert hallo. 407 00:24:00,090 --> 00:24:01,740 id 123. 408 00:24:01,740 --> 00:24:04,610 Hier is een vector van gehele getallen. 409 00:24:04,610 --> 00:24:08,620 Zo ook is, want je kunt nemen elk een soort van waarde, 410 00:24:08,620 --> 00:24:16,060 je kunt doen terugkeren id van x zodat hij terugkeert 1234 en 5. 411 00:24:16,060 --> 00:24:22,210 >> En laat me gewoon laten zien dat Dit is inderdaad een integer. 412 00:24:22,210 --> 00:24:28,800 En op dezelfde wijze, als je de klas doen id x, het gaat om integer te zijn. 413 00:24:28,800 --> 00:24:34,170 En dan kunt u ook vergelijk de twee en het is waar. 414 00:24:34,170 --> 00:24:38,350 Dus ik ga kijken of id van x gelijk gelijken x en kennisgeving 415 00:24:38,350 --> 00:24:39,760 dat het geeft je twee Trues. 416 00:24:39,760 --> 00:24:44,280 Dus dit is niet te zeggen zijn de twee identieke objecten, 417 00:24:44,280 --> 00:24:46,845 maar elk van de ingangen in de vectoren identiek. 418 00:24:46,845 --> 00:24:50,000 419 00:24:50,000 --> 00:24:52,090 >> Hier is bounded.compare. 420 00:24:52,090 --> 00:24:58,470 Dus dit is iets ingewikkelder in dat het een als voorwaarde en anders 421 00:24:58,470 --> 00:25:00,960 en dan is het twee neemt argumenten tegelijk. 422 00:25:00,960 --> 00:25:02,640 Dus x van elk type. 423 00:25:02,640 --> 00:25:06,280 En ik zeg dit Het tweede argument is. 424 00:25:06,280 --> 00:25:08,380 Dit kan van alles zijn als goed. 425 00:25:08,380 --> 00:25:12,490 Maar standaard, het gaat te nemen 5 Als u niets opgeeft. 426 00:25:12,490 --> 00:25:16,730 >> Dus hier ga ik zeggen indien x groter is dan een. 427 00:25:16,730 --> 00:25:19,220 Dus als ik het niet opgeven van een, het zegt als x groter is dan 5, 428 00:25:19,220 --> 00:25:20,470 dan ga ik op TRUE terug. 429 00:25:20,470 --> 00:25:23,230 anders ga ik op FALSE terug. 430 00:25:23,230 --> 00:25:24,870 Dus laat me gaan en te bepalen dit. 431 00:25:24,870 --> 00:25:30,600 432 00:25:30,600 --> 00:25:34,550 >> En nu ga ik naar draaien bounded.compare 3. 433 00:25:34,550 --> 00:25:39,150 Dus het zegt is 3 minder than-- 3 groter dan 5. 434 00:25:39,150 --> 00:25:41,830 Nee, het is niet zo FALSE. 435 00:25:41,830 --> 00:25:46,550 >> En bounded.compare 3 en ik ga te vergelijken met een gelijk is aan 2. 436 00:25:46,550 --> 00:25:50,700 Dus nu ben ik ja zeggen, nu ik wil een iets anders te zijn. 437 00:25:50,700 --> 00:25:52,750 Dus ik ga een zeggen, je moet 2. 438 00:25:52,750 --> 00:25:56,640 >> Ik kan dit doen soort notatie of ik zeg een gelijk aan 2. 439 00:25:56,640 --> 00:25:58,720 Dit is een meer leesbare in dat wanneer u bent 440 00:25:58,720 --> 00:26:01,450 kijken naar deze echt ingewikkelde functies 441 00:26:01,450 --> 00:26:08,110 neem meerdere arguments-- en dit kan zijn tientallen oftentimes-- gewoon te zeggen 442 00:26:08,110 --> 00:26:11,140 een is gelijk aan 2 is beter leesbaar voor u, zodat later in de toekomst 443 00:26:11,140 --> 00:26:13,020 je weet wat je doet. 444 00:26:13,020 --> 00:26:17,120 >> Dus in dit geval, ik ben gezegde is 3 groter is dan 2. 445 00:26:17,120 --> 00:26:18,270 Ja dat is zo. 446 00:26:18,270 --> 00:26:22,350 En op dezelfde wijze, kan ik gewoon verwijderen dit en zeggen, is 3 meer dan 2 447 00:26:22,350 --> 00:26:23,440 wanneer a gelijk 2. 448 00:26:23,440 --> 00:26:26,230 En dat is ook waar. 449 00:26:26,230 --> 00:26:26,730 Ja? 450 00:26:26,730 --> 00:26:29,670 >> Publiek: Bent u het uitvoeren van lijn per lijn? 451 00:26:29,670 --> 00:26:30,670 >> DUSTIN TRAN: Ja ik ben. 452 00:26:30,670 --> 00:26:33,900 Dus wat ik hier aan het doen is het nemen van deze tekst document-- 453 00:26:33,900 --> 00:26:39,825 en wat is er veel over rstudio is dat Ik kan alleen nog maar een short-- een sneltoets. 454 00:26:39,825 --> 00:26:41,820 Dus ik ben bezig met de Control-Enter. 455 00:26:41,820 --> 00:26:44,850 >> En dan, ik ben het nemen van de regel in het tekstdocument 456 00:26:44,850 --> 00:26:46,710 en dan zetten in de console. 457 00:26:46,710 --> 00:26:50,800 Dus hier wat ik zeg, bounded.compare en ik ben bezig met de Control-X. 458 00:26:50,800 --> 00:26:52,540 Dus ik kan gewoon lopen hier ook. 459 00:26:52,540 --> 00:26:54,920 En dan dat zal neem de lijn en dan zet het hier. 460 00:26:54,920 --> 00:26:57,900 En dan op dezelfde manier, ik kan niet hier lopen. 461 00:26:57,900 --> 00:27:04,630 En dan zal het gewoon blijven definiëren de lijnen in de console als dat. 462 00:27:04,630 --> 00:27:10,690 >> En als u ook merken de krullend beugels zijn er net als in C syntax. 463 00:27:10,690 --> 00:27:13,910 x-- indien de als voorwaarde is ook gaat haakjes gebruiken en dan 464 00:27:13,910 --> 00:27:15,350 kun je anders te gebruiken. 465 00:27:15,350 --> 00:27:17,496 Een ander is anders als. 466 00:27:17,496 --> 00:27:21,440 Dus dit gaat worden x gelijk staat voor een, bijvoorbeeld. 467 00:27:21,440 --> 00:27:24,190 468 00:27:24,190 --> 00:27:26,350 En dan ga ik hier iets terug. 469 00:27:26,350 --> 00:27:29,490 >> Merk op dat er twee verschillende hier dingen die er gaande is. 470 00:27:29,490 --> 00:27:34,360 Een daarvan is dat ik hier ben specificeren keren de waarde TRUE. 471 00:27:34,360 --> 00:27:35,950 Hier ben ik gewoon te zeggen x. 472 00:27:35,950 --> 00:27:39,970 Dus R zal meestal standaard neem de laatste arguments-- 473 00:27:39,970 --> 00:27:43,510 of neem de laatste regel van de code, en dat zal zijn wat het is geretourneerd. 474 00:27:43,510 --> 00:27:46,920 Dus hier is hetzelfde zoiets als het doen van terugkeer x. 475 00:27:46,920 --> 00:27:49,450 476 00:27:49,450 --> 00:27:50,540 >> En alleen maar om u te laten zien. 477 00:27:50,540 --> 00:27:54,000 478 00:27:54,000 --> 00:27:57,052 En dan zal het werk net als dat. 479 00:27:57,052 --> 00:27:58,260 Dus laat me verder gaan met dit. 480 00:27:58,260 --> 00:28:00,630 >> Dus else if. 481 00:28:00,630 --> 00:28:04,060 En echt, ik kan terugkeren alles wat ik zou willen. 482 00:28:04,060 --> 00:28:06,680 Dus ik hoef niet eens te terugkeer Booleans de hele tijd, 483 00:28:06,680 --> 00:28:08,410 Ik kan het gewoon iets anders terug. 484 00:28:08,410 --> 00:28:10,670 Dus kan ik terugkeer beer doen. 485 00:28:10,670 --> 00:28:12,989 >> Dus als x gelijk is gelijk aan een, het gaat om beer terug. 486 00:28:12,989 --> 00:28:14,530 Anders, het gaat om TRUE terug. 487 00:28:14,530 --> 00:28:19,310 Ik kan ook wel een vector of echt iets. 488 00:28:19,310 --> 00:28:22,210 >> En normaliter statisch getypte talen, 489 00:28:22,210 --> 00:28:23,840 je zou moeten van een type dat hier opgeven. 490 00:28:23,840 --> 00:28:25,750 En merken dat het zomaar iets kan zijn. 491 00:28:25,750 --> 00:28:32,400 En R intelligent genoeg dat het zal gewoon dit te doen en het zal prima werken. 492 00:28:32,400 --> 00:28:33,620 >> Dus laat me dit te definiëren. 493 00:28:33,620 --> 00:28:39,460 494 00:28:39,460 --> 00:28:41,230 Unexpected-- oh sorry. 495 00:28:41,230 --> 00:28:44,336 Het moet een accolade hier te zijn. 496 00:28:44,336 --> 00:28:44,836 OK. 497 00:28:44,836 --> 00:28:45,336 Cool. 498 00:28:45,336 --> 00:28:52,580 499 00:28:52,580 --> 00:28:54,530 Prima. 500 00:28:54,530 --> 00:28:58,250 Dus laten we nu vergelijken 3 en een gelijk aan 3. 501 00:28:58,250 --> 00:29:01,860 Zo moet return-- yeah-- de waarde beer. 502 00:29:01,860 --> 00:29:06,740 >> Dus nu een meer algemene ding is als hoe zit het met andere datastructuren. 503 00:29:06,740 --> 00:29:09,110 Zodat u deze functie hebt. 504 00:29:09,110 --> 00:29:15,360 Dit gaat om te werken aan een soort van waarde als 3 of een numerieke, 505 00:29:15,360 --> 00:29:17,500 met andere woorden, dubbel. 506 00:29:17,500 --> 00:29:19,330 >> Maar hoe zit het met iets als een vector. 507 00:29:19,330 --> 00:29:27,750 Dus wat gebeurt er als je doen-- dus ik ben naar val tot bijvoorbeeld 4 toewijzen 6. 508 00:29:27,750 --> 00:29:31,640 Dus als ik terugkom dit, dit een vector uit 4, 5, 6. 509 00:29:31,640 --> 00:29:34,935 >> Laten we nu eens kijken wat er gebeurt als ik dat doe bounded.compare val. 510 00:29:34,935 --> 00:29:37,680 511 00:29:37,680 --> 00:29:42,450 Dus dit gaat om je 15 1251 te geven. 512 00:29:42,450 --> 00:29:46,440 Dus met andere woorden, het is te zeggen als je kijkt naar deze aandoening 513 00:29:46,440 --> 00:29:50,040 dus het zegt x minder dan een of zoiets. 514 00:29:50,040 --> 00:29:51,880 Dus dit is iets verwarrend want nu 515 00:29:51,880 --> 00:29:53,379 je gewoon niet weet wat er gaande is. 516 00:29:53,379 --> 00:29:58,690 Dus ik denk dat een ding dat is echt goed over gewoon proberen te debuggen 517 00:29:58,690 --> 00:30:04,600 is dat je gewoon kunt doen val is groter dan en zie wat er gebeurt. 518 00:30:04,600 --> 00:30:09,720 >> Dus val-- een is standaard 5 dus laten we gewoon do Val van meer dan 5. 519 00:30:09,720 --> 00:30:14,280 Dus dit is een vector FALSE FALSE TRUE. 520 00:30:14,280 --> 00:30:17,206 Dus als je nu op zoek bent naar dit, het gaat om te zeggen of, 521 00:30:17,206 --> 00:30:20,080 en dan gaat het je dit geven is een vector van FALSE FALSE TRUE. 522 00:30:20,080 --> 00:30:23,450 >> Dus als je dit overgaan in R, R heeft geen idee wat je aan het doen bent. 523 00:30:23,450 --> 00:30:26,650 Omdat hij verwacht dat één waarde, die een Boolean en nu 524 00:30:26,650 --> 00:30:29,420 je geeft het een vector van Booleans. 525 00:30:29,420 --> 00:30:31,970 Dus standaard, R is gewoon gaan naar wat de heck zeggen, 526 00:30:31,970 --> 00:30:35,440 Ik ga ervan uit dat u bent die met het eerste element here nemen. 527 00:30:35,440 --> 00:30:38,320 Dus ik ga say-- ik ga aannemen dat dit FALSE. 528 00:30:38,320 --> 00:30:40,890 Dus het gaat om te zeggen nee, dit is niet juist. 529 00:30:40,890 --> 00:30:45,246 >> Ook gaat het om zijn val gelijk gelijk een. 530 00:30:45,246 --> 00:30:47,244 Nee, sorry 5. 531 00:30:47,244 --> 00:30:48,910 En het gaat ook vals te zijn ook. 532 00:30:48,910 --> 00:30:52,410 Dus het gaat om nee te zeggen, Het is niet waar ook, dus het is 533 00:30:52,410 --> 00:30:53,680 ga dit laatste terugkeren. 534 00:30:53,680 --> 00:30:56,420 535 00:30:56,420 --> 00:31:01,360 >> Dus dit is ofwel een goede zaak of een slechte ding, afhankelijk van hoe je het te bekijken. 536 00:31:01,360 --> 00:31:05,104 Want als je bent creëren van deze functies, 537 00:31:05,104 --> 00:31:06,770 je eigenlijk niet weet wat er gaande is. 538 00:31:06,770 --> 00:31:10,210 Dus soms zou je een fout wilt, of misschien wilt u gewoon een waarschuwing. 539 00:31:10,210 --> 00:31:12,160 In dit geval heeft R dat niet. 540 00:31:12,160 --> 00:31:14,300 Dus het is echt aan u gebaseerd off van wat 541 00:31:14,300 --> 00:31:17,310 je denkt dat de taal moeten doen in dit geval 542 00:31:17,310 --> 00:31:22,920 als je pas in een vector van Booleans wanneer u een als voorwaarde aan het doen bent. 543 00:31:22,920 --> 00:31:31,733 >> Dus laten we zeggen dat je moest het origineel een met als anders terug TRUE en je bent 544 00:31:31,733 --> 00:31:34,190 ga FALSE terug. 545 00:31:34,190 --> 00:31:39,300 Dus een manier van abstraheren Dit is om te zeggen dat ik 546 00:31:39,300 --> 00:31:41,530 niet eens deze voorwaardelijke ding nodig. 547 00:31:41,530 --> 00:31:47,220 Een ander ding dat ik kan doen is gewoon retourneren van de waarden zelf. 548 00:31:47,220 --> 00:31:53,240 Dus als u merkt, als je Do Val groter is dan 5, 549 00:31:53,240 --> 00:31:56,350 dit gaat om een ​​terugkeer vector FALSE FALSE TRUE. 550 00:31:56,350 --> 00:31:58,850 >> Misschien is dit wat je willen voor bounded.compare. 551 00:31:58,850 --> 00:32:02,940 U wilt een vector van Booleans terug waarbij vergelijkt elk van de waarden 552 00:32:02,940 --> 00:32:04,190 zichzelf. 553 00:32:04,190 --> 00:32:11,165 Dus je kunt gewoon bounded.compare functieverlies, een gelijk 5. 554 00:32:11,165 --> 00:32:13,322 555 00:32:13,322 --> 00:32:15,363 En dan in plaats van het doen van dit als voorwaarde else, 556 00:32:15,363 --> 00:32:21,430 Ik ga gewoon om terug te keren x groter is dan 5. 557 00:32:21,430 --> 00:32:23,620 Dus als het waar is, dan is het gaat om TRUE terug. 558 00:32:23,620 --> 00:32:26,830 En dan als het niet, het is ga FALSE terug. 559 00:32:26,830 --> 00:32:30,880 >> En deze zal voor elk van deze structuren. 560 00:32:30,880 --> 00:32:41,450 Dus ik kan bounded.compare c 1 6 of 9 en dan ga ik zeggen dat een is gelijk aan 6, 561 00:32:41,450 --> 00:32:42,799 bijvoorbeeld. 562 00:32:42,799 --> 00:32:44,840 En dan dat het gaat om geven u de juiste Booleaanse 563 00:32:44,840 --> 00:32:48,240 vector dat je het ontwerpen. 564 00:32:48,240 --> 00:32:50,660 >> Dus dat zijn slechts functies en nu wil ik alleen 565 00:32:50,660 --> 00:32:54,980 tonen u een aantal interactieve visuals. 566 00:32:54,980 --> 00:32:59,700 Ik denk niet dat ik heb eigenlijk Wi-Fi hier dus laat me gewoon doorgaan 567 00:32:59,700 --> 00:33:01,970 en deze overslaan denk ik. 568 00:33:01,970 --> 00:33:05,260 >> Maar een ding dat is cool is echter dat als je gewoon 569 00:33:05,260 --> 00:33:09,600 willen een heleboel testen verschillende gegevens opdrachten 570 00:33:09,600 --> 00:33:13,320 er is een heleboel verschillende datasets die al zijn voorgeladen in R. 571 00:33:13,320 --> 00:33:15,770 Dus een van hen is genoemd iris dataset. 572 00:33:15,770 --> 00:33:18,910 Dit is een van de meest bekende die in machine learning. 573 00:33:18,910 --> 00:33:23,350 U zult meestal gewoon doen een soort van testcases om te zien of uw code wordt uitgevoerd. 574 00:33:23,350 --> 00:33:27,520 Dus laten we maar eens kijken wat iris is. 575 00:33:27,520 --> 00:33:33,130 >> Dus dit ding gaat een data-frame zijn. 576 00:33:33,130 --> 00:33:36,000 En het is een soort van lang, want Ik gewoon uitgeprint iris. 577 00:33:36,000 --> 00:33:38,810 Het afdrukken van de hele zaak. 578 00:33:38,810 --> 00:33:42,830 Dus het heeft al die verschillende namen. 579 00:33:42,830 --> 00:33:45,505 Dus iris is een verzameling van verschillende bloemen. 580 00:33:45,505 --> 00:33:48,830 In dit geval is het vertellen u de soort ervan, 581 00:33:48,830 --> 00:33:54,760 al deze verschillende breedtes en lengtes van de kelk en het blaadje. 582 00:33:54,760 --> 00:33:58,880 >> En dus normaal gesproken, als u wilt iris afdrukken, 583 00:33:58,880 --> 00:34:03,680 bijvoorbeeld, wil je niet om het te hebben doe dit alles, want dat kan overnemen 584 00:34:03,680 --> 00:34:05,190 je hele console. 585 00:34:05,190 --> 00:34:09,280 Dus een ding dat is echt mooi is het hoofd functie. 586 00:34:09,280 --> 00:34:12,929 Dus als je gewoon het hoofd doen iris, dit zal u geven 587 00:34:12,929 --> 00:34:17,389 de eerste vijf rijen, of zes denk ik. 588 00:34:17,389 --> 00:34:19,909 En dan goed, je kan gewoon hier specificeren. 589 00:34:19,909 --> 00:34:22,914 Dus 20-- zal dit geven u de eerste 20 rijen. 590 00:34:22,914 --> 00:34:24,830 En ik was eigenlijk soort van verbaasd dat deze 591 00:34:24,830 --> 00:34:28,770 gaf me zes dus laat me ga je gang en check iris-- of het hoofd, sorry. 592 00:34:28,770 --> 00:34:31,699 593 00:34:31,699 --> 00:34:34,960 En hier zal geven u de documentatie 594 00:34:34,960 --> 00:34:37,960 van wat de waarde hoofd doet. 595 00:34:37,960 --> 00:34:40,839 Zo geeft de eerste of de laatste van een object. 596 00:34:40,839 --> 00:34:42,630 En dan ga ik kijk naar de standaardinstellingen. 597 00:34:42,630 --> 00:34:47,340 En dan is het de standaard zegt methode hoofd x en n gelijk is aan 6L. 598 00:34:47,340 --> 00:34:50,620 Dus dit geeft de eerste zes elementen. 599 00:34:50,620 --> 00:34:55,050 En op dezelfde manier als je hier ziet, ik hoefde niet te specificeren n gelijk is aan 6. 600 00:34:55,050 --> 00:34:56,840 Standaard gebruikt het zes, denk ik. 601 00:34:56,840 --> 00:35:00,130 En dan, als ik wil opgeven van een bepaalde waarde, dan kan ik zien dat ook. 602 00:35:00,130 --> 00:35:02,970 603 00:35:02,970 --> 00:35:10,592 >> Dus dat is een aantal eenvoudige commando's en hier is nog een die gewoon-- goed, 604 00:35:10,592 --> 00:35:12,550 Ik can-- dit is eigenlijk een beetje ingewikkelder, 605 00:35:12,550 --> 00:35:17,130 maar dit zal gewoon de klas elke kolom van de iris dataset. 606 00:35:17,130 --> 00:35:20,910 Dus dit zal je laten zien wat elk van deze kolommen zijn in termen van hun types. 607 00:35:20,910 --> 00:35:23,665 Dus kelkblad lengte is numeriek, kelkblad breedte is numeriek. 608 00:35:23,665 --> 00:35:26,540 Al deze waarden zijn numeriek omdat je kunt zien aan deze gegevens 609 00:35:26,540 --> 00:35:29,440 structureren deze zijn allemaal naar de numerieke. 610 00:35:29,440 --> 00:35:34,310 >> En de kolom Species zal een factor zijn. 611 00:35:34,310 --> 00:35:37,270 Dus normaal gesproken zou je denken dat Dit is als een tekenreeks. 612 00:35:37,270 --> 00:35:48,830 Maar als je gewoon doen irisSpecies, en dan ga ik kop 5 te doen, 613 00:35:48,830 --> 00:35:51,820 en dit gaat om af te drukken uit de eerste vijf waarden. 614 00:35:51,820 --> 00:35:54,150 >> En dan merken deze niveaus. 615 00:35:54,150 --> 00:35:58,870 Dus dit is saying-- dit is R's weg van het hebben van categorische variabelen. 616 00:35:58,870 --> 00:36:03,765 Dus in plaats van gewoon met tekenreeksen, 617 00:36:03,765 --> 00:36:06,740 het heeft niveaus specificeren welke van deze dingen zijn. 618 00:36:06,740 --> 00:36:12,450 >> Dus laten we zeggen irisSpecies 1. 619 00:36:12,450 --> 00:36:17,690 Dus wat je hier wilt doen is ik ben subsetting om deze soort column. 620 00:36:17,690 --> 00:36:21,480 Dus dit is de Soorten kolom en vervolgens 621 00:36:21,480 --> 00:36:23,820 het indexen om het eerste element te krijgen. 622 00:36:23,820 --> 00:36:27,140 Dus dit moet je setosa geven. 623 00:36:27,140 --> 00:36:28,710 En het geeft je ook het niveau hier. 624 00:36:28,710 --> 00:36:32,812 >> Dus je kunt ook vergelijken dit om het karakter setosa 625 00:36:32,812 --> 00:36:34,645 en dit is niet van plan TRUE omdat een 626 00:36:34,645 --> 00:36:37,940 is van een ander type dan de andere. 627 00:36:37,940 --> 00:36:40,590 Of ik denk dat het waar is omdat R is intelligenter dan dat. 628 00:36:40,590 --> 00:36:45,420 En het ziet er op dit en dan zegt, misschien is dit wat je wilt. 629 00:36:45,420 --> 00:36:51,860 Dus het gaat om het karakter te zeggen snaar setosa is dezelfde als deze. 630 00:36:51,860 --> 00:37:01,290 En dan op dezelfde manier, je kan ook net pak deze net zo over. 631 00:37:01,290 --> 00:37:05,580 >> Dus dat is gewoon een soort van Snelle opdrachten van de dataset. 632 00:37:05,580 --> 00:37:08,030 Dus hier is een aantal data exploratie. 633 00:37:08,030 --> 00:37:11,360 Dus dit is een beetje meer betrokken bij de gegevensanalyse. 634 00:37:11,360 --> 00:37:18,340 En dit wordt overgenomen van bootcamp in R voor in Berkeley. 635 00:37:18,340 --> 00:37:20,790 >> Dus bibliotheek buitenlandse. 636 00:37:20,790 --> 00:37:24,880 Dus ik ga om te laden in een bibliotheek die buitenlandse heet. 637 00:37:24,880 --> 00:37:32,460 Dus dit gaat me te geven read.dta dus neem aan dat ik deze dataset. 638 00:37:32,460 --> 00:37:39,000 Dit wordt opgeslagen in de huidige working directory van mijn console. 639 00:37:39,000 --> 00:37:42,190 Dus laten we eens zien wat de werkmap. 640 00:37:42,190 --> 00:37:44,620 >> Dus hier is mijn werk-directory. 641 00:37:44,620 --> 00:37:50,040 En lees dot gegevens, dit ding, wordt dit bestand te zeggen 642 00:37:50,040 --> 00:37:54,650 bevindt zich in de map data van deze huidige werkmap. 643 00:37:54,650 --> 00:38:00,520 En read.dta dit is niet een standaard commando. 644 00:38:00,520 --> 00:38:02,760 Ik denk dat ik laadde het in al. 645 00:38:02,760 --> 00:38:04,750 IEI veronderstelde Ik laadde dit in al. 646 00:38:04,750 --> 00:38:08,115 >> Maar zo read.dta is niet van plan om een ​​standaard commando. 647 00:38:08,115 --> 00:38:11,550 En dat is waarom je gaat te hebben om te laden in deze bibliotheek package-- 648 00:38:11,550 --> 00:38:14,500 Dit pakket genaamd buitenlandse. 649 00:38:14,500 --> 00:38:16,690 En als je het niet hebt het pakket, denk ik 650 00:38:16,690 --> 00:38:19,180 vreemde is één van de ingebouwde degenen. 651 00:38:19,180 --> 00:38:31,150 Anders kunt u ook doen install.packages 652 00:38:31,150 --> 00:38:33,180 en dit zal het pakket te installeren. 653 00:38:33,180 --> 00:38:36,878 En dit zal u R. Uh geven, nee. 654 00:38:36,878 --> 00:38:39,830 655 00:38:39,830 --> 00:38:43,140 En dan ben ik gewoon gaan om te stoppen dit omdat ik het al. 656 00:38:43,140 --> 00:38:46,920 >> Maar wat is echt leuk over R is dat het pakketbeheer 657 00:38:46,920 --> 00:38:48,510 systeem is zeer elegant. 658 00:38:48,510 --> 00:38:52,470 Want het zal alles op te slaan echt mooi voor jou. 659 00:38:52,470 --> 00:38:59,780 Dus in dit geval, het gaat om op te slaan het in, geloof ik, deze bibliotheek hier. 660 00:38:59,780 --> 00:39:02,390 >> Dus wanneer je maar wilt installeren van nieuwe pakketten, 661 00:39:02,390 --> 00:39:04,980 het is net zo eenvoudig als doet install.packages 662 00:39:04,980 --> 00:39:07,500 en R zal alles te beheren de pakketten voor u. 663 00:39:07,500 --> 00:39:12,900 Dus je hoeft niet om iets te doen in Python, waar u externe pakket 664 00:39:12,900 --> 00:39:15,330 managers zoals papier Anaconda waar je bent 665 00:39:15,330 --> 00:39:18,310 doing-- je het installeert pakketten buiten Python 666 00:39:18,310 --> 00:39:20,940 en dan probeer je ze zelf uit te voeren. 667 00:39:20,940 --> 00:39:22,210 Dus dit is echt een leuke manier. 668 00:39:22,210 --> 00:39:25,590 >> En install.packages vereist internet. 669 00:39:25,590 --> 00:39:31,950 Het neemt het van een server en de repository die 670 00:39:31,950 --> 00:39:33,960 verzamelt alle pakketten wordt genoemd CRAN. 671 00:39:33,960 --> 00:39:40,690 En je kunt die soort spiegel te specificeren je wilt om de pakketten te downloaden vanaf. 672 00:39:40,690 --> 00:39:43,420 >> Dus hier ben ik het nemen van deze dataset. 673 00:39:43,420 --> 00:39:46,240 Ik ben het lezen van het gebruik van deze functie. 674 00:39:46,240 --> 00:39:49,360 Dus laat me gaan en dat te doen. 675 00:39:49,360 --> 00:39:52,900 >> Dus laten we aannemen dat je hebt deze dataset 676 00:39:52,900 --> 00:39:55,550 en u absoluut moet geen idee wat het is. 677 00:39:55,550 --> 00:39:58,560 En dit komt eigenlijk omhoog vrij vaak in de industrie 678 00:39:58,560 --> 00:40:00,910 waar heb je alleen deze tonnen en tonnen van rommelige dingen 679 00:40:00,910 --> 00:40:02,890 en ze zijn ongelooflijk ongelabelde. 680 00:40:02,890 --> 00:40:06,380 Dus hier heb ik dit dataset en ik weet het niet 681 00:40:06,380 --> 00:40:08,400 wat het is, dus ik ben gewoon zien om het te controleren. 682 00:40:08,400 --> 00:40:10,620 >> Dus ik ga naar het hoofd eerst doen. 683 00:40:10,620 --> 00:40:14,190 Dus ik check de eerste zes kolommen van wat deze dataset is. 684 00:40:14,190 --> 00:40:21,730 Dus dit is de staat, pres04, en dan al deze verschillende soort kolommen. 685 00:40:21,730 --> 00:40:25,612 En wat is interessant hier, denk ik, is dat je 686 00:40:25,612 --> 00:40:27,945 zou aannemen dat dit eruit ziet als een soort verkiezing. 687 00:40:27,945 --> 00:40:30,482 688 00:40:30,482 --> 00:40:32,190 En ik denk dat net uit kijken naar het bestand 689 00:40:32,190 --> 00:40:41,070 noem dit is een soort van verzameling van gegevens over de kandidaten of de kiezers 690 00:40:41,070 --> 00:40:44,920 die voor specifieke presidenten gestemd of president kandidaten 691 00:40:44,920 --> 00:40:46,550 voor de verkiezingen van 2004. 692 00:40:46,550 --> 00:40:52,920 >> Dus hier is de waarden 1, 2 dus een manier van opslag 693 00:40:52,920 --> 00:40:56,540 de president kandidaten zijn hun namen. 694 00:40:56,540 --> 00:40:59,780 In dit geval lijkt het erop dat ze zijn gewoon integer waarden. 695 00:40:59,780 --> 00:41:04,030 Dus 2004, was Bush versus Kerry geloof ik. 696 00:41:04,030 --> 00:41:09,010 En nu, laten we zeggen dat je gewoon niet weet of 1 komt overeen met Bush of 2 697 00:41:09,010 --> 00:41:11,703 komt overeen met Kerry of en zo voort en zo verder, toch? 698 00:41:11,703 --> 00:41:15,860 >> En dit is, maar voor mij, een vrij algemeen probleem. 699 00:41:15,860 --> 00:41:18,230 Dus wat kan je doen in dit geval? 700 00:41:18,230 --> 00:41:20,000 Dus laten we eens kijken al die andere dingen. 701 00:41:20,000 --> 00:41:22,790 >> staat, ik ben ervan uitgaande dat dit afkomstig uit verschillende landen. 702 00:41:22,790 --> 00:41:25,100 partyid, inkomen. 703 00:41:25,100 --> 00:41:27,710 Laten we eens kijken naar partyid. 704 00:41:27,710 --> 00:41:32,800 Dus misschien een ding dat je kunt doen is kijken naar elk van de waarnemingen 705 00:41:32,800 --> 00:41:36,250 die hebben een partyid van de Republikeinse of Democraat of zoiets. 706 00:41:36,250 --> 00:41:38,170 Dus laten we gewoon kijken naar wat partyid is. 707 00:41:38,170 --> 00:41:41,946 >> Dus ik ga nemen DAT en dan ga ik 708 00:41:41,946 --> 00:41:47,960 om dit dollarteken doen exploitant die ik eerder deed 709 00:41:47,960 --> 00:41:50,770 en dit gaat subset die kolom. 710 00:41:50,770 --> 00:41:57,760 En dan ga ik dit het hoofd in 20, gewoon om te zien hoe dit eruit ziet. 711 00:41:57,760 --> 00:42:00,170 >> Dus dit is gewoon een stelletje NAS. 712 00:42:00,170 --> 00:42:02,800 Dus met andere woorden, je hebt ontbrekende gegevens over deze jongens. 713 00:42:02,800 --> 00:42:08,100 Maar je moet ook deze merken DAT partyid is een factor 714 00:42:08,100 --> 00:42:10,030 dus dit geeft je verschillende categorieën. 715 00:42:10,030 --> 00:42:14,170 Dus met andere woorden, kan partyid nemen Democraat, republikeins, onafhankelijk, 716 00:42:14,170 --> 00:42:16,640 of iets anders. 717 00:42:16,640 --> 00:42:23,940 >> Dus laten we verder gaan en laten we zien welke van deze is-- oh, OK. 718 00:42:23,940 --> 00:42:28,480 Dus ik ga aan subset om partyid en dan 719 00:42:28,480 --> 00:42:32,780 kijk naar welke zijn Democraat, bijvoorbeeld. 720 00:42:32,780 --> 00:42:37,150 Dit gaat om u een Boole, een enorme Booleaanse van Trues en FALSEs. 721 00:42:37,150 --> 00:42:41,630 >> En nu, laten we zeggen dat ik wil aan subset aan deze jongens. 722 00:42:41,630 --> 00:42:47,260 Dus dit gaat mijn DAT te nemen en deelverzameling naar welke waarnemingen 723 00:42:47,260 --> 00:42:48,910 hebben partyid gelijken gelijk Democraat. 724 00:42:48,910 --> 00:42:52,830 725 00:42:52,830 --> 00:42:55,180 En dit is een heel lang, want er is zo veel van hen. 726 00:42:55,180 --> 00:42:59,060 Dus nu ga ik dit hoofd in 20. 727 00:42:59,060 --> 00:43:05,690 728 00:43:05,690 --> 00:43:11,270 >> En zoals u merkt, is gelijk aan gelijken is interessant dat je 729 00:43:11,270 --> 00:43:13,250 already-- je bent ook met inbegrip van de NA. 730 00:43:13,250 --> 00:43:19,010 Dus in dit geval, je nog steeds niet kan krijgen alle informatie want nu heb je NA 731 00:43:19,010 --> 00:43:22,650 en je wil gewoon om te zien welke van de observatie overeen met Democraat 732 00:43:22,650 --> 00:43:24,670 en niet deze ontbrekende waarden zelf. 733 00:43:24,670 --> 00:43:27,680 Dus hoe zou u zich te ontdoen van deze NA? 734 00:43:27,680 --> 00:43:36,410 >> Dus hier ben ik alleen met behulp van de op-toets op mijn cursor en dan zeggen bewegen. 735 00:43:36,410 --> 00:43:39,778 En dan hier ben ik gewoon gaan om is.na datpartyid zeggen. 736 00:43:39,778 --> 00:43:48,970 737 00:43:48,970 --> 00:43:52,720 Dus dit en en zal nemen twee verschillende Booleaanse vectoren 738 00:43:52,720 --> 00:43:57,160 en zeggen dat het gaat worden WAAR en ONWAAR bijvoorbeeld. 739 00:43:57,160 --> 00:43:59,190 Dus het gaat om deze component-wijs doen. 740 00:43:59,190 --> 00:44:02,910 Dus hier Ik zeg take het dataframe, subgroep 741 00:44:02,910 --> 00:44:10,170 aan degenen die overeenkomen met Democraat, en verwijder alle van hen die niet NA. 742 00:44:10,170 --> 00:44:13,540 >> Dus dit will-- moet je iets geven. 743 00:44:13,540 --> 00:44:16,540 744 00:44:16,540 --> 00:44:17,600 Laten we eens kijken is.na. 745 00:44:17,600 --> 00:44:24,670 746 00:44:24,670 --> 00:44:27,690 Laten we proberen is.na datpartyid. 747 00:44:27,690 --> 00:44:36,290 748 00:44:36,290 --> 00:44:45,290 En dit moet u-- geven sorry-- slechts een Boole-vector. 749 00:44:45,290 --> 00:44:49,260 En dan, omdat het zo lang, Ik ga aan subset tot 20. 750 00:44:49,260 --> 00:44:49,760 OK. 751 00:44:49,760 --> 00:44:51,570 Dus je moet dit werken. 752 00:44:51,570 --> 00:44:54,700 >> En deze zal ook Trues. 753 00:44:54,700 --> 00:45:01,830 Ah, dus mijn fout hier is dat I'm-- ik Gebruik C ++ en R door elkaar dus ik maak 754 00:45:01,830 --> 00:45:03,590 deze fout de hele tijd. 755 00:45:03,590 --> 00:45:05,807 De exploitant en is eigenlijk degene die je wilt. 756 00:45:05,807 --> 00:45:08,140 Je wilt niet te gebruiken twee ampersands, slechts een enkele. 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 >> Dus laten we zien. 760 00:45:18,140 --> 00:45:20,930 761 00:45:20,930 --> 00:45:23,920 We subset aan de partyid waar ze Democraat 762 00:45:23,920 --> 00:45:25,300 en ze zijn niet van ontbrekende waarden. 763 00:45:25,300 --> 00:45:27,690 En laten we nu eens kijken naar welke ze stemden voor. 764 00:45:27,690 --> 00:45:31,530 Dus het lijkt erop dat de meeste van hen stemden voor 1. 765 00:45:31,530 --> 00:45:36,090 Dus ik ga om verder te gaan en zeggen dat is Kerry. 766 00:45:36,090 --> 00:45:39,507 >> En evenzo, kunt u ook naar de Republikeinse 767 00:45:39,507 --> 00:45:41,090 en hopelijk, dit geeft je 2. 768 00:45:41,090 --> 00:45:49,730 769 00:45:49,730 --> 00:45:51,770 Het is gewoon een heleboel verschillende kolommen. 770 00:45:51,770 --> 00:45:53,070 En inderdaad, het is 2. 771 00:45:53,070 --> 00:45:55,750 Dus partyid alle Republikeinse, de meeste van hen zijn stemmen voor 2. 772 00:45:55,750 --> 00:45:58,390 >> Dus het lijkt, net door te kijken naar deze, 773 00:45:58,390 --> 00:46:00,600 Republikeinse gaat worden een very-- of de partyid 774 00:46:00,600 --> 00:46:02,790 gaat om een ​​zeer zijn grote factor bij het bepalen 775 00:46:02,790 --> 00:46:05,420 welke kandidaat ze gaan stemmen voor. 776 00:46:05,420 --> 00:46:07,120 En dit is natuurlijk in het algemeen waar. 777 00:46:07,120 --> 00:46:10,139 En dit overeenkomt met uw intuïtie, natuurlijk. 778 00:46:10,139 --> 00:46:11,930 Dus het lijkt alsof ik ben De tijd dringt dus 779 00:46:11,930 --> 00:46:17,040 laat me gewoon moet doorgaan en tonen een aantal snelle beelden. 780 00:46:17,040 --> 00:46:21,120 Dus hier is iets dat is iets meer gecompliceerd met visualisatie. 781 00:46:21,120 --> 00:46:26,450 Dus in dit geval is dit een zeer eenvoudige analyse van alleen het controleren van wat 782 00:46:26,450 --> 00:46:28,500 de president van '04 is. 783 00:46:28,500 --> 00:46:33,920 >> Dus in dit geval, laten we zeggen dat je wilde deze vraag te beantwoorden. 784 00:46:33,920 --> 00:46:38,540 Dus stel dat we wilden de stemming weten gedrag in de 2004 president verkiezing 785 00:46:38,540 --> 00:46:41,170 en hoe dat verschilt per ras. 786 00:46:41,170 --> 00:46:44,380 Dus niet alleen wilt u zie het stemgedrag, 787 00:46:44,380 --> 00:46:47,860 maar u wilt subset van elke ras en soort vatten dat. 788 00:46:47,860 --> 00:46:50,770 En je kunt alleen maar zeggen door dit complexe notatie 789 00:46:50,770 --> 00:46:52,580 dat dit soort steeds wazig. 790 00:46:52,580 --> 00:46:56,390 >> Dus een van de meer geavanceerde R pakketten dat is ook een soort van recente 791 00:46:56,390 --> 00:47:00,070 heet dplyr. 792 00:47:00,070 --> 00:47:03,060 Het is dus dit één hier. 793 00:47:03,060 --> 00:47:08,080 En ggg-- ggplot2 is gewoon een leuke manier van doen beter visualisaties 794 00:47:08,080 --> 00:47:09,400 dan de ingebouwde één. 795 00:47:09,400 --> 00:47:11,108 >> Dus ik ga om te laden deze twee bibliotheken. 796 00:47:11,108 --> 00:47:13,200 797 00:47:13,200 --> 00:47:16,950 En dan, ik ga om te gaan gang en voer je dit commando. 798 00:47:16,950 --> 00:47:19,050 Je kan dit gewoon behandelen als een black box. 799 00:47:19,050 --> 00:47:23,460 >> Wat is er gebeurt is dat deze pijp operator is het passeren in dit argument 800 00:47:23,460 --> 00:47:24,110 naar hier. 801 00:47:24,110 --> 00:47:28,070 Dus ik zeg groep door DAT- ras en vervolgens president 04. 802 00:47:28,070 --> 00:47:31,530 En al deze andere opdrachten filtert en dan samenvatten 803 00:47:31,530 --> 00:47:34,081 waar ik telling doet en dan ben ik hier plotten het. 804 00:47:34,081 --> 00:47:39,980 805 00:47:39,980 --> 00:47:42,500 OK cool. 806 00:47:42,500 --> 00:47:44,620 Dus laten we verder gaan en zien hoe dit eruit ziet. 807 00:47:44,620 --> 00:47:52,280 808 00:47:52,280 --> 00:47:57,290 >> Dus wat hier gebeurt is dat ik gewoon elk van de races en vervolgens uitgezet 809 00:47:57,290 --> 00:47:59,670 welke ze stemden voor. 810 00:47:59,670 --> 00:48:03,492 En deze twee verschillende waarden komen overeen 2 en 1. 811 00:48:03,492 --> 00:48:05,325 Als u meer wilt zijn elegant, kunt u ook 812 00:48:05,325 --> 00:48:11,770 gewoon aangeven dat 2 is Kerry-- of 2 is Bush, en dan 1 is Kerry. 813 00:48:11,770 --> 00:48:13,700 En je kunt ook dat in je legende. 814 00:48:13,700 --> 00:48:17,410 >> En je kunt ook splitsen deze staafdiagrammen. 815 00:48:17,410 --> 00:48:19,480 Want één ding is dat, als u merkt, 816 00:48:19,480 --> 00:48:24,560 Dit is niet erg gemakkelijk te identificeren welke van deze waarden groter. 817 00:48:24,560 --> 00:48:27,920 Dus een ding dat je zou willen doen, is deze blauwe zone 818 00:48:27,920 --> 00:48:31,855 en beweeg het hier dus je kunnen deze twee naast elkaar te vergelijken. 819 00:48:31,855 --> 00:48:34,480 En ik denk dat dat is iets wat ik hebben geen tijd om nu te doen, 820 00:48:34,480 --> 00:48:36,660 maar dat is ook zeer gemakkelijk te doen. 821 00:48:36,660 --> 00:48:40,310 Je kunt gewoon kijken naar de man pagina's van ggplot. 822 00:48:40,310 --> 00:48:47,170 Dus je kunt gewoon ggplot als dat en lees in deze man pagina. 823 00:48:47,170 --> 00:48:51,920 >> Dus laat me gewoon snel toon u een aantal leuke dingen. 824 00:48:51,920 --> 00:48:57,610 Laten we verder gaan en ga to-- gewoon een toepassing van machine learning. 825 00:48:57,610 --> 00:49:02,450 Dus laten we zeggen dat we deze drie pakketten dus ik ga deze laden in. 826 00:49:02,450 --> 00:49:05,500 827 00:49:05,500 --> 00:49:09,170 Dus dit drukt gewoon uit een aantal informatie nadat ik in het ding geladen. 828 00:49:09,170 --> 00:49:15,220 Dus ik zeg dit read.csv, deze dataset, en nu 829 00:49:15,220 --> 00:49:18,940 Ik ga om te gaan en te kijken en zien wat er in deze dataset. 830 00:49:18,940 --> 00:49:22,080 >> Dus de eerste 20 waarnemingen. 831 00:49:22,080 --> 00:49:27,190 Dus ik heb gewoon X1, X2, en Y. Dus het lijkt een heleboel van deze waarden 832 00:49:27,190 --> 00:49:31,640 zijn variërend van misschien 20 tot 80 of zo. 833 00:49:31,640 --> 00:49:37,700 En evenzo voor X2 en vervolgens Deze Y lijkt labels 0 en 1. 834 00:49:37,700 --> 00:49:49,500 >> Om dit te controleren, kan ik gewoon doen samenvatting gegevens X1. 835 00:49:49,500 --> 00:49:51,660 En dan analoog hieraan al deze andere kolommen. 836 00:49:51,660 --> 00:49:55,300 Dus samenvatting is een snelle manier van gewoon laten zien je snel waarden. 837 00:49:55,300 --> 00:49:56,330 Oh sorry. 838 00:49:56,330 --> 00:49:58,440 Deze moet Y. 839 00:49:58,440 --> 00:50:03,420 >> Dus in dit geval, geeft de kwantielen, medianen, maxes ook. 840 00:50:03,420 --> 00:50:07,130 In dit geval, dataY, je kunt zien dat het gewoon gaat worden 0 en 1. 841 00:50:07,130 --> 00:50:10,100 Ook de gemiddelde zegt 0,6, betekent gewoon dat het 842 00:50:10,100 --> 00:50:13,380 lijkt het alsof ik heb meer dan 1s 0s. 843 00:50:13,380 --> 00:50:16,160 >> Dus laat me gaan en laten zien u hoe dit eruit ziet. 844 00:50:16,160 --> 00:50:17,470 Dus ik ga gewoon dit perceel. 845 00:50:17,470 --> 00:50:22,852 846 00:50:22,852 --> 00:50:24,636 Laten we eens kijken hoe dit te wissen. 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 >> Dus dit is wat het lijkt. 852 00:50:37,590 --> 00:50:46,310 Dus het lijkt alsof geel ik heb opgegeven als 0, en dan red ik opgegeven als 1s. 853 00:50:46,310 --> 00:50:52,190 Dus hier het eruit ziet label punten en het 854 00:50:52,190 --> 00:50:56,410 lijkt alsof je wilde slechts enkele soort van clustering op dit punt. 855 00:50:56,410 --> 00:51:01,020 >> En laat me gewoon je gang en show moet gaan u een aantal van deze ingebouwde functies. 856 00:51:01,020 --> 00:51:03,580 Dus hier is lm. 857 00:51:03,580 --> 00:51:06,060 Dus dit is gewoon proberen om een ​​lijn om deze te passen. 858 00:51:06,060 --> 00:51:08,640 Dus wat is de beste manier dat ik kan passen een lijn zodanig 859 00:51:08,640 --> 00:51:14,020 dat het best scheiden dit soort clustering. 860 00:51:14,020 --> 00:51:21,790 En ideaal, kun je gewoon zien dat ik alleen nog maar al deze commando's 861 00:51:21,790 --> 00:51:25,450 en dan, ik ga vooruit en voeg de lijn. 862 00:51:25,450 --> 00:51:28,970 >> Dus dit lijkt de beste gok. 863 00:51:28,970 --> 00:51:34,150 Het is het nemen van de beste die minimaliseert de fout in het proberen om deze lijn past. 864 00:51:34,150 --> 00:51:40,000 Uiteraard is dit ziet er soort van goed, maar het is niet de beste. 865 00:51:40,000 --> 00:51:43,130 En lineaire modellen, in algemeen, zullen worden 866 00:51:43,130 --> 00:51:46,811 echt geweldig voor theorie en gewoon soort van het gebouw fundamenten van de machine 867 00:51:46,811 --> 00:51:47,310 leren. 868 00:51:47,310 --> 00:51:50,330 Maar in de praktijk, je gaat naar willen iets meer algemene doen. 869 00:51:50,330 --> 00:51:54,280 >> Dus je kunt gewoon proberen running zoiets als een neuraal netwerk. 870 00:51:54,280 --> 00:51:57,110 Deze dingen zijn vaker voor. 871 00:51:57,110 --> 00:52:00,530 En ze fantastisch werk gewoon voor grote datasets. 872 00:52:00,530 --> 00:52:07,080 Dus in dit geval, wij slechts have-- laten we see-- we nrow. 873 00:52:07,080 --> 00:52:09,010 Dus nrow is gewoon te zeggen aantal rijen. 874 00:52:09,010 --> 00:52:11,790 Dus in dit geval, ik hebben 100 waarnemingen. 875 00:52:11,790 --> 00:52:15,010 >> Dus laat me gaan en maak een neuraal netwerk. 876 00:52:15,010 --> 00:52:18,620 Dus dit is echt leuk want ik kan alleen maar zeggen nNetto 877 00:52:18,620 --> 00:52:21,767 en dan ben ik regressie Y. Dus de Y die kolom. 878 00:52:21,767 --> 00:52:23,850 En dan achteruit het op de andere twee variabelen. 879 00:52:23,850 --> 00:52:27,360 Dus dit korter notatie voor X1 en X2. 880 00:52:27,360 --> 00:52:29,741 >> Dus laten we verder gaan en lopen dit. 881 00:52:29,741 --> 00:52:30,240 Oh sorry. 882 00:52:30,240 --> 00:52:32,260 Ik moet dit hele ding uit te voeren. 883 00:52:32,260 --> 00:52:37,500 En dit is gewoon het printen notatie voor hoe snel of niet snel het 884 00:52:37,500 --> 00:52:38,460 geconvergeerd. 885 00:52:38,460 --> 00:52:41,420 Dus het lijkt erop dat leverde convergeren. 886 00:52:41,420 --> 00:52:44,970 Dus laat me gaan en druk uit hoe dit eruit ziet. 887 00:52:44,970 --> 00:52:51,260 >> Zie hier de foto en hier is een contour te laten zien hoe goed het past. 888 00:52:51,260 --> 00:52:56,380 En dit is gewoon-- je kunt zien dit dat dit is heel erg leuk. 889 00:52:56,380 --> 00:52:59,400 Het zou zelfs overfitting, maar u kunt ook 890 00:52:59,400 --> 00:53:03,390 vertegenwoordigen deze andere technieken zoals cross-validatie. 891 00:53:03,390 --> 00:53:06,180 En deze zijn ook ingebouwd in R. 892 00:53:06,180 --> 00:53:09,170 >> En laat me je laten zien ondersteunen vector machine. 893 00:53:09,170 --> 00:53:12,470 Dit is weer een echt gemeenschappelijke techniek in de machine learning. 894 00:53:12,470 --> 00:53:18,550 Het is zeer vergelijkbaar met lineaire modellen, maar het maakt gebruik van wat een kernel-methode genoemd. 895 00:53:18,550 --> 00:53:22,790 En laten we zien hoe goed dat doet. 896 00:53:22,790 --> 00:53:26,430 Dus dit is erg vergelijkbaar met hoe zeker een neuraal netwerk presteert, 897 00:53:26,430 --> 00:53:27,900 maar het is veel soepeler. 898 00:53:27,900 --> 00:53:35,740 En dit is gebaseerd off van what-- hoe SVMs werk. 899 00:53:35,740 --> 00:53:40,250 >> Dus dit is gewoon een zeer snel overzicht van een aantal 900 00:53:40,250 --> 00:53:43,822 van de ingebouwde functies die u kunt doen en ook enkele van de gegevensexploratie. 901 00:53:43,822 --> 00:53:45,905 Dus laat me gewoon doorgaan en ga terug naar de dia's. 902 00:53:45,905 --> 00:53:50,290 903 00:53:50,290 --> 00:53:53,670 >> Zo duidelijk, dit is niet zeer uitgebreid. 904 00:53:53,670 --> 00:53:57,140 En dit is eigenlijk gewoon een teaser laten zien wat je echt kunt doen in R. 905 00:53:57,140 --> 00:53:59,100 Dus als je zou net als om meer te leren, hier 906 00:53:59,100 --> 00:54:01,210 zijn een aantal verschillende bronnen. 907 00:54:01,210 --> 00:54:06,890 >> Dus als je een liefhebber bent van schoolboeken bent of je bent gewoon dol op het lezen van dingen online, 908 00:54:06,890 --> 00:54:09,670 dan is dit een fantastische één voor Hadley Wickham, 909 00:54:09,670 --> 00:54:13,010 die ook gemaakt van al deze echt cool pakketten. 910 00:54:13,010 --> 00:54:17,420 Als u een liefhebber van video's bent, dan Berkeley heeft een geweldige bootcamp 911 00:54:17,420 --> 00:54:21,060 dat is several-- dat is een soort van lang. 912 00:54:21,060 --> 00:54:24,210 En het zal je bijna leren alles wat je wilt weten over R. 913 00:54:24,210 --> 00:54:27,770 >> Eveneens kunnen er Codeacademy en al deze andere soort 914 00:54:27,770 --> 00:54:29,414 van interactieve websites. 915 00:54:29,414 --> 00:54:31,580 Ze worden ook steeds common-- meer en vaker. 916 00:54:31,580 --> 00:54:33,749 Dus dit is zeer vergelijkbaar met Codeacademy. 917 00:54:33,749 --> 00:54:35,790 En tot slot, als je gewoon wilt Gemeenschap en helpen, 918 00:54:35,790 --> 00:54:38,800 dit zijn een stelletje dingen die je kunt gaan. 919 00:54:38,800 --> 00:54:40,880 Uiteraard, toch zijn we Gebruik mailinglijsten, net 920 00:54:40,880 --> 00:54:44,860 zoals bijna alle andere programmeertaal gemeenschap. 921 00:54:44,860 --> 00:54:47,880 En #rstats, dat is onze gemeenschap Twitter. 922 00:54:47,880 --> 00:54:49,580 Dat is eigenlijk heel gewoon. 923 00:54:49,580 --> 00:54:50,850 En dan gebruiker! 924 00:54:50,850 --> 00:54:52,340 Is gewoon onze conferentie. 925 00:54:52,340 --> 00:54:55,390 >> En dan, natuurlijk, je kunt gebruik maken van al deze andere Q & A dingen, 926 00:54:55,390 --> 00:54:57,680 zoals stack overflow, Google, en dan GitHub. 927 00:54:57,680 --> 00:55:00,490 Omdat de meeste van deze pakketten en een groot deel van de gemeenschap 928 00:55:00,490 --> 00:55:03,420 wordt gecentreerd rond het ontwikkelen code want het is open source. 929 00:55:03,420 --> 00:55:05,856 En het is gewoon echt leuk op GitHub. 930 00:55:05,856 --> 00:55:08,730 En tot slot, kunt u contact met mij als je moet gewoon geen snelle vragen. 931 00:55:08,730 --> 00:55:13,530 Dus je kunt me hier vinden op Twitter, mijn website, en gewoon mijn e-mail. 932 00:55:13,530 --> 00:55:17,840 Dus hopelijk, dat was something-- slechts een korte teaser 933 00:55:17,840 --> 00:55:20,900 wat R werkelijk kan doen. 934 00:55:20,900 --> 00:55:23,990 En hopelijk, je gewoon check out deze drie links 935 00:55:23,990 --> 00:55:25,760 en zie wat je meer kunt doen. 936 00:55:25,760 --> 00:55:28,130 En ik denk dat het gewoon over. 937 00:55:28,130 --> 00:55:28,630 Thanks. 938 00:55:28,630 --> 00:55:30,780 >> [Applaus] 939 00:55:30,780 --> 00:55:31,968