1 00:00:00,000 --> 00:00:05,691 2 00:00:05,691 --> 00:00:07,690 CONNOR Harris: Tog het ek dink 'n paar opwindende video 3 00:00:07,690 --> 00:00:12,570 wat deur 'n professionele advies wat gebruik maak van 'n baie R in sy werk. 4 00:00:12,570 --> 00:00:16,329 >> NARRATOR: Wat is agter die statistieke, die analise en die visualisaties 5 00:00:16,329 --> 00:00:19,770 dat vandag se helderste data wetenskaplikes en sakeleiers staatmaak op 6 00:00:19,770 --> 00:00:22,012 kragtige besluite te neem? 7 00:00:22,012 --> 00:00:23,540 Jy kan nie altyd sien nie. 8 00:00:23,540 --> 00:00:24,790 Maar dit is daar. 9 00:00:24,790 --> 00:00:29,460 Dit is bekend as R, open source R-- die statistiese programmeertaal 10 00:00:29,460 --> 00:00:32,630 dat data kundiges die wêreld oor die gebruik vir alles 11 00:00:32,630 --> 00:00:35,350 van kartering breë sosiale en bemarking tendense aanlyn 12 00:00:35,350 --> 00:00:39,210 tot die ontwikkeling van die finansiële en klimaat modelle wat help ry ons ekonomieë 13 00:00:39,210 --> 00:00:40,780 en gemeenskappe. 14 00:00:40,780 --> 00:00:44,910 >> Maar wat presies is R en waar het R begin? 15 00:00:44,910 --> 00:00:48,620 Wel oorspronklik, R begin hier met twee professore 16 00:00:48,620 --> 00:00:51,950 wat 'n beter statistiese wou platform vir hul studente. 17 00:00:51,950 --> 00:00:56,030 Sodat hulle het een gemodelleer na die statistiese taal S. 18 00:00:56,030 --> 00:01:00,480 Hulle, saam met baie ander, gehou werk en die gebruik van R, 19 00:01:00,480 --> 00:01:05,489 skep gereedskap vir R en vind nuwe aansoeke vir R elke dag. 20 00:01:05,489 --> 00:01:07,750 >> Danksy hierdie is wêreldwye gemeenskap moeite, 21 00:01:07,750 --> 00:01:11,850 R aanhou groei met duisende van die gebruiker geskep biblioteke gebou 22 00:01:11,850 --> 00:01:15,500 R funksionaliteit te verbeter en skare verkry gehalte validering 23 00:01:15,500 --> 00:01:19,740 en ondersteuning van die mees erkende die industrie leiers in elke veld wat 24 00:01:19,740 --> 00:01:25,040 gebruik R. Watter is groot, want R is die beste in wat hy doen nie. 25 00:01:25,040 --> 00:01:28,540 Vinnig ontluikende kundiges en maklik interpreteer, interaksie met, 26 00:01:28,540 --> 00:01:33,790 en vinnig te visualiseer data wat hul groeiende gemeenskap van R gebruikers wêreldwyd 27 00:01:33,790 --> 00:01:36,380 en sien hoe open source R voort te vorm 28 00:01:36,380 --> 00:01:39,340 die toekoms van statistiese analise en data wetenskap. 29 00:01:39,340 --> 00:01:44,660 30 00:01:44,660 --> 00:01:47,710 >> CONNOR Harris: OK, groot. 31 00:01:47,710 --> 00:01:50,360 So my eie aanbieding sal 'n bietjie meer nugter. 32 00:01:50,360 --> 00:01:54,380 Dit sal nie betrek dat baie opwindende agtergrond musiek. 33 00:01:54,380 --> 00:01:59,160 Maar as jy gesien het in die video, R is 'n soort van 'n algemene taal doel program. 34 00:01:59,160 --> 00:02:03,720 Maar dit is meestal geskep vir statistiese werk. 35 00:02:03,720 --> 00:02:07,980 >> So dit is ontwerp vir statistieke, vir data-analise, vir data-ontginning. 36 00:02:07,980 --> 00:02:12,420 En so kan jy sien dit in 'n baie die ontwerp keuses wat die makers van R 37 00:02:12,420 --> 00:02:13,320 gemaak. 38 00:02:13,320 --> 00:02:15,472 Dit is ontwerp vir grootliks, mense wat nie 39 00:02:15,472 --> 00:02:17,930 kundiges in programmering, wat is net optel programmering 40 00:02:17,930 --> 00:02:23,460 aan die kant sodat hulle hul werk doen in die sosiale wetenskap of in statistiek 41 00:02:23,460 --> 00:02:25,440 of wat ook al. 42 00:02:25,440 --> 00:02:27,850 >> Dit het 'n baie baie belangrike verskille uit C. 43 00:02:27,850 --> 00:02:33,200 Maar die sintaksis en die paradigmas dat dit gebruik is oor die algemeen dieselfde. 44 00:02:33,200 --> 00:02:36,830 En jy moet mooi voel veel by die huis van die kolf af. 45 00:02:36,830 --> 00:02:38,520 Dit is 'n noodsaaklik taal. 46 00:02:38,520 --> 00:02:40,260 >> Moenie te veel oor wat bekommerd as jy nie weet wat die term. 47 00:02:40,260 --> 00:02:42,676 Maar daar is 'n onderskeid tussen noodsaaklik, verklarende 48 00:02:42,676 --> 00:02:43,810 en funksionele. 49 00:02:43,810 --> 00:02:47,600 Noodsaaklik beteken net jy state wat beveel basies. 50 00:02:47,600 --> 00:02:52,340 En dan is die tolk of die rekenaar volg hulle een vir een. 51 00:02:52,340 --> 00:02:56,630 Dit is swak getikte, is daar nee-tipe verklarings in R. 52 00:02:56,630 --> 00:02:59,130 >> En dan is die lyne tussen verskillende tipes 53 00:02:59,130 --> 00:03:03,920 is 'n bietjie meer as los hulle is in C, byvoorbeeld. 54 00:03:03,920 --> 00:03:06,450 En soos ek gesê het daar is baie uitgebreide fasiliteite 55 00:03:06,450 --> 00:03:15,610 vir grafiese, vir statistiese analise, vir data-ontginning. 56 00:03:15,610 --> 00:03:19,540 Dit is albei gebou in die taal en, soos die video gesê 57 00:03:19,540 --> 00:03:23,680 duisende derde party biblioteke wat jy kan aflaai en gratis gebruik 58 00:03:23,680 --> 00:03:25,340 met 'n baie los lisensie voorwaardes. 59 00:03:25,340 --> 00:03:28,800 60 00:03:28,800 --> 00:03:31,500 >> So in die algemeen, sou ek aanbeveel dat jy kyk na hierdie twee boeke 61 00:03:31,500 --> 00:03:34,610 as jy gaan om te werk aan R. Een van hulle is die amptelike R beginner se 62 00:03:34,610 --> 00:03:35,110 lei. 63 00:03:35,110 --> 00:03:38,660 Dit is onderhou deur die kern ontwikkelaars van R. 64 00:03:38,660 --> 00:03:42,400 Jy kan dit weer te laai, vry van hef en wettig op daardie skakel daar. 65 00:03:42,400 --> 00:03:45,430 66 00:03:45,430 --> 00:03:49,869 Al hierdie skyfies gaan om te gaan op die internet, op CS50 webwerf 67 00:03:49,869 --> 00:03:50,660 nadat dit gedoen is. 68 00:03:50,660 --> 00:03:53,690 So nie nodig om te kopieer dinge af waansinnig. 69 00:03:53,690 --> 00:03:56,800 >> Die ander een is 'n handboek deur Cosma Shalizi, 70 00:03:56,800 --> 00:04:00,100 wat 'n statistiek professor by Carnegie Mellon, genaamd Advanced Data 71 00:04:00,100 --> 00:04:02,160 Ontleding van 'n Elementêre oogpunt. 72 00:04:02,160 --> 00:04:04,010 Dit is nie 'n hoofsaaklik R boek. 73 00:04:04,010 --> 00:04:07,130 Dit is 'n statistiek en boek dit is 'n data-analise boek. 74 00:04:07,130 --> 00:04:11,990 Maar dit is baie toeganklik vir mense wat 'n mate van statistieke kennis. 75 00:04:11,990 --> 00:04:13,750 >> Ek het nog nooit 'n formele kursus geneem. 76 00:04:13,750 --> 00:04:17,269 Ek weet net stukkies uit verskeie verwante vakke 77 00:04:17,269 --> 00:04:18,579 dat ek kursusse geneem het in. 78 00:04:18,579 --> 00:04:21,839 En ek was in staat om te verstaan dit baie goed. 79 00:04:21,839 --> 00:04:25,630 >> Al die syfers is gegee in R. Hulle is gemaak in R 80 00:04:25,630 --> 00:04:30,280 en hulle het ook kode volledige lys onder elke figuur wat jou vertel 81 00:04:30,280 --> 00:04:33,270 hoe maak jy elke figuur met R-kode. 82 00:04:33,270 --> 00:04:37,400 En dit is baie handig as jy probeer na te boots 83 00:04:37,400 --> 00:04:38,650 sommige figuur wat jy sien in 'n boek. 84 00:04:38,650 --> 00:04:47,840 >> En weer gratis aflaai stat.cmu.edu/cshalizi/ Jammer, 85 00:04:47,840 --> 00:04:50,230 wat moet streep tilde cshalizi. 86 00:04:50,230 --> 00:04:53,150 Ek sal seker maak om reg te wat wanneer die amptelike skyfies optrek. 87 00:04:53,150 --> 00:04:57,000 / ADAfaEPoV wat net die akroniem van die titel van die boek. 88 00:04:57,000 --> 00:04:59,850 89 00:04:59,850 --> 00:05:02,500 >> So algemene caveats-- R het 'n baie vermoëns. 90 00:05:02,500 --> 00:05:05,331 Ek gaan net in staat wees om te dek die oppervlak van 'n baie van die dinge. 91 00:05:05,331 --> 00:05:08,580 Ook die eerste gedeelte van die seminaar gaan iets van 'n data dump wees. 92 00:05:08,580 --> 00:05:11,437 Ek is redelik jammer daaroor. 93 00:05:11,437 --> 00:05:13,770 Basies, ek gaan jou bekendstel aan 'n baie van die dinge 94 00:05:13,770 --> 00:05:15,350 reg van die kolf af, gaan so vinnig as moontlik. 95 00:05:15,350 --> 00:05:17,058 En dan kry ons die pret deel, wat is 96 00:05:17,058 --> 00:05:20,570 die demo waar ek jou kan wys alles wat ons het gepraat oor wat op die skerm. 97 00:05:20,570 --> 00:05:23,321 En jy kan rondspeel op jou eie. 98 00:05:23,321 --> 00:05:26,070 So daar gaan 'n baie wees tegniese dinge gegooi op hier. 99 00:05:26,070 --> 00:05:28,060 Moenie bekommerd wees oor die kopiëring van alles wat af. 100 00:05:28,060 --> 00:05:31,740 Omdat A, kan jy al die dinge op die CS50 webwerf later. 101 00:05:31,740 --> 00:05:37,780 En B, dit is nie regtig wat belangrik hierdie memoriseer van die skyfies. 102 00:05:37,780 --> 00:05:40,462 Dit is meer belangrik dat jy sommige intuïtief fasiliteit met dit 103 00:05:40,462 --> 00:05:44,220 en wat uit net speel rond. 104 00:05:44,220 --> 00:05:45,720 >> So hoekom R te gebruik? 105 00:05:45,720 --> 00:05:49,440 Basies, as jy 'n projek wat behels die ontginning van groot datastelle, data 106 00:05:49,440 --> 00:05:52,664 visualisering, jy moet R. gebruik As jy 107 00:05:52,664 --> 00:05:55,830 doen ingewikkeld statistiese ontledings, wat moeilik is om in Excel sou wees, 108 00:05:55,830 --> 00:05:58,010 byvoorbeeld, sou dit ook ook good-- 109 00:05:58,010 --> 00:06:00,506 As jy doen statistiese analise wat is outomatiese. 110 00:06:00,506 --> 00:06:02,130 Kom ons sê jy die handhawing van 'n webwerf. 111 00:06:02,130 --> 00:06:06,320 En jy wil die bediener log gelees elke dag en stel sommige lys 112 00:06:06,320 --> 00:06:10,320 soos die top lande wat jou gebruikers vandaan kom, 113 00:06:10,320 --> 00:06:15,100 sommige opsomming statistieke oor hoe lank hulle spandeer op jou webwerf of wat ook al. 114 00:06:15,100 --> 00:06:16,910 En jy wil dit elke dag te hardloop. 115 00:06:16,910 --> 00:06:20,280 >> Nou as jy dit doen in Excel, jy wil hê om te gaan na jou bediener log, 116 00:06:20,280 --> 00:06:23,490 invoer wat in 'n Excel spreadsheet data, 117 00:06:23,490 --> 00:06:24,910 hardloop al die ontleding hand. 118 00:06:24,910 --> 00:06:27,100 Met R, kan jy net skryf een script. 119 00:06:27,100 --> 00:06:29,520 Skeduleer dit elke dag te hardloop van jou bedryfstelsel. 120 00:06:29,520 --> 00:06:33,657 En dan elke aand by 02:00, of wanneer jy dit skeduleer om te hardloop, 121 00:06:33,657 --> 00:06:35,990 dit sal lyk deur jou internet verkeer vir daardie dag. 122 00:06:35,990 --> 00:06:39,010 En dan deur die volgende dag, sal jy hierdie blink, nuwe verslag 123 00:06:39,010 --> 00:06:41,710 of wat ook al met al die inligting wat jy gevra het. 124 00:06:41,710 --> 00:06:44,960 125 00:06:44,960 --> 00:06:50,217 >> So basies R is vir Cisco programmering versus Cisco analise. 126 00:06:50,217 --> 00:06:51,050 Voorlopige gedoen word. 127 00:06:51,050 --> 00:06:53,104 Kom ons kry in die werklike dinge. 128 00:06:53,104 --> 00:06:55,020 So is daar drie werklike tipes in die taal. 129 00:06:55,020 --> 00:06:56,120 Daar is numeriese tipe. 130 00:06:56,120 --> 00:07:01,250 Daar is soort van 'n verskil tussen heelgetalle en swaai punte, 131 00:07:01,250 --> 00:07:02,769 maar nie regtig nie. 132 00:07:02,769 --> 00:07:04,560 Daar is 'n karakter tik, wat snare. 133 00:07:04,560 --> 00:07:07,100 En daar is 'n logiese tik, wat Booleans. 134 00:07:07,100 --> 00:07:11,080 >> En jy kan skakel tussen tipes die gebruik van hierdie funksies as numeriese, 135 00:07:11,080 --> 00:07:15,220 as karakter, as logies. 136 00:07:15,220 --> 00:07:17,510 As jy 'n beroep, byvoorbeeld, as numeriese op 'n string, 137 00:07:17,510 --> 00:07:20,030 dit sal probeer om dit te lees string as 'n nommer, op dieselfde manier 138 00:07:20,030 --> 00:07:25,897 dat a2i en scanf te doen, en C. As jy bel as numeriese op waar of vals 139 00:07:25,897 --> 00:07:26,980 dit sal omskep 1 of 0. 140 00:07:26,980 --> 00:07:29,110 As jy bel as karakter op enigiets sal dit 141 00:07:29,110 --> 00:07:32,550 omskep wat in 'n string verteenwoordiging. 142 00:07:32,550 --> 00:07:34,990 >> En dan is daar vektore en matrikse. 143 00:07:34,990 --> 00:07:37,580 So vektore is basies 1 dimensionele skikkings. 144 00:07:37,580 --> 00:07:40,600 Hulle is wat ons noem in skikkings C. Matrikse, 2 dimensionele skikkings. 145 00:07:40,600 --> 00:07:42,350 En dan hoër dimensionele skikkings wat jy kan 146 00:07:42,350 --> 00:07:48,560 het 3, 4, 5 dimensies of wat ook al numeriese waardes van snare, 147 00:07:48,560 --> 00:07:52,860 van logiese waardes. 148 00:07:52,860 --> 00:07:55,380 >> Jy het ook lyste wat 'n soort van assosiatiewe skikking. 149 00:07:55,380 --> 00:07:57,390 Ek sal kry in wat 'n bietjie. 150 00:07:57,390 --> 00:07:59,390 So een belangrike ding dat reise mense in R 151 00:07:59,390 --> 00:08:01,470 is dat daar is geen werklike, suiwer atoom tipes. 152 00:08:01,470 --> 00:08:05,870 Daar is geen werklike onderskeid tussen 'n nommer, soos 'n numeriese waarde, 153 00:08:05,870 --> 00:08:07,920 en 'n lys van waardes numeriese. 154 00:08:07,920 --> 00:08:12,370 Numeriese waardes is eintlik die dieselfde as die draers van lengte 1. 155 00:08:12,370 --> 00:08:14,959 En dit het 'n aantal belangrike implikasies. 156 00:08:14,959 --> 00:08:17,500 Een, beteken dit dat jy kan doen dinge baie maklik wat die volgende behels 157 00:08:17,500 --> 00:08:21,037 soos die toevoeging van 'n aantal van 'n vektor. 158 00:08:21,037 --> 00:08:23,120 R sal basies figuur uit te vind wat jy bedoel met dit. 159 00:08:23,120 --> 00:08:24,610 En ek sal met wat jy in 'n tweede. 160 00:08:24,610 --> 00:08:27,930 Dit beteken ook dat daar geen manier vir die tipe checker-- tot die mate 161 00:08:27,930 --> 00:08:30,530 dat so iets bestaan ​​in R-- te vertel 162 00:08:30,530 --> 00:08:33,780 wanneer jy verby in die enkele waarde wanneer dit verwag 'n skikking of andersom. 163 00:08:33,780 --> 00:08:39,159 En wat kan veroorsaak dat 'n paar vreemde probleme wat ek het in wanneer 164 00:08:39,159 --> 00:08:42,252 Ek is met behulp van R tydens my somer werk. 165 00:08:42,252 --> 00:08:43,710 En daar is geen gemengde-tipe skikkings. 166 00:08:43,710 --> 00:08:46,543 So jy kan nie 'n skikking was die eerste elemente is, weet ek nie, 167 00:08:46,543 --> 00:08:49,332 die string "John" en die tweede element is nommer 42. 168 00:08:49,332 --> 00:08:52,540 As jy probeer om dit te doen, dan sal jy alles net omgeskakel na 'n string. 169 00:08:52,540 --> 00:08:54,760 So ons het string John, string 42. 170 00:08:54,760 --> 00:08:58,250 171 00:08:58,250 --> 00:09:02,025 >> So ongewone sintaktiese features-- mees van R sintaksis is baie soortgelyk aan C. 172 00:09:02,025 --> 00:09:04,690 Daar is 'n paar belangrike verskille. 173 00:09:04,690 --> 00:09:05,620 Tik is baie swak. 174 00:09:05,620 --> 00:09:07,360 So is daar geen veranderlike verklarings. 175 00:09:07,360 --> 00:09:12,670 Opdrag gebruik die vreemde fout operateur minder as koppelteken. 176 00:09:12,670 --> 00:09:15,340 Kommentaar is met die hash merk. 177 00:09:15,340 --> 00:09:19,230 Ek dink nou dae ons noem dit hashtag hoewel dit nie regtig nie accurate-- 178 00:09:19,230 --> 00:09:21,810 die dubbele streep. 179 00:09:21,810 --> 00:09:24,710 >> Modulêre oorblyfsels is met %% tekens. 180 00:09:24,710 --> 00:09:30,172 Integer afdeling is met% /% wat baie moeilik is om te lees wanneer dit geprojekteer 181 00:09:30,172 --> 00:09:30,880 op die skerm. 182 00:09:30,880 --> 00:09:34,150 183 00:09:34,150 --> 00:09:37,200 Jy kan wissel van kry heelgetalle met die kolon. 184 00:09:37,200 --> 00:09:41,840 So 2,5 sal jou 'n vektor te gee van al die getalle 2 tot 5. 185 00:09:41,840 --> 00:09:44,530 >> Skikkings is een geïndekseer, wat skroewe 'n klomp mense 186 00:09:44,530 --> 00:09:47,540 up as hulle uit meer tipiese programmeertale, 187 00:09:47,540 --> 00:09:50,450 soos C, waar die meeste dinge is nul-geïndekseerde. 188 00:09:50,450 --> 00:09:54,420 Weereens, dit is waar R se erfenis as 'n taal vir nie soos 189 00:09:54,420 --> 00:09:56,560 professionele programmeerders kom. 190 00:09:56,560 --> 00:09:59,680 As jy 'n sosioloog of 'n ekonoom of iets 191 00:09:59,680 --> 00:10:01,980 en jy probeer om te gebruik R basies as 'n toevoegsel 192 00:10:01,980 --> 00:10:03,832 om jou meer belangrik professionele werk, 193 00:10:03,832 --> 00:10:06,040 jy gaan om uit te vind een-kruip 'n bietjie meer natuurlike. 194 00:10:06,040 --> 00:10:09,890 Omdat jy begin tel op 1 in die alledaagse lewe, nie 0. 195 00:10:09,890 --> 00:10:13,260 >> Vir lusse, dit is soortgelyk aan die foreach bou in PHP, 196 00:10:13,260 --> 00:10:17,090 wat jy kry leer in-- redelik gou. 197 00:10:17,090 --> 00:10:22,540 Dit is vir waarde in vektor en dan kan jy dinge met waarde. 198 00:10:22,540 --> 00:10:24,040 GEHOOR: Dit is kom in lesing. 199 00:10:24,040 --> 00:10:26,248 CONNOR Harris: O, dit is kom lesing, 'n uitstekende. 200 00:10:26,248 --> 00:10:29,815 GEHOOR: Die opdrag is dit veronderstel is om te wys van regs na links? 201 00:10:29,815 --> 00:10:31,440 CONNOR Harris: Van links na regs, ja. 202 00:10:31,440 --> 00:10:34,720 Jy kan dink aan dit as die waarde op die regte skuif na die veranderlike 203 00:10:34,720 --> 00:10:36,240 aan die linkerkant. 204 00:10:36,240 --> 00:10:36,781 GEHOOR: OK. 205 00:10:36,781 --> 00:10:39,770 206 00:10:39,770 --> 00:10:42,330 >> CONNOR Harris: En uiteindelik funksie sintaksis is 'n bietjie vreemd. 207 00:10:42,330 --> 00:10:48,460 Jy het die funksie naam cat, opgedra om hierdie navraag funksie, gevolg 208 00:10:48,460 --> 00:10:51,530 deur al die argumente en dan die liggaam van die funksie na daardie. 209 00:10:51,530 --> 00:10:53,280 Weer hierdie dinge kan lyk 'n bietjie vreemd. 210 00:10:53,280 --> 00:10:57,181 Hulle sal 'n tweede natuur geword nadat jy werk met die taal vir 'n bietjie. 211 00:10:57,181 --> 00:10:58,930 So vektore, die manier jy bou 'n vektor 212 00:10:58,930 --> 00:11:04,550 is jy die tipe C, wat 'n navraag, dan al die nommers wat jy wil hê of snare 213 00:11:04,550 --> 00:11:06,490 of wat ook al. 214 00:11:06,490 --> 00:11:07,995 Argumente ook vektore. 215 00:11:07,995 --> 00:11:09,620 Maar die gevolglike skikking kry platgedruk. 216 00:11:09,620 --> 00:11:14,385 So jy kan nie skikkings waar het sommige elemente is enkele nommers 217 00:11:14,385 --> 00:11:17,010 en sommige elemente is skikkings hulself. 218 00:11:17,010 --> 00:11:20,010 >> So as jy probeer om 'n te bou array was die eerste element is 4 219 00:11:20,010 --> 00:11:22,370 en die tweede element is die skikking 3,5 jy 220 00:11:22,370 --> 00:11:25,890 net 'n drie elemente skikking, 4,3,5. 221 00:11:25,890 --> 00:11:27,760 Hulle kan nie van gemengde tipe. 222 00:11:27,760 --> 00:11:32,290 As jy probeer om lees of skryf buite die grense van 'n vektor 223 00:11:32,290 --> 00:11:36,640 jy sal hierdie waarde genoem NA 'n te kry wat staan ​​vir 'n vermiste waarde. 224 00:11:36,640 --> 00:11:39,900 En dit is bedoel vir soos statistici wat 225 00:11:39,900 --> 00:11:43,080 werk met onvolledige data stelle. 226 00:11:43,080 --> 00:11:46,460 >> As jy 'n funksie wat veronderstel is van toepassing net een getal neem om 'n skikking 227 00:11:46,460 --> 00:11:49,220 dan wat jy kry is, die funksie sal die kaart oor die skikking. 228 00:11:49,220 --> 00:11:52,130 So as jou funksie laat ons sê neem 'n nommer en opbrengste dit vierkant. 229 00:11:52,130 --> 00:11:58,170 Jy aansoek doen dat die skikking 2,3,5 Wat jy kry is die skikking 4,9,25. 230 00:11:58,170 --> 00:12:00,010 >> En dit is baie nuttig want dit beteken jy 231 00:12:00,010 --> 00:12:03,374 hoef nie te skryf vir sirkelroetes vir doen baie eenvoudige dinge soos die toepassing van 232 00:12:03,374 --> 00:12:05,040 'n funksie om al die lede van 'n stel data. 233 00:12:05,040 --> 00:12:08,557 Wat, indien jy werk met 'n groot data-stelle, jy het 'n baie te doen. 234 00:12:08,557 --> 00:12:10,390 Binary funksies Toegepaste inskrywing deur inskrywing. 235 00:12:10,390 --> 00:12:12,430 Ek sal in daardie. 236 00:12:12,430 --> 00:12:16,750 Jy kan toegang tot hulle met skikkings of vektore met vierkantige hakies. 237 00:12:16,750 --> 00:12:22,300 So vektor naam vierkantige hakies 1 sal jy die eerste element gee. 238 00:12:22,300 --> 00:12:25,510 Vektor naam vierkantige hakies 2 sal jy die tweede element gee. 239 00:12:25,510 --> 00:12:27,530 >> Jy kan slaag op 'n vektor indekse en jy sal 240 00:12:27,530 --> 00:12:29,640 terug te kry uit basies 'n sub-faktor. 241 00:12:29,640 --> 00:12:34,990 Sodat jy kan vektor naam hakies C te doen, 2,4 en jy sal kry uit 'n vektor met 242 00:12:34,990 --> 00:12:38,804 die tweede en vierde elemente van die skikking. 243 00:12:38,804 --> 00:12:40,720 En as jy wil net 'n vinnige opsomming statistiek 244 00:12:40,720 --> 00:12:47,529 van 'n vektor soos interkwartielvariasiewydte reeks, mediaan, maksimum, wat ook al, 245 00:12:47,529 --> 00:12:49,820 jy kan net tik opsomming vektor naam en kry wat uit. 246 00:12:49,820 --> 00:12:52,680 Dit is nie regtig nuttig in programmering, maar as jy speel 247 00:12:52,680 --> 00:12:55,990 rondom die data stelle, dit is handig. 248 00:12:55,990 --> 00:12:58,650 >> Matrices-- basies hoër-dimensionele skikkings. 249 00:12:58,650 --> 00:13:01,190 Hulle het hierdie spesiale notasie sintaksis. 250 00:13:01,190 --> 00:13:07,620 Matriks met 'n verskeidenheid wat kry gevul in-- jammer, matriks met data, 251 00:13:07,620 --> 00:13:09,780 aantal rye, aantal kolomme. 252 00:13:09,780 --> 00:13:13,180 Wanneer jy 'n paar data, dit vul in die skikking basies gaan bo na onder 253 00:13:13,180 --> 00:13:13,380 eerste. 254 00:13:13,380 --> 00:13:14,190 Dan links na regs. 255 00:13:14,190 --> 00:13:15,030 So, soos dit. 256 00:13:15,030 --> 00:13:17,809 257 00:13:17,809 --> 00:13:19,600 En R het 'n ingeboude in matriks vermenigvuldiging, 258 00:13:19,600 --> 00:13:24,310 spektrale ontbinding, diagonalisering, 'n baie van die dinge. 259 00:13:24,310 --> 00:13:27,785 As jy wil 'n hoër-dimensionele skikkings, so 3, 4, 5, 260 00:13:27,785 --> 00:13:29,410 of wat ook al dimensies wat jy kan doen. 261 00:13:29,410 --> 00:13:34,400 Die sintaksis is verskeidenheid dowwe gelyk c, dan is die lys van die dimensies. 262 00:13:34,400 --> 00:13:38,620 So as jy wil 'n 4 dimensionele skikking met afmetings 4, 7, 8, 9, die skikking, 263 00:13:38,620 --> 00:13:45,470 dowwe gelyk c (4,7,8,9). 264 00:13:45,470 --> 00:13:51,180 >> Jy toegang tot enkele waardes met hakies eerste inskrywing komma tweede inskrywing. 265 00:13:51,180 --> 00:13:54,870 Jy kan die hele snye kry rye of kolomme. 266 00:13:54,870 --> 00:13:59,900 Met hierdie onvolledig sintaksis dit net rijnummer komma of komma kolom 267 00:13:59,900 --> 00:14:00,400 nommer. 268 00:14:00,400 --> 00:14:02,874 269 00:14:02,874 --> 00:14:04,540 So lyste is 'n soort van verband skikking. 270 00:14:04,540 --> 00:14:06,360 Hulle het hul eie sintaksis hier. 271 00:14:06,360 --> 00:14:08,320 Weer doen nie waansinnig kopieer al hierdie af. 272 00:14:08,320 --> 00:14:11,370 Dit is net so dat mense gaan deur die skyfies later 273 00:14:11,370 --> 00:14:13,089 het dit alles in 'n mooi verwysing. 274 00:14:13,089 --> 00:14:16,130 En dit sal baie natuurlike een keer raak Ek het eintlik loop deur die demos. 275 00:14:16,130 --> 00:14:19,295 276 00:14:19,295 --> 00:14:20,920 So bevat 'n basies verband skikkings. 277 00:14:20,920 --> 00:14:27,040 Jy kan waardes toegang met lys name, dollar teken, sleutel. 278 00:14:27,040 --> 00:14:31,370 So as jou lys is vernoem cat, dan moet jy dit kan oopmaak soos dit. 279 00:14:31,370 --> 00:14:37,032 Jy kan 'n hele sleutel-waarde pair deur verby in die vierkant bracket indeks. 280 00:14:37,032 --> 00:14:39,240 As jy lees van 'n nie-bestaande sleutel, sal jy null. 281 00:14:39,240 --> 00:14:41,150 Dit sal nie fout. 282 00:14:41,150 --> 00:14:43,590 Ding is, R sal doen soos veel met null as wat dit kan. 283 00:14:43,590 --> 00:14:46,580 En dit kan beteken dat as jy nie verwag om uit te kry null 284 00:14:46,580 --> 00:14:51,840 van sommige lys lees, sal jy 'n paar te kry onvoorspelbare foute verder af 285 00:14:51,840 --> 00:14:52,620 die lyn. 286 00:14:52,620 --> 00:14:54,890 >> Dit het met my gebeur my somer werk toe ek die gebruik van R 287 00:14:54,890 --> 00:14:58,410 waar ek verander hoe 'n bepaalde lys is gedefinieer in een plek 288 00:14:58,410 --> 00:15:05,410 maar het nie later verander op die kode wat waardes gelees van dit. 289 00:15:05,410 --> 00:15:10,190 En ja, wat gebeur het, was ek lees nul waardes uit hierdie lys, 290 00:15:10,190 --> 00:15:13,090 verby hulle in funksies, en dat dit baie deurmekaar 291 00:15:13,090 --> 00:15:16,000 toe ek allerhande ewekansige oneindighede opduik 292 00:15:16,000 --> 00:15:16,790 in hierdie funksie. 293 00:15:16,790 --> 00:15:20,730 Want as jy sekere maksimum van toepassing of minimum funksies nul 294 00:15:20,730 --> 00:15:22,570 jy kry oneindige waardes uit. 295 00:15:22,570 --> 00:15:26,400 296 00:15:26,400 --> 00:15:29,180 >> Data rame, hulle is 'n subklas van lys. 297 00:15:29,180 --> 00:15:31,170 Elke waarde is 'n vektor van dieselfde lengte. 298 00:15:31,170 --> 00:15:34,220 En hulle is wat gebruik word vir die aanbieding van, basies, data tabelle. 299 00:15:34,220 --> 00:15:36,175 Daar is hierdie inisialisering sintaksis. 300 00:15:36,175 --> 00:15:38,800 Dit sal al weer, veel duideliker wanneer jy die demo. 301 00:15:38,800 --> 00:15:42,240 302 00:15:42,240 --> 00:15:44,240 En die lekker ding van data rame is dat jy 303 00:15:44,240 --> 00:15:49,380 kan name aan al die kolomme gee en name aan al die rye. 304 00:15:49,380 --> 00:15:53,890 En so wat maak toegang hulle 'n bietjie vriendeliker. 305 00:15:53,890 --> 00:15:59,130 Ook dit is hoe die meeste funksies wat lees data uit Excel-sigblaaie 306 00:15:59,130 --> 00:16:03,820 of van die teks lêers, byvoorbeeld, sal lees in hul data. 307 00:16:03,820 --> 00:16:07,555 Hulle sal dit in te sit 'n soort van data raam. 308 00:16:07,555 --> 00:16:09,680 So functions-- die funksies sintaksis is 'n bietjie vreemd. 309 00:16:09,680 --> 00:16:16,160 Weereens is dit die naam van die funksie, toewys, hierdie navraag funksie en dan 310 00:16:16,160 --> 00:16:17,900 die lys van argumente. 311 00:16:17,900 --> 00:16:24,080 So is daar 'n paar mooi dinge oor hoe funksies werk hier. 312 00:16:24,080 --> 00:16:28,170 Vir een, kan jy eintlik toewys standaard waardes vir sekere argumente. 313 00:16:28,170 --> 00:16:32,910 Sodat jy kan sê R1 equals-- kan jy cat sê 314 00:16:32,910 --> 00:16:38,290 is 'n funksie waar R1 gelyk iets by verstek indien die gebruiker spesifiseer 315 00:16:38,290 --> 00:16:39,090 geen argumente. 316 00:16:39,090 --> 00:16:41,932 Andersins, dit is alles wat hy in. 317 00:16:41,932 --> 00:16:44,140 En dit is baie handig omdat 'n groot deel van ons funksies 318 00:16:44,140 --> 00:16:47,910 dikwels dosyne of honderde argumente. 319 00:16:47,910 --> 00:16:51,210 Byvoorbeeld, die een vir die plot grafieke of plot verspreidingsgrafieke 320 00:16:51,210 --> 00:16:54,430 het argumente wat beheer alles van die titel en die as 321 00:16:54,430 --> 00:16:59,512 etikette om die kleur van regressielyne. 322 00:16:59,512 --> 00:17:01,470 En so as jy nie wil hê om mense te laat spesifiseer 323 00:17:01,470 --> 00:17:04,050 elke enkele een van hierdie honderde argumente 324 00:17:04,050 --> 00:17:07,674 beheer elke enkele aspek van 'n plot of 'n regressie of wat ook al, 325 00:17:07,674 --> 00:17:09,299 dit is lekker om hierdie standaard waardes te hê. 326 00:17:09,299 --> 00:17:12,700 327 00:17:12,700 --> 00:17:19,146 >> En dan kan jy eintlik skryf as jy hier sien rug. 328 00:17:19,146 --> 00:17:22,869 Of 'n beter voorbeeld. 329 00:17:22,869 --> 00:17:28,690 Wanneer jy funksies noem jy kan eintlik noem hulle die gebruik van die argument name. 330 00:17:28,690 --> 00:17:33,919 So hier is 'n voorbeeld van die matriks constructor. 331 00:17:33,919 --> 00:17:34,960 Dit neem drie argumente. 332 00:17:34,960 --> 00:17:36,760 Gewoonlik het jy data, wat is 'n vektor. 333 00:17:36,760 --> 00:17:38,920 Jy het N ry, wat is die aantal rye. 334 00:17:38,920 --> 00:17:41,160 Jy het N cols-- aantal kolomme. 335 00:17:41,160 --> 00:17:43,920 Die ding is as jy tik N ry gelyk ookal 336 00:17:43,920 --> 00:17:46,520 en N Kol gelyk ongeag wanneer jy hierdie funksie te roep, 337 00:17:46,520 --> 00:17:47,770 jy kan eintlik omgekeerde hulle. 338 00:17:47,770 --> 00:17:51,590 Sodat jy kan N Kol eerste en N ry sit tweede en dit sal geen verskil maak nie. 339 00:17:51,590 --> 00:17:54,660 So dit is 'n mooi klein funksie. 340 00:17:54,660 --> 00:17:56,260 >> Het invoer en uitvoer. 341 00:17:56,260 --> 00:18:00,010 Dit kan gedoen word, basies. 342 00:18:00,010 --> 00:18:03,816 Daar is ook fasiliteite om uit te skryf arbitrêre R voorwerpe om 'n binêre lêer 343 00:18:03,816 --> 00:18:05,190 en dan lees hulle terug in later. 344 00:18:05,190 --> 00:18:08,030 Wat is handig as jy doen 'n groot interaktiewe sessie R 345 00:18:08,030 --> 00:18:12,850 en jy moet red dinge baie vinnig. 346 00:18:12,850 --> 00:18:16,460 By verstek het R 'n werk gids wat lêers kry uitgeskryf in 347 00:18:16,460 --> 00:18:19,410 en lees terug in uit. 348 00:18:19,410 --> 00:18:22,350 Jy kan sien dat met getwg, verander dit met setdw. 349 00:18:22,350 --> 00:18:25,630 Niks veral interessant hier 350 00:18:25,630 --> 00:18:28,270 >> So nou is die werklike statistieke spul multilinear regressie. 351 00:18:28,270 --> 00:18:30,960 352 00:18:30,960 --> 00:18:34,910 So die gewone sintaksis is 'n bietjie ingewikkeld. 353 00:18:34,910 --> 00:18:37,260 Die model is 'n groot voorwerp basies. 354 00:18:37,260 --> 00:18:39,910 Dit word toegeskryf aan lm, wat is 'n funksie oproep. 355 00:18:39,910 --> 00:18:43,840 Die eerste element is die y tilde x1 plus wat ook al. 356 00:18:43,840 --> 00:18:46,574 357 00:18:46,574 --> 00:18:47,990 My sintaksis hier is 'n bietjie verwarrend. 358 00:18:47,990 --> 00:18:49,490 Ek is redelik Jammer, hierdie is die standaard manier 359 00:18:49,490 --> 00:18:50,990 dat rekenaarwetenskap boeke doen dit. 360 00:18:50,990 --> 00:18:54,890 Maar dit is 'n bietjie vreemd. 361 00:18:54,890 --> 00:18:58,200 >> So basies, dit is lm hakies, eerste item 362 00:18:58,200 --> 00:19:06,730 is variable-- jammer, afhanklik veranderlike tilde x1 plus x2 plus 363 00:19:06,730 --> 00:19:10,910 egter baie onafhanklike veranderlikes wat jy het. 364 00:19:10,910 --> 00:19:14,240 En dan hierdie kan óf vektore, almal dieselfde lengte. 365 00:19:14,240 --> 00:19:16,220 Of hulle kan kolom headers in 'n data raam 366 00:19:16,220 --> 00:19:18,553 dat jy net spesifiseer in die tweede argument data raam. 367 00:19:18,553 --> 00:19:23,270 368 00:19:23,270 --> 00:19:26,380 >> Jy kan ook spesifiseer 'n meer komplekse formule 369 00:19:26,380 --> 00:19:31,990 sodat jy nie lineêr te agteruitgang 'n een afhanklike veranderlike, 370 00:19:31,990 --> 00:19:34,440 of een vektor op 'n pre-bestaande vektor. 371 00:19:34,440 --> 00:19:38,070 Wat jy kan doen, byvoorbeeld, 'n vektor komponent y kwadraat plus 1 372 00:19:38,070 --> 00:19:42,100 en agteruitgang wat teen die teken van 'n paar ander vektor. 373 00:19:42,100 --> 00:19:45,200 Jy kan opsommings van die druk model met hierdie opdrag genoem 374 00:19:45,200 --> 00:19:48,607 summary-- net opsomming parens model. 375 00:19:48,607 --> 00:19:50,190 Weer iets anders wat ek moet verduidelik. 376 00:19:50,190 --> 00:19:55,407 377 00:19:55,407 --> 00:19:58,615 Iets anders wat kry sal reggestel wanneer die skyfies optrek op die internet. 378 00:19:58,615 --> 00:20:01,127 379 00:20:01,127 --> 00:20:03,210 As jy net wil om te bereken 'n eenvoudige korrelasie 380 00:20:03,210 --> 00:20:09,170 jy kan korrelasie vektor gebruik 1 vektor 2 funksie kern. 381 00:20:09,170 --> 00:20:11,856 Metode is by verstek Pearson korrelasies. 382 00:20:11,856 --> 00:20:13,480 Dit is die standaard wat jy kan doen. 383 00:20:13,480 --> 00:20:15,990 Daar is ook Spearman en Kendell korrelasies 384 00:20:15,990 --> 00:20:19,530 wat is 'n paar verskeidenheid rangorde korrelasie. 385 00:20:19,530 --> 00:20:23,600 Wel hulle nie bereken produk oomblikke tussen die vektore hulself, 386 00:20:23,600 --> 00:20:28,511 maar van die vektor se rang bestellings. 387 00:20:28,511 --> 00:20:29,510 Ek sal dit later verduidelik. 388 00:20:29,510 --> 00:20:30,120 >> GEHOOR: Vinnige vraag 389 00:20:30,120 --> 00:20:30,360 >> CONNER Harris: Natuurlik. 390 00:20:30,360 --> 00:20:33,151 >> GEHOOR: So wanneer jy die berekening van vir die eenvoudige korrelasies doen 391 00:20:33,151 --> 00:20:37,655 jy aanvaar dat daar 'n statistiese betekenis aan die korrelasie? 392 00:20:37,655 --> 00:20:39,030 CONNER Harris: Jy hoef nie te. 393 00:20:39,030 --> 00:20:41,840 394 00:20:41,840 --> 00:20:43,960 'N lm is basies net 'n masjien. 395 00:20:43,960 --> 00:20:47,690 Dit sal in twee dinge en dit sal uitspoeg 396 00:20:47,690 --> 00:20:49,770 koëffisiënte vir die beste passing lyn. 397 00:20:49,770 --> 00:20:52,310 Dit rapporteer ook standaard foute op die koëffisiënte. 398 00:20:52,310 --> 00:20:55,865 En dit sal vir jou sê, soos die afsnit statisties beduidende 399 00:20:55,865 --> 00:20:56,740 of verskil van 0. 400 00:20:56,740 --> 00:20:59,400 Is die helling van die beste fiks lyn statisties 401 00:20:59,400 --> 00:21:01,510 verskillende van nul, ensovoorts. 402 00:21:01,510 --> 00:21:06,260 So is dit veronderstel niks, ek dink is die beste antwoord op jou vraag. 403 00:21:06,260 --> 00:21:07,410 OK. 404 00:21:07,410 --> 00:21:14,650 >> Plotting-- so die belangrikste rede waarom jy moet gebruik R, soos multilinear regressie. 405 00:21:14,650 --> 00:21:17,320 Basies elke taal het 'n paar fasiliteit daarvoor. 406 00:21:17,320 --> 00:21:21,365 En eerlik R se sintaksis vir regressie is 'n bietjie arcane. 407 00:21:21,365 --> 00:21:22,990 Maar plot is waar dit regtig skyn. 408 00:21:22,990 --> 00:21:28,090 >> Die perd funksie is plot en dit neem twee vektore, x en y. 409 00:21:28,090 --> 00:21:33,010 En dan is die ellipse staan ​​vir 'n baie groot aantal opsionele argumente wat 410 00:21:33,010 --> 00:21:39,190 beheer alles van titels kleure van verskeie lyne of verskeie punte, 411 00:21:39,190 --> 00:21:40,200 die tipe plot. 412 00:21:40,200 --> 00:21:42,250 Jy kan strooi het erwe of line erwe. 413 00:21:42,250 --> 00:21:47,900 414 00:21:47,900 --> 00:21:49,710 >> [Onhoorbaar] 2 vektore van dieselfde lengte. 415 00:21:49,710 --> 00:21:53,780 Jy kan eers 'heg data raam in jou script. 416 00:21:53,780 --> 00:22:01,220 En dit sal laat jy net kolom gebruik headers in plaas van afsonderlike vektore. 417 00:22:01,220 --> 00:22:05,410 Jy kan die beste pas lyne en plaaslike voeg regressie krommes om jou grafiek. 418 00:22:05,410 --> 00:22:09,390 >> Hierdie opdragte gelys hier, ab lyn en lyne, 419 00:22:09,390 --> 00:22:11,640 by verstek hierdie kry geskryf in pop up vensters 420 00:22:11,640 --> 00:22:15,560 want dit veronderstel dat jy gebruik R interaktief. 421 00:22:15,560 --> 00:22:17,310 As jy nie jy kan skryf twee lêers wat 422 00:22:17,310 --> 00:22:21,600 is in baie enige formaat wat jy wil. 423 00:22:21,600 --> 00:22:25,410 Jammer, ek het 'n tikfout Ek het net besef. 424 00:22:25,410 --> 00:22:30,887 425 00:22:30,887 --> 00:22:32,720 As jy wil oopmaak 'n ander grafiese toestel 426 00:22:32,720 --> 00:22:39,200 kan jy hierdie funksie genoem PNG of gebruik JPEG of 'n baie ander beeld-formate. 427 00:22:39,200 --> 00:22:42,319 En jy kan grafieke te skryf watter lêer naam wat jy spesifiseer. 428 00:22:42,319 --> 00:22:45,110 Om te kanselleer wat jy het om use-- Ek het dit nie skryf in die slide-- 429 00:22:45,110 --> 00:22:49,650 maar daar is 'n funksie genoem dev dot af dat neem geen argumente. 430 00:22:49,650 --> 00:22:51,517 >> Dan is daar fasiliteite vir 3D plot 431 00:22:51,517 --> 00:22:53,350 en kontoer plot As jy wil maak 432 00:22:53,350 --> 00:22:55,700 grafieke van twee onafhanklike veranderlikes. 433 00:22:55,700 --> 00:22:57,150 Ek sal nie in hierdie oomblik. 434 00:22:57,150 --> 00:22:59,130 >> Daar is ook 'n paar fasiliteite vir animasie 435 00:22:59,130 --> 00:23:01,300 dit is gewoonlik onderhou word deur derde partye. 436 00:23:01,300 --> 00:23:06,330 Ek het animasies met R grafieke gedoen, maar ek het nie gebruik hierdie derde party 437 00:23:06,330 --> 00:23:06,940 biblioteke. 438 00:23:06,940 --> 00:23:09,929 So ek kan nie regtig getuig hoe goed hulle is. 439 00:23:09,929 --> 00:23:12,220 Wat ek beveel as jy wil om animasies met behulp van R te maak 440 00:23:12,220 --> 00:23:16,480 is jy kan uit te skryf al die rame vir die animasies 441 00:23:16,480 --> 00:23:18,470 en dan kan jy 'n gebruik derde party program-- 442 00:23:18,470 --> 00:23:23,630 tipiese kinders is FFmpeg genoem of ImageMagick-- om steek 443 00:23:23,630 --> 00:23:26,540 al jou rame in een animasie. 444 00:23:26,540 --> 00:23:28,380 >> So tyd vir demo. 445 00:23:28,380 --> 00:23:31,030 446 00:23:31,030 --> 00:23:37,189 So as jy die gebruik van enige Unix agtige stelsel wat is Linux BSD maar BSD gebruik. 447 00:23:37,189 --> 00:23:39,730 OS X maak 'n terminaal venster en tik R by die opdrag prompt. 448 00:23:39,730 --> 00:23:42,820 As jy R studio of die wil, wat ook werk. 449 00:23:42,820 --> 00:23:46,270 Vir Windows gebruikers moet jy wees in staat wees om R te vind in jou menu Start. 450 00:23:46,270 --> 00:23:50,390 Dit moet iets genoem soos R x64 3 punt wat ook al. 451 00:23:50,390 --> 00:23:53,110 Oop te maak daar. 452 00:23:53,110 --> 00:23:58,850 >> So nou laat my net Maak 'n terminale venster. 453 00:23:58,850 --> 00:24:02,562 Alle reg, soek. 454 00:24:02,562 --> 00:24:03,520 GEHOOR: Command-ruimte 455 00:24:03,520 --> 00:24:06,675 CONNER Harris: Command-ruimte, dankie. 456 00:24:06,675 --> 00:24:10,030 Ek het nie gewoonlik gebruik Macs. 457 00:24:10,030 --> 00:24:13,310 Terminale, wys 'n nuwe venster. 458 00:24:13,310 --> 00:24:18,120 Nuwe venster is instellings basiese, R. So jy moet kry 459 00:24:18,120 --> 00:24:22,230 'n welkome boodskap iets soos hierdie. 460 00:24:22,230 --> 00:24:31,060 >> So ek gebruik R interaktief. 461 00:24:31,060 --> 00:24:32,719 Jy kan ook skryf R skrifte van die kursus. 462 00:24:32,719 --> 00:24:34,510 Basies skrifte loop presies dieselfde manier as 463 00:24:34,510 --> 00:24:40,250 as jy sit by die rekenaar tik in elke lyn een op 'n tyd. 464 00:24:40,250 --> 00:24:42,660 So laat ons begin deur die maak van 'n vektor. 465 00:24:42,660 --> 00:24:46,230 A pyl C 1, 2. 466 00:24:46,230 --> 00:24:49,400 1, 2, 4. 467 00:24:49,400 --> 00:24:50,050 OK, seker nie. 468 00:24:50,050 --> 00:24:51,630 Ek kan die lettergrootte groter te maak. 469 00:24:51,630 --> 00:24:53,030 >> GEHOOR: Command-Plus 470 00:24:53,030 --> 00:24:53,650 >> CONNER Harris: Command-Plus. 471 00:24:53,650 --> 00:24:54,191 Opdrag-Plus. 472 00:24:54,191 --> 00:24:57,610 473 00:24:57,610 --> 00:25:00,370 Alle reg, hoe is dit? 474 00:25:00,370 --> 00:25:00,870 Goed? 475 00:25:00,870 --> 00:25:01,551 OK. 476 00:25:01,551 --> 00:25:03,300 So laat ons begin deur waarby 'n vektor lys. 477 00:25:03,300 --> 00:25:08,710 Doen 'n pyl, C 1,2,4. 478 00:25:08,710 --> 00:25:11,181 Ons kan nie 'n te sien. 479 00:25:11,181 --> 00:25:12,680 Moenie bekommerd wees oor die bracket daar. 480 00:25:12,680 --> 00:25:18,590 Die hakies is, so as jy druk baie lang skikkings, ons kan waar jy is. 481 00:25:18,590 --> 00:25:26,987 Een voorbeeld sou wees as ek wil net reeks 2-200. 482 00:25:26,987 --> 00:25:28,820 As ek 'n baie gedruk lang skikking, die hakies 483 00:25:28,820 --> 00:25:31,060 is net so kan ek hou spoor van wat indeks 484 00:25:31,060 --> 00:25:33,250 ons is op as ek soek deur middel van hierdie visueel. 485 00:25:33,250 --> 00:25:36,570 486 00:25:36,570 --> 00:25:38,280 So in elk geval, ons het 'n. 487 00:25:38,280 --> 00:25:43,326 >> So ek sê voor daardie skikkings interaksie baie mooi met, byvoorbeeld, 488 00:25:43,326 --> 00:25:44,450 unêre bedrywighede soos hierdie. 489 00:25:44,450 --> 00:25:46,500 So wat jy dink ek sal kry as ek tik 'n plus 1? 490 00:25:46,500 --> 00:25:49,630 491 00:25:49,630 --> 00:25:51,140 Yep. 492 00:25:51,140 --> 00:25:54,250 Reg, nou sal ek maak hierdie verskillende skikking. 493 00:25:54,250 --> 00:26:01,650 Kom ons sê b c 20,40, 80. 494 00:26:01,650 --> 00:26:03,400 So wat dink jy hierdie opdrag sal doen? 495 00:26:03,400 --> 00:26:09,962 496 00:26:09,962 --> 00:26:10,670 Voeg die elemente. 497 00:26:10,670 --> 00:26:14,950 En so basies dit is wat dit doen nie. 498 00:26:14,950 --> 00:26:16,740 So dit is redelik gerieflik. 499 00:26:16,740 --> 00:26:23,800 So ek hoe oor ek dit doen. c is, kom ons sê, 6 keer 1-10. 500 00:26:23,800 --> 00:26:26,789 501 00:26:26,789 --> 00:26:28,830 So, wat doen wat ek wil sien vervat, dink jy? 502 00:26:28,830 --> 00:26:37,110 503 00:26:37,110 --> 00:26:38,110 So al veelvoude van ses. 504 00:26:38,110 --> 00:26:42,170 Nou, wat dink jy sal gebeur as ek dit doen? 505 00:26:42,170 --> 00:26:48,090 Ek sal dit 'n bietjie duideliker, c, c te maak. 506 00:26:48,090 --> 00:26:50,365 So wat gebeur, het jy dink, as ek dit doen? 507 00:26:50,365 --> 00:26:51,488 'n plus c. 508 00:26:51,488 --> 00:26:55,550 509 00:26:55,550 --> 00:26:56,050 [Onhoorbaar] 510 00:26:56,050 --> 00:26:58,552 511 00:26:58,552 --> 00:27:02,350 >> GEHOOR: Óf 'n fout of dit net voeg die eerste drie elemente. 512 00:27:02,350 --> 00:27:04,510 >> CONNER Harris: Nie heeltemal. 513 00:27:04,510 --> 00:27:05,522 Dit is wat ons het. 514 00:27:05,522 --> 00:27:08,910 Wat gebeur is 'n korter skikking, a, het gery. 515 00:27:08,910 --> 00:27:13,990 So het ons 124, 124, 124. 516 00:27:13,990 --> 00:27:15,710 Ja. 517 00:27:15,710 --> 00:27:18,940 En basies, kan jy sien hierdie gedrag voor, 'n plus 1, 518 00:27:18,940 --> 00:27:22,190 as 'n subklas van hierdie gedrag, waar die kortste skikking is net die aantal 519 00:27:22,190 --> 00:27:25,410 1, wat is 'n een element skikking. 520 00:27:25,410 --> 00:27:27,740 Ek het net nie sê al vektor die tyd in plaas van skikking, 521 00:27:27,740 --> 00:27:30,290 want dit is wat die r dokumentasie doen gewoonlik. 522 00:27:30,290 --> 00:27:33,070 Dit is 'n ingeburgerde c gewoonte. 523 00:27:33,070 --> 00:27:37,590 >> OK, en so nou het ons hierdie skikking. 524 00:27:37,590 --> 00:27:38,830 So ons het hierdie skikking, c. 525 00:27:38,830 --> 00:27:41,380 Ons kan opsomming te kry statistieke oor c, opsomming c. 526 00:27:41,380 --> 00:27:46,920 527 00:27:46,920 --> 00:27:48,280 En dit is mooi. 528 00:27:48,280 --> 00:27:51,070 529 00:27:51,070 --> 00:27:52,670 So nou, laat ons doen 'n paar dinge matriks. 530 00:27:52,670 --> 00:27:56,160 Kom ons sê m is 'n matriks. 531 00:27:56,160 --> 00:27:57,780 Kom ons maak dit 'n drie deur drie een. 532 00:27:57,780 --> 00:28:01,630 So nrows gelyk 3 en ncols gelyk 3. 533 00:28:01,630 --> 00:28:04,190 534 00:28:04,190 --> 00:28:10,710 En data laat do-- so wat dink jy dit gaan doen? 535 00:28:10,710 --> 00:28:15,310 536 00:28:15,310 --> 00:28:16,580 >> Reg, dit is die volgende een. 537 00:28:16,580 --> 00:28:17,970 Dit is nrow en ncolumn. 538 00:28:17,970 --> 00:28:22,164 539 00:28:22,164 --> 00:28:24,580 So, wat ek gedoen het is ek het verklaar 'n drie deur drie matriks 540 00:28:24,580 --> 00:28:26,950 en ek het geslaag in 'n nege-element skikking. 541 00:28:26,950 --> 00:28:30,530 So die logaritme van al die elemente een deur nege. 542 00:28:30,530 --> 00:28:33,400 543 00:28:33,400 --> 00:28:37,285 En al die waardes vul die array-- jammer? 544 00:28:37,285 --> 00:28:38,660 GEHOOR: Dit is die basis 10 logs? 545 00:28:38,660 --> 00:28:41,284 CONNER Harris: Nee, log is natuurlike logaritmes, so basis e. 546 00:28:41,284 --> 00:28:44,886 547 00:28:44,886 --> 00:28:47,010 Ja, as jy wou base 10 log, ek dink wat jy wil hê 548 00:28:47,010 --> 00:28:51,620 om aan te meld ook al, gedeel deur log 10. 549 00:28:51,620 --> 00:28:56,750 En so het die data van die [onhoorbaar] net vul die skikking, so bo na onder, 550 00:28:56,750 --> 00:28:59,490 dan links na regs. 551 00:28:59,490 --> 00:29:06,890 En as jy wil 'n ander te doen skikking, kom ons sê N is matriks. 552 00:29:06,890 --> 00:29:10,317 Kom ons doen, weet ek nie, 2-13. 553 00:29:10,317 --> 00:29:11,900 Of ek sal iets meer interessant te doen. 554 00:29:11,900 --> 00:29:13,770 Ek sal doen 2-4. 555 00:29:13,770 --> 00:29:15,780 nrow gelykes, kom ons sê, 3. 556 00:29:15,780 --> 00:29:18,992 ncol gelyk 4. 557 00:29:18,992 --> 00:29:20,360 n. 558 00:29:20,360 --> 00:29:22,090 So het ons dit gekry het. 559 00:29:22,090 --> 00:29:26,130 >> En nou, as ons wil hê dat hierdie vermeerder sou ons n persent keer persent nie, 560 00:29:26,130 --> 00:29:27,680 want dit is n. 561 00:29:27,680 --> 00:29:30,234 562 00:29:30,234 --> 00:29:31,400 En ons het matriks produkte. 563 00:29:31,400 --> 00:29:33,970 564 00:29:33,970 --> 00:29:37,810 Deur hulle manier, het jy sien hoe wanneer ek verklaar n, die 2-4 565 00:29:37,810 --> 00:29:43,570 vektor het gery tot dit gevul al n? 566 00:29:43,570 --> 00:29:45,710 As jy wou neem eiewaarde-ontbinding, 567 00:29:45,710 --> 00:29:46,960 dit is iets wat ons kan baie maklik te doen. 568 00:29:46,960 --> 00:29:47,709 Ons kan eie N doen. 569 00:29:47,709 --> 00:29:52,290 570 00:29:52,290 --> 00:29:54,600 En so is dit ons eerste ontmoeting met 'n lys. 571 00:29:54,600 --> 00:29:57,000 >> So eie N is 'n lys met twee sleutels. 572 00:29:57,000 --> 00:29:58,430 Waardes, wat is hierdie verskeidenheid hier. 573 00:29:58,430 --> 00:30:01,030 En vektore, wat is hierdie verskeidenheid hier. 574 00:30:01,030 --> 00:30:08,240 So as jy wou onttrek, sê, die derde kolom 575 00:30:08,240 --> 00:30:13,080 uit die eievektore matriks, want die eievektore is kolomvektore. 576 00:30:13,080 --> 00:30:24,400 So kan ons PAC eie N dollar teken doen vektore, komma 3, van [onhoorbaar]. 577 00:30:24,400 --> 00:30:29,800 578 00:30:29,800 --> 00:30:30,900 PAC. 579 00:30:30,900 --> 00:30:34,100 Is dat, as jy kan verwag. 580 00:30:34,100 --> 00:30:39,210 >> Dan sê N tye persent keer PAC. 581 00:30:39,210 --> 00:30:42,610 582 00:30:42,610 --> 00:30:48,320 So die gevolg hier lyk beslis soos as ons het die derde eiewaarde hier 583 00:30:48,320 --> 00:30:50,390 wat ooreenstem met die derde eievektor. 584 00:30:50,390 --> 00:30:53,190 Dit vermenigvuldig net alles in hierdie eievektor, komponent-wys, 585 00:30:53,190 --> 00:30:53,990 deur die eiewaarde. 586 00:30:53,990 --> 00:30:57,760 En dit is wat ons sou verwag, want dit is wat eiewaardes is. 587 00:30:57,760 --> 00:31:00,890 Het hier iemand nie geneem lineêre algebra? 588 00:31:00,890 --> 00:31:02,530 'N Paar mense, OK. 589 00:31:02,530 --> 00:31:04,030 Net draai jou brein af vir 'n bietjie. 590 00:31:04,030 --> 00:31:07,490 591 00:31:07,490 --> 00:31:20,720 En inderdaad as ons eie N dollar teken waardes 3 keer PAC, 592 00:31:20,720 --> 00:31:21,810 goed kry dieselfde ding. 593 00:31:21,810 --> 00:31:24,726 Dit is anders as 'n ry geformateer vektor plaas van 'n kolom vektor, 594 00:31:24,726 --> 00:31:25,640 maar groot deal. 595 00:31:25,640 --> 00:31:29,430 596 00:31:29,430 --> 00:31:35,170 En so dit is basies die mooi dinge wat ons kan doen met matrikse, 597 00:31:35,170 --> 00:31:36,489 gedemonstreer lyste. 598 00:31:36,489 --> 00:31:39,030 Ek moet die mooi demonstreer dinge oor funksies as well. 599 00:31:39,030 --> 00:31:41,750 >> So laat say-- [onhoorbaar] funksie oproep laat se 600 00:31:41,750 --> 00:31:51,960 dit funk teen funksie N squared-- Eintlik is dit nie regtig die beste. 601 00:31:51,960 --> 00:31:55,632 a, b, 'n kwadraat plus b. 602 00:31:55,632 --> 00:31:58,547 603 00:31:58,547 --> 00:32:00,380 So een ding oor funksies, weer, is hulle 604 00:32:00,380 --> 00:32:01,963 moenie eksplisiete terugkeer state nodig het nie. 605 00:32:01,963 --> 00:32:04,250 So kan jy die just-- laaste stelling geëvalueer 606 00:32:04,250 --> 00:32:07,502 sal die verklaring teruggekeer wees, of die waarde teruggekeer. 607 00:32:07,502 --> 00:32:10,460 So in hierdie geval, is ons net die evaluering een stelling, 'n kwadraat plus b. 608 00:32:10,460 --> 00:32:12,043 Dit sal die standaard terugkeer waarde wees nie. 609 00:32:12,043 --> 00:32:14,530 Dit maak seer om nooit in te sit uitdruklik terugkeer waardes, 610 00:32:14,530 --> 00:32:16,880 veral as jy met 'n funksie van baie ingewikkelde logika 611 00:32:16,880 --> 00:32:17,380 vloei. 612 00:32:17,380 --> 00:32:18,450 Maar jy dit nie benodig nie. 613 00:32:18,450 --> 00:32:24,890 So nou kan ons funk 5, 1 doen nie, en dit is basies wat jy sou verwag. 614 00:32:24,890 --> 00:32:29,146 615 00:32:29,146 --> 00:32:31,270 Iets anders wat ons kan doen, kan ons werklik doen funk b 616 00:32:31,270 --> 00:32:33,260 gelyk 1, 'n gelyk 5. 617 00:32:33,260 --> 00:32:36,870 618 00:32:36,870 --> 00:32:40,770 So as ons spesifiseer hier watter nommer, wat argument gaan wat argument 619 00:32:40,770 --> 00:32:44,680 in die funksie, kan ons rondom flip hierdie waardes waar ons wil. 620 00:32:44,680 --> 00:32:48,405 >> GEHOOR: Is daar 'n rede om dit uit te skryf met die b 621 00:32:48,405 --> 00:32:52,404 gelyk in teenstelling met net die gebruik van die nommers en die komma? 622 00:32:52,404 --> 00:32:54,820 CONNER Harris: Ja, gewoonlik doen dit as jy het funksies 623 00:32:54,820 --> 00:32:58,540 met 'n baie argumente. 624 00:32:58,540 --> 00:33:00,690 Dit kan dikwels soos vlae wat jy wil net 625 00:33:00,690 --> 00:33:03,130 wil gebruik in seldsame geleenthede. 626 00:33:03,130 --> 00:33:06,740 En op hierdie manier kan jy jou only-- kan verwys na die spesifieke argumente 627 00:33:06,740 --> 00:33:09,110 wat jy wil gebruik nie-standaard waardes vir, 628 00:33:09,110 --> 00:33:14,470 en jy hoef nie 'n uit te skryf n klomp van die vlae gelyk valse agter hulle. 629 00:33:14,470 --> 00:33:19,710 Of ek kan dit weer te skryf met 'n standaard waarde soos b is gelyk aan 2. 630 00:33:19,710 --> 00:33:26,289 En dan kan ek f funk te doen, Ek sal doen 4, 1 hierdie tyd. 631 00:33:26,289 --> 00:33:28,580 En 17, wat is 4 kwadraat plus 1, soos jy kan verwag. 632 00:33:28,580 --> 00:33:34,290 >> Maar ek kan ook net noem dit met funk 4, 633 00:33:34,290 --> 00:33:36,970 en ek kry 18, want Ek het nie spesifiseer b. 634 00:33:36,970 --> 00:33:38,550 So b kry die verstek waarde van 2. 635 00:33:38,550 --> 00:33:41,700 636 00:33:41,700 --> 00:33:47,200 >> OK, so nou as jy volgende saam met die demo, 637 00:33:47,200 --> 00:33:51,010 tik hierdie lyn op jou bevel gevra en kyk wat kom. 638 00:33:51,010 --> 00:33:52,090 Eintlik, dit nie doen nie. 639 00:33:52,090 --> 00:33:52,590 Tik hierdie. 640 00:33:52,590 --> 00:33:57,780 641 00:33:57,780 --> 00:34:01,000 Jy moet iets soos hierdie te kry. 642 00:34:01,000 --> 00:34:04,780 So mtcars is 'n ingeboude in die data wat vir hierdie demonstrasie 643 00:34:04,780 --> 00:34:13,550 doeleindes wat kom with-- wat kom in by verstek met jou r verspreiding. 644 00:34:13,550 --> 00:34:19,211 Dit is 'n samestelling van statistieke van 'n 1974-uitgawe van die tydskrif Motor Trend se 645 00:34:19,211 --> 00:34:20,710 op 'n aantal van die verskillende motor modelle. 646 00:34:20,710 --> 00:34:28,270 >> So is daar myl per gelling, cylinders-- Ek vergeet wat disp is-- perdekrag. 647 00:34:28,270 --> 00:34:31,610 648 00:34:31,610 --> 00:34:32,420 Waarskynlik. 649 00:34:32,420 --> 00:34:36,920 As jy net Google MT motors, dan een van die eerste resultate 650 00:34:36,920 --> 00:34:38,730 sal wees van die amptelike r dokumentasie 651 00:34:38,730 --> 00:34:41,080 en dit sal verduidelik al hierdie data velde. 652 00:34:41,080 --> 00:34:47,020 So gewig is-- wt is gewig van die motor in ton. 653 00:34:47,020 --> 00:34:48,880 Q sek is die kwart myl tyd. 654 00:34:48,880 --> 00:34:52,409 655 00:34:52,409 --> 00:34:55,850 So nou kan ons 'n paar lekker dinge te doen oor MT motors is 'n data veld. 656 00:34:55,850 --> 00:35:01,640 >> So kan ons dinge doen soos ry name, mt motors. 657 00:35:01,640 --> 00:35:05,490 En dit is 'n lys van al die rye in die stel data wat name van die motors is. 658 00:35:05,490 --> 00:35:10,780 Ons kan colnames, mt motors doen. 659 00:35:10,780 --> 00:35:15,500 As jy dit doen mt motors, sub-numeriese indeks soos 2. 660 00:35:15,500 --> 00:35:18,177 kry ons die tweede kolom uit hierdie, wat sou silinders wees. 661 00:35:18,177 --> 00:35:19,370 >> GEHOOR: Wat het jy gedoen? 662 00:35:19,370 --> 00:35:21,570 >> CONNER Harris: Ek getik mt motors, hakies e, 663 00:35:21,570 --> 00:35:24,180 wat my die tweede het kolom uit mt motors. 664 00:35:24,180 --> 00:35:34,501 665 00:35:34,501 --> 00:35:38,110 Of as ons wil 'n ry, kan ek tik mtcars komma 2, byvoorbeeld. 666 00:35:38,110 --> 00:35:41,850 667 00:35:41,850 --> 00:35:46,390 Ander ronde 2 komma, soos dit. 668 00:35:46,390 --> 00:35:48,880 En wat gaan in jou ry. 669 00:35:48,880 --> 00:35:54,680 Dit is hier net gee jou 'n kolom, maar kolom as 'n vektor. 670 00:35:54,680 --> 00:36:04,634 671 00:36:04,634 --> 00:36:06,425 Ek besef nou net ek vergeet om te demonstreer 672 00:36:06,425 --> 00:36:09,150 paar cool dinge oor vektore wat jy kan doen met indekse. 673 00:36:09,150 --> 00:36:10,480 So laat my dit doen nou. 674 00:36:10,480 --> 00:36:17,130 So kom ons doen c gets-- om hierdie op pause-- 2 keer 1 tot 10. 675 00:36:17,130 --> 00:36:21,360 So c is net gaan om te wees die vektor 2 deur middel van 20. 676 00:36:21,360 --> 00:36:24,640 Ek kan elemente te neem soos hierdie, c2. 677 00:36:24,640 --> 00:36:30,942 Ek kan slaag in 'n vektor soos hierdie, c-- my laat 678 00:36:30,942 --> 00:36:34,470 gebruik verskillende name as c, soos PAC c. 679 00:36:34,470 --> 00:36:37,591 680 00:36:37,591 --> 00:36:39,340 Basies, ek doen dit so kry jy nie 681 00:36:39,340 --> 00:36:45,010 verwar tussen c as 'n vektor konstruksie funksie, 682 00:36:45,010 --> 00:36:48,800 en dan c as 'n veranderlike naam. 683 00:36:48,800 --> 00:36:53,120 PAC hakies c 4, 5, 7. 684 00:36:53,120 --> 00:36:56,540 Dit sal my uit die vierde, vyfde, en sewe elemente van die skikking. 685 00:36:56,540 --> 00:37:01,740 Ek kan PAC doen, sit in 'n negatiewe indeks, soos negatiewe 4. 686 00:37:01,740 --> 00:37:06,500 Dit sal my uit hierdie kom met die vierde element verwyder. 687 00:37:06,500 --> 00:37:10,140 Dan as ek wou snye te doen, Ek kan PAC 2 doen deur middel van 6. 688 00:37:10,140 --> 00:37:15,480 2 kolon 6 is net nog ' vektor, wat is 2, 3, 4, 5, 6. 689 00:37:15,480 --> 00:37:18,230 Spoeg dit. 690 00:37:18,230 --> 00:37:20,770 >> So in elk geval, terug na mt motors. 691 00:37:20,770 --> 00:37:26,650 692 00:37:26,650 --> 00:37:28,450 So laat doen 'n paar regressies. 693 00:37:28,450 --> 00:37:34,240 Kom ons sê model gets-- laat lineêr regress-- Ek weet nie. 694 00:37:34,240 --> 00:37:41,780 Eerste laat se wil heg mtcars, natuurlik. 695 00:37:41,780 --> 00:37:44,870 696 00:37:44,870 --> 00:38:00,010 So [onhoorbaar] model lm, laat agteruitgang myl per gelling op tilde gewig. 697 00:38:00,010 --> 00:38:03,300 En dan data raam is mtcars. 698 00:38:03,300 --> 00:38:06,830 So opsomming model. 699 00:38:06,830 --> 00:38:12,900 700 00:38:12,900 --> 00:38:15,595 >> OK, so dit lyk 'n bietjie ingewikkeld. 701 00:38:15,595 --> 00:38:19,380 Maar basies, aangesien as ons probeer om myl per gelling druk 702 00:38:19,380 --> 00:38:23,970 as 'n lineêre funksie van die gewig, dan het ons hierdie lyn hier, 703 00:38:23,970 --> 00:38:28,730 wat afsnitte op 37,28. 704 00:38:28,730 --> 00:38:33,830 37,28 sou wees om die teoretiese myl per liter van 'n motor wat nul weeg. 705 00:38:33,830 --> 00:38:41,210 En dan vir elke addisionele ton, jy klop ongeveer vyf myl per gelling 706 00:38:41,210 --> 00:38:42,440 af van daardie. 707 00:38:42,440 --> 00:38:45,120 Beide van hierdie koëffisiënte jy kan daar standaard foute te sien. 708 00:38:45,120 --> 00:38:47,870 En hulle is baie statisties beduidend nie. 709 00:38:47,870 --> 00:38:55,740 >> So kan ons baie seker wees 1 e 10 om die negatiewe 10. 710 00:38:55,740 --> 00:38:59,510 So 1 keer iets doen om die negatiewe 10, dat as jy 'n swaarder motor te maak, 711 00:38:59,510 --> 00:39:01,440 dit sal hê erger myl per gelling. 712 00:39:01,440 --> 00:39:04,940 713 00:39:04,940 --> 00:39:07,250 Of ons kan 'n paar ander model te toets. 714 00:39:07,250 --> 00:39:09,230 Soos in plaas van agteruit hierdie gewig, 715 00:39:09,230 --> 00:39:12,600 laat se agteruitgang dit op log gewig, want miskien die effektiewe gewig 716 00:39:12,600 --> 00:39:15,690 op een of ander manier nie kilometers is lineêr. 717 00:39:15,690 --> 00:39:18,540 >> Dit het vir ons 'n r kwadraat van 0,7528. 718 00:39:18,540 --> 00:39:19,610 So kom ons probeer hierdie. 719 00:39:19,610 --> 00:39:21,485 Hierdie keer kom ons doen 'n verskillende veranderlike ook. 720 00:39:21,485 --> 00:39:22,500 Model2. 721 00:39:22,500 --> 00:39:24,800 So opsomming, model2. 722 00:39:24,800 --> 00:39:28,200 723 00:39:28,200 --> 00:39:31,390 Alle reg, dit weer, het ons hier het ons die beste pas lyn. 724 00:39:31,390 --> 00:39:36,160 En dit time-- dit sê, basies dat elke keer as jy 725 00:39:36,160 --> 00:39:38,090 verhoog die gewig van 'n motor met 'n faktor van e 726 00:39:38,090 --> 00:39:40,580 jy verloor hierdie baie myl per gelling. 727 00:39:40,580 --> 00:39:43,210 728 00:39:43,210 --> 00:39:50,326 >> En so hierdie tyd ons oorblywende standaard fout it-- dit maak nie saak, regtig. 729 00:39:50,326 --> 00:39:53,540 Die oorblywende standaard fout is basies net die standaard fout 730 00:39:53,540 --> 00:39:57,760 wat jy verlaat het nadat jy neem die tendens lyn weg. 731 00:39:57,760 --> 00:40:02,805 En ons r hier kwadraat is 0,81, wat is 'n bietjie beter as wat 732 00:40:02,805 --> 00:40:07,640 ons voorheen gehad het, 0,52. 733 00:40:07,640 --> 00:40:09,750 >> En so nou laat ons voeg 'n term om hierdie regressie. 734 00:40:09,750 --> 00:40:13,020 So laat agteruitgang myl per gelling beide op die puntelys van die gewigte 735 00:40:13,020 --> 00:40:21,130 en laat ons dit doen, q myl, kwart myl tyd. 736 00:40:21,130 --> 00:40:26,190 OK, moet dit the-- alles reg, qsec het. 737 00:40:26,190 --> 00:40:26,690 Qsec. 738 00:40:26,690 --> 00:40:30,630 739 00:40:30,630 --> 00:40:35,000 Actually-- jammer, wat? 740 00:40:35,000 --> 00:40:37,000 Laat my dit iets noem anders behalwe model2. 741 00:40:37,000 --> 00:40:38,000 Laat my model3 noem. 742 00:40:38,000 --> 00:40:40,860 743 00:40:40,860 --> 00:40:42,900 En so nou kan ons opsomming model3 doen. 744 00:40:42,900 --> 00:40:46,850 745 00:40:46,850 --> 00:40:49,100 En dit weer, dit is basies wat jy kan verwag. 746 00:40:49,100 --> 00:40:51,750 Jy het positiewe onderskep. 747 00:40:51,750 --> 00:40:54,550 Die effektiewe verhoging gewig is negatief. 748 00:40:54,550 --> 00:40:58,490 En die effektiewe toenemende kwart myl tyd 749 00:40:58,490 --> 00:41:02,420 positief is, maar al minder as gewig. 750 00:41:02,420 --> 00:41:06,010 Nou intuïtief, kan jy sin te maak deur te sê dink oor sportmotors. 751 00:41:06,010 --> 00:41:08,950 Daar is 'n baie vinnige versnelling, 'n baie kort kwart myl tye. 752 00:41:08,950 --> 00:41:13,729 Hulle gaan ook meer gas te gebruik, terwyl meer sinvolle motors gaan 753 00:41:13,729 --> 00:41:16,020 stadiger versnelling het, hoër kwart myl tye, 754 00:41:16,020 --> 00:41:20,890 en gebruik minder gas ,, sodat hoër myl per gelling. 755 00:41:20,890 --> 00:41:21,390 Groot. 756 00:41:21,390 --> 00:41:23,431 En so is dit nou tyd om plot iets soos hierdie. 757 00:41:23,431 --> 00:41:27,810 So laat do-- so kaal bene kan ons plots-- doen 758 00:41:27,810 --> 00:41:35,280 omdat ek dit data raam het aangeheg before-- ons kan net nie erwe, wt mpg. 759 00:41:35,280 --> 00:41:38,762 760 00:41:38,762 --> 00:41:39,720 Maak dit 'n bietjie groter. 761 00:41:39,720 --> 00:41:55,050 762 00:41:55,050 --> 00:41:57,350 Daar het ons basies 'n spreidiagram, maar die punte 763 00:41:57,350 --> 00:41:58,690 is soort van moeilik om te sien op hierdie. 764 00:41:58,690 --> 00:42:04,860 765 00:42:04,860 --> 00:42:10,900 >> Ek het nie onvoorbereid wat die onthou sintaksis is vir die verandering van die plot. 766 00:42:10,900 --> 00:42:14,100 So ek dink dit sal wees 'n goeie tyd om te bring, 767 00:42:14,100 --> 00:42:18,000 daar is 'n baie mooi ingeboude hulp funksie, help aanhalings funksioneer naam. 768 00:42:18,000 --> 00:42:21,690 Ons sal tot basies bring enigiets wat jy wil. 769 00:42:21,690 --> 00:42:28,010 770 00:42:28,010 --> 00:42:32,730 Ek dink ek sal dit werklik te doen tipe gelyk p vir punte erwe. 771 00:42:32,730 --> 00:42:34,369 Het dit iets te verander? 772 00:42:34,369 --> 00:42:35,160 En nee, nie regtig nie. 773 00:42:35,160 --> 00:42:39,160 774 00:42:39,160 --> 00:42:39,660 Alles reg. 775 00:42:39,660 --> 00:42:46,760 776 00:42:46,760 --> 00:42:49,580 >> Vir een of ander rede, wanneer ek dit gedoen het op my eie rekenaar 'n ruk gelede, 777 00:42:49,580 --> 00:42:52,080 al die strooi punte was baie duideliker. 778 00:42:52,080 --> 00:43:06,390 779 00:43:06,390 --> 00:43:13,970 Anyhow, is die strooi soort sigbare? 780 00:43:13,970 --> 00:43:15,124 Daar is een daar. 781 00:43:15,124 --> 00:43:16,165 'N Paar daar 'n paar daar. 782 00:43:16,165 --> 00:43:18,860 783 00:43:18,860 --> 00:43:21,185 Jy kan hulle soort van sien nie, reg? 784 00:43:21,185 --> 00:43:24,310 So as ons wil 'n beste passing lyn voeg hierdie plot hier, wat is 'n bietjie kaal 785 00:43:24,310 --> 00:43:29,290 bones-- laat my maak dit 'n bietjie mooier. 786 00:43:29,290 --> 00:43:38,075 Main gelyk versus gewig. 787 00:43:38,075 --> 00:43:46,322 788 00:43:46,322 --> 00:43:49,740 Myl per gelling. 789 00:43:49,740 --> 00:43:53,570 Weereens, kan jy sien hoe nuttig opsionele argumente is hier met ook 790 00:43:53,570 --> 00:43:58,090 nie met dinge in 'n sit bepaalde orde met argumente sleutelbord 791 00:43:58,090 --> 00:44:01,600 wanneer jy erwe nie, omdat hierdie neem 'n baie van die argumente. 792 00:44:01,600 --> 00:44:07,490 >> XLab gelyk gewig, gewig, ton. 793 00:44:07,490 --> 00:44:10,091 794 00:44:10,091 --> 00:44:10,590 Alles reg. 795 00:44:10,590 --> 00:44:17,340 796 00:44:17,340 --> 00:44:21,480 OK, ja, hierdie toestel is 'n bietjie lastig. 797 00:44:21,480 --> 00:44:30,160 Maar jy kan soort van daar te sien, daar is 'n grafiek titel op die kant. 798 00:44:30,160 --> 00:44:35,260 Hier there's-- op die onderste hier is daar as etikette. 799 00:44:35,260 --> 00:44:37,700 Ek kan nie onthou onvoorbereid wat die opdragte ars-- 800 00:44:37,700 --> 00:44:41,000 wat die funksies is om te verhoog die grootte van die etikette en titels, 801 00:44:41,000 --> 00:44:43,110 maar hulle is daar. 802 00:44:43,110 --> 00:44:46,625 >> En so as ons wil voeg die beste passing lyn, 803 00:44:46,625 --> 00:44:49,250 ons kon iets te doen like-- ek het die sintaksis hier geskryf het. 804 00:44:49,250 --> 00:44:52,280 805 00:44:52,280 --> 00:45:11,130 So onthou ons voeg net model was mpg, gewig, mtcars. 806 00:45:11,130 --> 00:45:16,470 En so as ek wou die beste passing te voeg lyn, ek kan 'n, b line model te doen. 807 00:45:16,470 --> 00:45:18,556 En boom, ons het 'n beste passing lyn. 808 00:45:18,556 --> 00:45:19,970 Dit is soort van moeilik om weer te sien. 809 00:45:19,970 --> 00:45:22,178 Ek is redelik jammer oor die tegnologiese probleme. 810 00:45:22,178 --> 00:45:25,230 Maar dit loop basies links bo na regs onder. 811 00:45:25,230 --> 00:45:27,550 >> En as die skaal was groter, kan jy sien 812 00:45:27,550 --> 00:45:31,260 dat die afsnit is wat jy kan vind uit die opsommingstatistiek 813 00:45:31,260 --> 00:45:34,790 as jy tik opsomming model. 814 00:45:34,790 --> 00:45:40,130 OK, so ek hoop almal kry iets van 'n gevoel van wat 815 00:45:40,130 --> 00:45:42,030 R is, wat dit is goed vir. 816 00:45:42,030 --> 00:45:45,520 Jy kan baie mooier erwe as om hierdie op jou eie tyd, as jy wil. 817 00:45:45,520 --> 00:45:50,100 818 00:45:50,100 --> 00:45:53,950 >> So het die buitelandse funksie koppelvlak. 819 00:45:53,950 --> 00:46:00,330 Dit is iets wat nie tipies gedek in inleidende lesings 820 00:46:00,330 --> 00:46:03,560 of inleidende enigiets vir r. 821 00:46:03,560 --> 00:46:05,584 Dit is waarskynlik nie jy gaan dit nodig. 822 00:46:05,584 --> 00:46:08,000 Ek het egter gevind dat dit nuttig in my eie projekte in die verlede. 823 00:46:08,000 --> 00:46:10,984 En daar is nie 'n goeie Handleiding vir dit aanlyn. 824 00:46:10,984 --> 00:46:12,900 So ek is net gaan om te jaag julle almal deur hierdie 825 00:46:12,900 --> 00:46:16,606 en dan is jy vry om te gaan. 826 00:46:16,606 --> 00:46:18,480 En so het die buitelandse funksie koppelvlak is wat 827 00:46:18,480 --> 00:46:23,130 jy kan gebruik om uit te roep om te sien funksies met 'n R. Intern 828 00:46:23,130 --> 00:46:29,850 R is gebou op C. R se rekenkundige is net C se 64-bit floating point rekenkunde, 829 00:46:29,850 --> 00:46:32,852 wat is tik dubbel [onhoorbaar]. 830 00:46:32,852 --> 00:46:35,060 En jy kan wil doen dit vir 'n klomp van die redes. 831 00:46:35,060 --> 00:46:39,250 Vir een, is R geïnterpreteer, dit is nie saamgestel tot masjienkode. 832 00:46:39,250 --> 00:46:42,170 Sodat jy kan herskryf jou innerlike loops in C en dan kry 833 00:46:42,170 --> 00:46:45,920 die voordeel van die gebruik R. Soos dit is 'n bietjie meer gerieflik as C. 834 00:46:45,920 --> 00:46:48,899 Dit het 'n beter grafiese fasiliteite en noem maar op. 835 00:46:48,899 --> 00:46:51,690 En terwyl hulle nog in staat is om te kry topspoed uit die binneste loops, 836 00:46:51,690 --> 00:46:53,650 wat is waar jy dit regtig nodig het. 837 00:46:53,650 --> 00:46:56,330 >> Hergebruik bestaande C biblioteke, dit is ook belangrik. 838 00:46:56,330 --> 00:47:00,320 As jy 'n paar C-biblioteek vir die wil, Ek weet nie, Fourier transforms 839 00:47:00,320 --> 00:47:05,190 of 'n paar baie Archeaan statistieke prosedure wat gebruik word 840 00:47:05,190 --> 00:47:09,470 in 'n hoë-energie astrofisika of iets, ek weet nie. 841 00:47:09,470 --> 00:47:13,058 Hoë-energie astrofisika is nie eens 'n think, dink ek. 842 00:47:13,058 --> 00:47:16,480 Maar jy kan dit doen in plaas van om om 'n inheemse R hawe van hulle skryf. 843 00:47:16,480 --> 00:47:22,725 En op the-- en weer soos as jy kyk in die meeste van R se verstek biblioteke, 844 00:47:22,725 --> 00:47:25,600 op die internals, die internals is gaan na die buitelandse funksie 845 00:47:25,600 --> 00:47:26,724 koppelvlak baie omvattend. 846 00:47:26,724 --> 00:47:31,630 Hulle sal dinge soos Fourier het verander of rekenaar korrelasie 847 00:47:31,630 --> 00:47:34,890 koëffisiënte geskryf in C, en hulle sal net R omhulsels rondom hulle. 848 00:47:34,890 --> 00:47:38,230 Die koppelvlak is 'n bietjie moeilik. ek dink 849 00:47:38,230 --> 00:47:43,750 sy probleme is oordrewe in 'n Baie van die instruksies wat jy sal vind. 850 00:47:43,750 --> 00:47:46,200 Maar tog is dit 'n bietjie verwarrend. 851 00:47:46,200 --> 00:47:48,650 En ek het nie in staat was om vind 'n goeie handleiding vir dit, 852 00:47:48,650 --> 00:47:51,980 so dit is dit nou. 853 00:47:51,980 --> 00:47:55,360 Weereens, hierdie hele segment is meer vir latere verwysing. 854 00:47:55,360 --> 00:47:57,687 Moenie bekommerd wees oor die kopiëring alles neer op die oomblik. 855 00:47:57,687 --> 00:48:00,020 So die volgende instruksies is vir Unix-agtige stelsels, 856 00:48:00,020 --> 00:48:05,150 Linux, BSD, OS X. Ek weet nie hoe dit werk op Windows, 857 00:48:05,150 --> 00:48:08,280 maar asseblief net nie doen jou finale projek op Windows. 858 00:48:08,280 --> 00:48:10,790 859 00:48:10,790 --> 00:48:12,460 Jy wil regtig nie om. 860 00:48:12,460 --> 00:48:14,770 Unix is ​​baie beter stel up vir gemaklik programmering. 861 00:48:14,770 --> 00:48:19,320 862 00:48:19,320 --> 00:48:21,390 So, basies buitelandse funksie koppelvlak. 863 00:48:21,390 --> 00:48:24,420 As jy wil 'n C skryf funksie vir gebruik met R, 864 00:48:24,420 --> 00:48:27,250 dit het al die neem argumente wenke. 865 00:48:27,250 --> 00:48:30,666 >> So vir 'n enkele waardes, hierdie beteken dit wys na die waarde. 866 00:48:30,666 --> 00:48:33,040 Vir skikkings, dit is 'n muis om die eerste element wat 867 00:48:33,040 --> 00:48:36,750 is wat verskeidenheid name eintlik beteken. 868 00:48:36,750 --> 00:48:40,140 Weereens, dit is iets wat jy moet hê mooi heeltemal af na p stel vyf. 869 00:48:40,140 --> 00:48:43,334 Verskeidenheid name is net wenke om die eerste element, 870 00:48:43,334 --> 00:48:44,750 Die tipe swaai-punt is dubbel. 871 00:48:44,750 --> 00:48:47,310 En jou funksie het nietig terugkeer. 872 00:48:47,310 --> 00:48:50,810 Die enigste manier waarop dit kan eintlik vertel wat gebeur het R 873 00:48:50,810 --> 00:48:54,410 is deur die wysiging van die geheue wat R het om dit deur middel van die buitelandse funksie 874 00:48:54,410 --> 00:48:54,910 koppelvlak. 875 00:48:54,910 --> 00:48:58,180 876 00:48:58,180 --> 00:49:00,127 >> So ek het hierdie geskryf byvoorbeeld hier, dit is 877 00:49:00,127 --> 00:49:02,460 'n funksie wat gebruik bere dot produk van twee vektore. 878 00:49:02,460 --> 00:49:05,060 Dit neem twee argumente, vek1, vek2, wat die vektore hulself, 879 00:49:05,060 --> 00:49:06,934 en dan N, wat 'n lengte, want weer, 880 00:49:06,934 --> 00:49:12,630 R het 'n ingeboude in [onhoorbaar] om uit te vind die lengte van vektore, maar C nie. 881 00:49:12,630 --> 00:49:16,182 In C, vektore is 'n arbitrêre afgebaken stuk van die geheue. 882 00:49:16,182 --> 00:49:17,890 So die manier wat jy kan bereken dot produkte 883 00:49:17,890 --> 00:49:23,470 is net hierdie uiteengesit parameter nul en dan Itereer deur 884 00:49:23,470 --> 00:49:28,760 van 1 tot ster N, want N is 'n verwysing na die lengte, 885 00:49:28,760 --> 00:49:32,929 net iets byvoeg by dit uit parameter. 886 00:49:32,929 --> 00:49:34,970 En dit kan 'n goeie praktyk wees as jy gaan om dit te doen 887 00:49:34,970 --> 00:49:37,270 hierdie twee afsonderlike C funksies te skryf. 888 00:49:37,270 --> 00:49:41,970 Een van hulle has-- een van hulle net neem die argumente en die tipes 889 00:49:41,970 --> 00:49:43,970 dat hulle gewoonlik sou wees in C. 890 00:49:43,970 --> 00:49:47,780 >> So Dit neem 'n verskeidenheid argumente wenke. 891 00:49:47,780 --> 00:49:57,090 Maar argumente enkel-waarde soos n, dit neem net soos waardes kopie, 892 00:49:57,090 --> 00:49:57,917 sonder wenke. 893 00:49:57,917 --> 00:49:59,750 En dan is dit nie [Onhoorbaar] uit wyser. 894 00:49:59,750 --> 00:50:01,290 En dan kan jy 'n ander, basies, 895 00:50:01,290 --> 00:50:03,623 wrapper funksie wat basies hanteer die vereistes 896 00:50:03,623 --> 00:50:07,740 van die buitelandse funksie koppelvlak vir jou. 897 00:50:07,740 --> 00:50:11,840 >> Die manier waarop jy noem dit in R is, sodra jy het jou funksie geskryf in C, 898 00:50:11,840 --> 00:50:17,770 jy R cmd shlib, R tik opdrag gedeelde biblioteek, 899 00:50:17,770 --> 00:50:20,110 cat dot c, of wat ook al jou lêer naam is, 900 00:50:20,110 --> 00:50:23,020 en die OS dop nie in die R terminale. 901 00:50:23,020 --> 00:50:25,200 En dit sal 'n te skep biblioteek genoem cat dot so. 902 00:50:25,200 --> 00:50:28,180 En dan kan jy dit in laai ons script of interaktief 903 00:50:28,180 --> 00:50:32,310 met opdrag dyn dot las. 904 00:50:32,310 --> 00:50:35,720 Dan is daar 'n funksie in R genoem dot c. 905 00:50:35,720 --> 00:50:39,310 >> Dit neem argumente wat eers die naam van die funksie in C 906 00:50:39,310 --> 00:50:40,970 wat jy wil om te bel. 907 00:50:40,970 --> 00:50:43,920 En dan sal al die parameters om daardie funksie, 908 00:50:43,920 --> 00:50:45,420 hulle het om te wees in die korrekte volgorde. 909 00:50:45,420 --> 00:50:48,580 Jy het om hierdie tipe gebruik dwang funksies as heelgetal, as 910 00:50:48,580 --> 00:50:52,050 dubbel, soos karakter, en as logies. 911 00:50:52,050 --> 00:50:54,710 En dan wanneer dit terugkeer die lys, wat weer is net 912 00:50:54,710 --> 00:50:57,550 'n verskeidenheid van die verband parameter name en die waardes 913 00:50:57,550 --> 00:51:00,950 na die funksie het hardloop. 914 00:51:00,950 --> 00:51:08,520 >> So in hierdie geval, want dot prod het argumente vek1, vek2 en int n, n het. 915 00:51:08,520 --> 00:51:11,980 Dot c ons het dot prod, die naam van die funksie 916 00:51:11,980 --> 00:51:16,250 Ons noem, vek1, vek2, tipe dwing. 917 00:51:16,250 --> 00:51:20,060 Die lengte van die een of vektor, Ek het gekies om net vek1 arbitrêr. 918 00:51:20,060 --> 00:51:25,479 Dit sou meer robuuste om s te sê heelgetal min lengte van vek1, lengte vek2. 919 00:51:25,479 --> 00:51:27,520 Dan net as dubbel nul, want ons het nie regtig 920 00:51:27,520 --> 00:51:29,644 omgee wat gaan in die uit parameter, want ons is 921 00:51:29,644 --> 00:51:32,270 opstel dit in elk geval nul. 922 00:51:32,270 --> 00:51:37,560 >> En dan die resultate gaan 'n wees groot verskeidenheid van basies verband hou 923 00:51:37,560 --> 00:51:42,090 vek1 is wat ook al, vek2 is wat ook al. 924 00:51:42,090 --> 00:51:44,330 Maar ons is geïnteresseerd in uit, sodat ons kan kry dat uit. 925 00:51:44,330 --> 00:51:47,780 Dit is weer 'n baie speelgoed byvoorbeeld van 'n buitelandse funksie koppelvlak. 926 00:51:47,780 --> 00:51:54,160 Maar as jy moet dot bereken produkte van massiewe vektore in lissies 927 00:51:54,160 --> 00:51:56,960 of indien jy hoef te doen iets anders in 'n lus, 928 00:51:56,960 --> 00:51:59,850 en jy nie wil hê om te vertrou op R, wat wel 'n bietjie van oorhoofse 929 00:51:59,850 --> 00:52:02,830 gebou in dit, kan dit nuttig wees. 930 00:52:02,830 --> 00:52:05,870 >> Weereens, dit is gewoonlik nie 'n inleidende onderwerp R. 931 00:52:05,870 --> 00:52:08,571 Dit is nie baie goed gedokumenteer. 932 00:52:08,571 --> 00:52:11,070 Ek is net insluitend dit omdat Ek het gevind dat dit nuttig in die verlede. 933 00:52:11,070 --> 00:52:13,654 So, slegte praktyke. 934 00:52:13,654 --> 00:52:15,820 Ek het genoem dat daar 'n lus in die funksie. 935 00:52:15,820 --> 00:52:21,150 Algemeen moet jy nie, in die taal, nie gebruik nie. 936 00:52:21,150 --> 00:52:26,100 Op grond van hoe R implemente iterasie intern, kan dit stadig wees. 937 00:52:26,100 --> 00:52:28,540 Hulle het net ook kyk lelik. 938 00:52:28,540 --> 00:52:32,410 >> R hanteer vektore baie mooi, so dikwels het jy nie nodig om dit te gebruik. 939 00:52:32,410 --> 00:52:35,050 940 00:52:35,050 --> 00:52:38,900 Dan kan jy gewoonlik vervang dikwels 'n vektor 941 00:52:38,900 --> 00:52:42,490 met hierdie funksies genoem hoë Om funksies, Kaart, Verminder, 942 00:52:42,490 --> 00:52:44,404 Vind of filter. 943 00:52:44,404 --> 00:52:46,320 Ek sal net 'n paar te gee voorbeelde van wat hierdie dinge te doen. 944 00:52:46,320 --> 00:52:49,957 Kaart is 'n hoër orde funksie omdat dit neem 'n funksie as 'n argument. 945 00:52:49,957 --> 00:52:52,290 Sodat jy dit 'n funksie kan gee, jy kan dit gee 'n skikking, 946 00:52:52,290 --> 00:52:54,640 en dit sal die funksie van toepassing elke element van die skikking 947 00:52:54,640 --> 00:52:55,681 en die standaard van die nuwe skikking. 948 00:52:55,681 --> 00:52:58,035 949 00:52:58,035 --> 00:53:00,160 Verminder, basies gee dit 'n skikking, dit gee jou 950 00:53:00,160 --> 00:53:02,930 'n funksie wat twee argumente neem. 951 00:53:02,930 --> 00:53:07,100 Dit sal die funksie eerste, die toepassing eerste argument met 'n paar voorgereg waarde. 952 00:53:07,100 --> 00:53:09,440 Dan wat die resultaat in die tweede. 953 00:53:09,440 --> 00:53:12,590 Dan wat die resultaat in die derde, dan wat die resultaat in die vierde. 954 00:53:12,590 --> 00:53:14,870 En dan terug wanneer dit tot die einde. 955 00:53:14,870 --> 00:53:17,620 So byvoorbeeld, as jy wil bereken die som van al die elemente 956 00:53:17,620 --> 00:53:23,240 in 'n skikking, as wat jy kan noem verminder met [onhoorbaar] verminder 'n toevoeging 957 00:53:23,240 --> 00:53:26,620 funksie, soos funk a, b, terugkeer 'n plus b. 958 00:53:26,620 --> 00:53:28,960 En dan begin 'n waarde van 0. 959 00:53:28,960 --> 00:53:32,950 >> En al hierdie, kan jy hulle vind in die R dokumentasie beskryf, 960 00:53:32,950 --> 00:53:35,720 in enige handboek oor funksionele programmering. 961 00:53:35,720 --> 00:53:38,330 Daar is ook hierdie klas van funksies genoem toepassing funksies, 962 00:53:38,330 --> 00:53:42,807 wat ek don't-- hulle is 'n bietjie moeilik om te verduidelik, 963 00:53:42,807 --> 00:53:45,640 maar as jy kyk in [onhoorbaar] bespreek dat ek aangehaal aan die begin, 964 00:53:45,640 --> 00:53:48,615 Hy het hulle verduidelik baie goed in sy blindederm op R programmering. 965 00:53:48,615 --> 00:53:51,599 966 00:53:51,599 --> 00:53:53,390 Meer oor praktyke, aanbring om vektore. 967 00:53:53,390 --> 00:53:57,570 968 00:53:57,570 --> 00:53:58,070 Ja? 969 00:53:58,070 --> 00:54:01,651 970 00:54:01,651 --> 00:54:02,900 Ek dink ek moet regstel nie. 971 00:54:02,900 --> 00:54:07,450 In daardie eerste lyn, vektore pyl, dat pyl moet nie daar wees. 972 00:54:07,450 --> 00:54:10,920 Jy kan toewys aan 'n vektor, weer deur neem sy lengte plus 1 973 00:54:10,920 --> 00:54:13,220 en die toeken bietjie waarde aan daardie. 974 00:54:13,220 --> 00:54:18,970 Dit sal die vektor brei, of jy kan doen PAC gelykes c, PAC newvalue. 975 00:54:18,970 --> 00:54:21,540 Weereens, as jy C gebruik met een argument as 'n vektor, 976 00:54:21,540 --> 00:54:23,300 die gevolglike hiërargie kry platgedruk. 977 00:54:23,300 --> 00:54:27,160 So jy sal net 'n vektor dit is uitgebrei deur 1. 978 00:54:27,160 --> 00:54:30,410 Dit te doen nie. 979 00:54:30,410 --> 00:54:33,330 >> Die rede waarom jy moet dit nie doen nie is dit. 980 00:54:33,330 --> 00:54:37,430 Wanneer jy 'n vektor te ken, is dit gee dit 'n sekere deel van die geheue. 981 00:54:37,430 --> 00:54:40,680 As jy verhoog dat vektor grootte, dit het om die vektor hertoeken 982 00:54:40,680 --> 00:54:43,820 iewers anders. 983 00:54:43,820 --> 00:54:46,980 En so hertoewysing is baie duur. 984 00:54:46,980 --> 00:54:50,530 Ek sal nie in die besonderhede van hoe gaan geheue toewysers geïmplementeer 985 00:54:50,530 --> 00:54:57,280 op die bedryfstelsel vlak, maar dit neem 'n baie van die tyd 986 00:54:57,280 --> 00:54:58,962 om 'n nuwe stuk van die geheue te vind. 987 00:54:58,962 --> 00:55:00,920 En ook, as jy re-toekenning baie, baie 988 00:55:00,920 --> 00:55:03,500 van progressief groter stukke, beland jy 989 00:55:03,500 --> 00:55:06,420 met iets genoem geheue fragmentasie, 990 00:55:06,420 --> 00:55:09,390 waar die beskikbare geheue is verdeel in baie klein blokkies 991 00:55:09,390 --> 00:55:11,500 in die geheue toewysers oogpunt. 992 00:55:11,500 --> 00:55:15,340 En dit moeiliker en moeiliker raak geheue vir ander dinge te vind. 993 00:55:15,340 --> 00:55:19,455 So in plaas, as jy nodig het om dit te doen indien wat jy nodig het om 'n vektor groei van die een einde 994 00:55:19,455 --> 00:55:24,240 na die volgende, in plaas van die aanbring om dit voortdurend, moet jy vooraf ken nie. 995 00:55:24,240 --> 00:55:29,310 PAC pyl, vektor lengte gelyk 1000, of wat ook al. 996 00:55:29,310 --> 00:55:33,200 >> En dan kan jy net toewys die vektor se waardes een 997 00:55:33,200 --> 00:55:36,000 'n tyd nadat jy dit een keer het toegeken. 998 00:55:36,000 --> 00:55:40,140 Ek het in hierdie weer, my somer werk toe ek skryf NRA ewenaar 999 00:55:40,140 --> 00:55:42,120 vergelyking oplosser. 1000 00:55:42,120 --> 00:55:43,180 Nie simbolies numeriese. 1001 00:55:43,180 --> 00:55:49,290 Die idee is dat wanneer jy een waarde vir jou oplossing, 1002 00:55:49,290 --> 00:55:51,240 julle wat gebruik om die volgende een te bereken. 1003 00:55:51,240 --> 00:55:53,700 So my natuurlike naïef neiging was om te sê OK, 1004 00:55:53,700 --> 00:55:56,930 so ek sal begin met 'n vektor dit is 'n aansienlike waarde. 1005 00:55:56,930 --> 00:56:01,260 Bereken vanaf die volgende waarde wat gaan op my oplossing vektor, 1006 00:56:01,260 --> 00:56:02,630 en voeg dit. 1007 00:56:02,630 --> 00:56:05,290 >> Iets anders te skep, voeg dit. 1008 00:56:05,290 --> 00:56:08,120 Dit het baie, baie stadig. 1009 00:56:08,120 --> 00:56:11,540 En sodra ek dit besef en ek het my stelsel 1010 00:56:11,540 --> 00:56:16,020 van die aanbring van hierdie vektor soos 10,000 tot 100,000 tye, 1011 00:56:16,020 --> 00:56:18,910 net pre-toekenning 'n vektor en net loop met dit. 1012 00:56:18,910 --> 00:56:22,100 Ek het meer as 1000 vou spoed. 1013 00:56:22,100 --> 00:56:26,280 So, dit is 'n baie algemene lokval vir R programmering. 1014 00:56:26,280 --> 00:56:31,560 As jy nodig het om op te bou 'n vektor stuk vir stuk, pre-ken nie. 1015 00:56:31,560 --> 00:56:35,360 1016 00:56:35,360 --> 00:56:40,240 >> Nog 'n algemene trip up-- dit is my laaste skyfie, nie worry-- is fout hantering. 1017 00:56:40,240 --> 00:56:42,890 R, om eerlik te wees, is dit nie dit regtig baie goed. 1018 00:56:42,890 --> 00:56:45,010 Daar is 'n baie probleme wat kan opduik. 1019 00:56:45,010 --> 00:56:48,360 Byvoorbeeld, as jy 'n verskeidenheid te kry of 'n vektor van 'n funksie 1020 00:56:48,360 --> 00:56:52,377 dat jy verwag 'n enkele was waarde om te kom uit, of andersom, 1021 00:56:52,377 --> 00:56:55,460 en julle wat slaag in 'n funksie wat Jy het verwag 'n enkele waarde, 1022 00:56:55,460 --> 00:56:57,270 wat 'n probleem kan wees. 1023 00:56:57,270 --> 00:57:01,440 >> Sekere funksies terugkeer null as doen, sê, 1024 00:57:01,440 --> 00:57:05,560 lees van 'n bestaande sleutel in 'n lys. 1025 00:57:05,560 --> 00:57:08,527 Maar null is nie soos C waar as jy probeer om te lees 1026 00:57:08,527 --> 00:57:11,360 uit 'n ou pointer, [onhoorbaar] om wyser null, is dit net seg foute 1027 00:57:11,360 --> 00:57:14,109 en as jy in jou debugger dit vertel jou presies waar jy is. 1028 00:57:14,109 --> 00:57:17,080 1029 00:57:17,080 --> 00:57:20,772 In plaas daarvan, sal nul funksies do-- sal onvoorspelbare dinge te doen 1030 00:57:20,772 --> 00:57:21,730 as hulle oorhandig null. 1031 00:57:21,730 --> 00:57:24,575 Soos as jy oorhandig maksimum nul, dit sal jy negatiewe oneindigheid gee. 1032 00:57:24,575 --> 00:57:27,230 1033 00:57:27,230 --> 00:57:28,190 En so, ja. 1034 00:57:28,190 --> 00:57:30,880 1035 00:57:30,880 --> 00:57:32,630 En so dit gebeur my een keer toe ek 1036 00:57:32,630 --> 00:57:34,771 verander 'n klomp van velde in my lys struktuur 1037 00:57:34,771 --> 00:57:37,520 keer sonder die verandering van hulle elders toe ek lees van hulle. 1038 00:57:37,520 --> 00:57:40,670 En dan het ek allerhande random oneindigheid resultate opduik 1039 00:57:40,670 --> 00:57:43,080 en ek het geen idee waar hulle vandaan kom. 1040 00:57:43,080 --> 00:57:45,310 En ongelukkig is daar geen werklike R streng af 1041 00:57:45,310 --> 00:57:48,940 waar jy kan sê as iets lyk soos dit 'n fout kan wees, 1042 00:57:48,940 --> 00:57:51,960 net daar stop sodat ek kan wees gedissiplineerde en los dit. 1043 00:57:51,960 --> 00:57:55,282 1044 00:57:55,282 --> 00:57:57,240 Maar daar is iets genoem stop indien nie. 1045 00:57:57,240 --> 00:58:00,480 Dit is gelykstaande aan C se geld, as jy het gepraat oor dat. 1046 00:58:00,480 --> 00:58:02,690 Ek dink nie C beweer is 'n lesing onderwerp 1047 00:58:02,690 --> 00:58:06,370 maar jou artikel leier daaroor gegaan het. 1048 00:58:06,370 --> 00:58:10,393 En stop as dit nie neem basies enige gesegde, so 'n verklaring wat 1049 00:58:10,393 --> 00:58:11,824 kan waar of vals is. 1050 00:58:11,824 --> 00:58:13,490 En as dit vals is, dit tot stilstand kom sy program. 1051 00:58:13,490 --> 00:58:18,260 Dit vertel jou presies wat jy in lyn was op en watter toestand misluk. 1052 00:58:18,260 --> 00:58:21,910 >> En dit baie nuttig, byvoorbeeld, gesonde verstand nagaan, funksie insette. 1053 00:58:21,910 --> 00:58:25,110 So as jy 'n funksie en jy verwag, sê, 1054 00:58:25,110 --> 00:58:29,640 as jy my 'n datum moet gee, ek wil die datums net 'n vektor van lengte 1 1055 00:58:29,640 --> 00:58:31,735 en iewers tussen 1 en 31. 1056 00:58:31,735 --> 00:58:34,420 1057 00:58:34,420 --> 00:58:36,170 En indien nie, ek weet iets is verkeerd geloop het. 1058 00:58:36,170 --> 00:58:40,280 En ek kies om daar te stop voordat dit het ewekansige klop aan effekte met 'n kode 1059 00:58:40,280 --> 00:58:44,190 dat dit moeiliker om deur te spoor. 1060 00:58:44,190 --> 00:58:47,170 So dit is 'n moontlike gebruik vir stop indien nie. 1061 00:58:47,170 --> 00:58:48,660 >> Anyhow, OK. 1062 00:58:48,660 --> 00:58:49,690 So dit is die einde. 1063 00:58:49,690 --> 00:58:51,290 Baie dankie vir die komende. 1064 00:58:51,290 --> 00:58:53,710 Ek is 'n amateur rang op hierdie. 1065 00:58:53,710 --> 00:58:57,270 So jammer as jy verveeld is of verward of wat jy het. 1066 00:58:57,270 --> 00:59:01,670 Ek is bly om vrae per e-pos te neem op connorharris@college.harvard.edu. 1067 00:59:01,670 --> 00:59:07,230 Dit geld ook vir almal kyk na hierdie lewe of later. 1068 00:59:07,230 --> 00:59:10,190 Ook, maar ek is nie 'n TF, Ek is ook baie 1069 00:59:10,190 --> 00:59:13,900 bereid is om te dien as 'n nie-amptelike adviseur vir enigiemand wat 1070 00:59:13,900 --> 00:59:15,460 die gebruik van R in 'n finale projek. 1071 00:59:15,460 --> 00:59:19,900 >> As jy wil om dit te, dan net praat met jou TF 1072 00:59:19,900 --> 00:59:23,750 en skryf dan vir my 'n e-pos sodat Ek weet wat jy werk op 1073 00:59:23,750 --> 00:59:26,680 en so kan ek 'n vergadering keer met jou as jy wil. 1074 00:59:26,680 --> 00:59:27,990 So weer, baie dankie. 1075 00:59:27,990 --> 00:59:28,960 Ek hoop jy geniet dit. 1076 00:59:28,960 --> 00:59:29,450 >> GEHOOR: [onhoorbaar]. 1077 00:59:29,450 --> 00:59:30,617 >> CONNER Harris: Natuurlik. 1078 00:59:30,617 --> 00:59:34,910 >> GEHOOR: Watter soort van 'n projek sou 'n student CS gebruik R vir? 1079 00:59:34,910 --> 00:59:37,427 1080 00:59:37,427 --> 00:59:40,510 CONNER Harris: So as jy dit nie doen nie iets wat suiwer in data-ontginning, 1081 00:59:40,510 --> 00:59:43,790 byvoorbeeld, en daar is baie van die dinge 1082 00:59:43,790 --> 00:59:46,692 wat jy kan doen met dit met die data mynbou en masjien leer. 1083 00:59:46,692 --> 00:59:48,900 Jy mag dalk wil om R te gebruik vir 'n komponent van iets. 1084 00:59:48,900 --> 00:59:52,022 Ek laat optrek, oorspronklik, die voorbeeld van as jy skryf 'n webwerf 1085 00:59:52,022 --> 00:59:54,730 en jy wil outomatiese hardloop statistiese ontleding van jou bediener 1086 00:59:54,730 --> 00:59:57,990 logs op 'n sekere tyd elke dag, wat dalk iets wat wees 1087 00:59:57,990 --> 01:00:01,260 baie maklik om te doen in net 'n kort R script wat jy kan skeduleer 1088 01:00:01,260 --> 01:00:04,200 elke nag loop, byvoorbeeld. 1089 01:00:04,200 --> 01:00:06,550 >> En ek is seker, as daar is enige rede wat jy wil 1090 01:00:06,550 --> 01:00:11,520 wil statistieke of grafiese vermoëns en hierdie run outomaties plaas 1091 01:00:11,520 --> 01:00:13,790 van om te kommunikeer met dinge in Excel, 1092 01:00:13,790 --> 01:00:16,750 byvoorbeeld, dit is iets wat wil jy dalk R te gebruik vir. 1093 01:00:16,750 --> 01:00:21,190 So enige vrae meer voor ek vertrek? 1094 01:00:21,190 --> 01:00:21,690 Geen? 1095 01:00:21,690 --> 01:00:24,960 Alle reg, goed, weer, dankie baie dankie vir die komende. 1096 01:00:24,960 --> 01:00:29,417