1 00:00:00,000 --> 00:00:05,691 2 00:00:05,691 --> 00:00:07,690 CONNOR HARRIS: Encara em pensar en algun vídeo emocionant 3 00:00:07,690 --> 00:00:12,570 produït per una consultoria professional que utilitza R molt en el seu treball. 4 00:00:12,570 --> 00:00:16,329 >> NARRADOR: Què hi ha darrere de les estadístiques, les anàlisis i les visualitzacions 5 00:00:16,329 --> 00:00:19,770 científics de dades més brillants d'avui i els líders empresarials es basen en 6 00:00:19,770 --> 00:00:22,012 per prendre decisions de gran abast? 7 00:00:22,012 --> 00:00:23,540 No sempre es pot veure. 8 00:00:23,540 --> 00:00:24,790 Però hi és. 9 00:00:24,790 --> 00:00:29,460 Es diu R, de codi obert r-- la llenguatge de programació estadística 10 00:00:29,460 --> 00:00:32,630 que els experts en dades del món sobre l'ús de tot el 11 00:00:32,630 --> 00:00:35,350 de cartografia àmplia socials i tendències de màrqueting en línia 12 00:00:35,350 --> 00:00:39,210 al desenvolupament dels sectors financer i el clima models que ajuden a impulsar les nostres economies 13 00:00:39,210 --> 00:00:40,780 i comunitats. 14 00:00:40,780 --> 00:00:44,910 >> Però, què és exactament R i on es va iniciar R? 15 00:00:44,910 --> 00:00:48,620 Bé originalment, R va començar aquí amb dos professors 16 00:00:48,620 --> 00:00:51,950 que volia una millor estadística plataforma per als seus estudiants. 17 00:00:51,950 --> 00:00:56,030 Així que van crear un sol modelades després que el llenguatge estadístic S. 18 00:00:56,030 --> 00:01:00,480 Ells, juntament amb molts altres, mantenen treballant i fent servir R, 19 00:01:00,480 --> 00:01:05,489 la creació d'eines per a la I i la recerca noves aplicacions per a R cada dia. 20 00:01:05,489 --> 00:01:07,750 >> Gràcies a això és esforç de la comunitat en tot el món, 21 00:01:07,750 --> 00:01:11,850 R va seguir creixent amb milers de les biblioteques creades per l'usuari construïdes 22 00:01:11,850 --> 00:01:15,500 per millorar la funcionalitat de R i validació de la qualitat de multitud de fonts 23 00:01:15,500 --> 00:01:19,740 i el suport de les més reconegudes líders de la indústria en tots els camps que 24 00:01:19,740 --> 00:01:25,040 utilitza R. Què és gran, perquè R és el millor en el que fa. 25 00:01:25,040 --> 00:01:28,540 Florida experts de forma ràpida i fàcil d'interpretar, interactuar amb, 26 00:01:28,540 --> 00:01:33,790 i visualitzar les dades mostrant la seva rapidesa creixent comunitat d'usuaris a tot el món I 27 00:01:33,790 --> 00:01:36,380 i veure com codi obert R continua donant forma 28 00:01:36,380 --> 00:01:39,340 el futur de l'estadística l'anàlisi i la ciència de dades. 29 00:01:39,340 --> 00:01:44,660 30 00:01:44,660 --> 00:01:47,710 >> CONNOR HARRIS: Molt bé, molt bé. 31 00:01:47,710 --> 00:01:50,360 Així que la meva pròpia presentació serà una mica més sobri. 32 00:01:50,360 --> 00:01:54,380 No va a implicar molt emocionant música de fons. 33 00:01:54,380 --> 00:01:59,160 Però com es va veure en el vídeo, R és una espècie d'un llenguatge de programació de propòsit general. 34 00:01:59,160 --> 00:02:03,720 Però va ser creat majorment per al treball estadístic. 35 00:02:03,720 --> 00:02:07,980 >> Així que ha estat dissenyat per a les estadístiques, per a l'anàlisi de dades, per a la mineria de dades. 36 00:02:07,980 --> 00:02:12,420 I així es pot veure això en una gran quantitat de les opcions de disseny que els fabricants de R 37 00:02:12,420 --> 00:02:13,320 feta. 38 00:02:13,320 --> 00:02:15,472 Està dissenyat per a gran part, persones que no són 39 00:02:15,472 --> 00:02:17,930 experts en programació, que s'acaba de recollir la programació 40 00:02:17,930 --> 00:02:23,460 en el costat perquè puguin fer la seva feina en ciències socials o en les estadístiques 41 00:02:23,460 --> 00:02:25,440 o el que sigui. 42 00:02:25,440 --> 00:02:27,850 >> Té un munt de molt diferències importants de C. 43 00:02:27,850 --> 00:02:33,200 Però la sintaxi i els paradigmes que utilitza són bàsicament els mateixos. 44 00:02:33,200 --> 00:02:36,830 I vostè ha de sentir-se bastant com a casa la dreta del pal. 45 00:02:36,830 --> 00:02:38,520 És un llenguatge imperatiu. 46 00:02:38,520 --> 00:02:40,260 >> No et preocupis massa per això si vostè no sap el terme. 47 00:02:40,260 --> 00:02:42,676 Però hi ha una distinció entre imperatiu, declarativa, 48 00:02:42,676 --> 00:02:43,810 i funcional. 49 00:02:43,810 --> 00:02:47,600 Imperatiu només significa que facis declaracions que són bàsicament els ordres. 50 00:02:47,600 --> 00:02:52,340 I a continuació, l'intèrpret o el equip els segueix un per un. 51 00:02:52,340 --> 00:02:56,630 Es tipus febles, hi ha no hi ha declaracions de tipus en R. 52 00:02:56,630 --> 00:02:59,130 >> I després les línies entre els diferents tipus 53 00:02:59,130 --> 00:03:03,920 són una mica més fluix que estan en C, per exemple. 54 00:03:03,920 --> 00:03:06,450 I com ja he dit, hi ha molt àmplies instal·lacions 55 00:03:06,450 --> 00:03:15,610 per a la seva representació gràfica, per estadística anàlisi, per a la mineria de dades. 56 00:03:15,610 --> 00:03:19,540 Tots dos estan integrats en el llenguatge i, com deia el vídeo, 57 00:03:19,540 --> 00:03:23,680 milers de biblioteques de tercers que vostè pot descarregar i utilitzar de forma gratuïta 58 00:03:23,680 --> 00:03:25,340 amb condicions de llicència molt solts. 59 00:03:25,340 --> 00:03:28,800 60 00:03:28,800 --> 00:03:31,500 >> Així que, en general, m'agradaria recomanar que ens fixem en aquests dos llibres 61 00:03:31,500 --> 00:03:34,610 si vostè va a treballar en R. Un d'ells és funcionari principiant de R 62 00:03:34,610 --> 00:03:35,110 guiï. 63 00:03:35,110 --> 00:03:38,660 Ha mantingut pel desenvolupadors principals de R. 64 00:03:38,660 --> 00:03:42,400 Pot descarregar-lo de nou, lliure de cobrar i legalment en aquest vincle existeix. 65 00:03:42,400 --> 00:03:45,430 66 00:03:45,430 --> 00:03:49,869 Totes aquestes diapositives es van a anar dalt a l'Internet, a la pàgina web CS50 67 00:03:49,869 --> 00:03:50,660 després d'això es fa. 68 00:03:50,660 --> 00:03:53,690 Així que no hi ha necessitat de copiar coses baix frenèticament. 69 00:03:53,690 --> 00:03:56,800 >> L'altre és un llibre de text de Cosma Shalizi, 70 00:03:56,800 --> 00:04:00,100 qui és un professor d'estadística a Carnegie Mellon, anomenat Advanced Data 71 00:04:00,100 --> 00:04:02,160 Anàlisi d'una Point of View Primària. 72 00:04:02,160 --> 00:04:04,010 Això no és principalment un llibre de R. 73 00:04:04,010 --> 00:04:07,130 És un llibre d'estadística i és un llibre d'anàlisi de dades. 74 00:04:07,130 --> 00:04:11,990 Però és molt accessible a les persones que tenir un mínim de coneixements d'estadístiques. 75 00:04:11,990 --> 00:04:13,750 >> Mai he pres un curs formal. 76 00:04:13,750 --> 00:04:17,269 Només sé parts i peces de diverses disciplines afins 77 00:04:17,269 --> 00:04:18,579 que he pres cursos a. 78 00:04:18,579 --> 00:04:21,839 I jo era capaç d'entendre perfectament bé. 79 00:04:21,839 --> 00:04:25,630 >> Es donen totes les figures en R. Es fan en R 80 00:04:25,630 --> 00:04:30,280 i també tenen llistats de codi sota cada figura que et diuen 81 00:04:30,280 --> 00:04:33,270 com fer que cada figura amb el codi R. 82 00:04:33,270 --> 00:04:37,400 I això és molt útil si vostè està tractant d'emular 83 00:04:37,400 --> 00:04:38,650 una figura que es veu en un llibre. 84 00:04:38,650 --> 00:04:47,840 >> I de nou descàrrega gratuïta stat.cmu.edu/cshalizi/ Ho sentim, 85 00:04:47,840 --> 00:04:50,230 que ha de ser slash cshalizi titlla. 86 00:04:50,230 --> 00:04:53,150 M'asseguraré que corregir això quan les diapositives oficials pugen. 87 00:04:53,150 --> 00:04:57,000 / ADAfaEPoV que és només el acrònim del títol del llibre. 88 00:04:57,000 --> 00:04:59,850 89 00:04:59,850 --> 00:05:02,500 >> Així que en general caveats-- R té un munt de possibilitats. 90 00:05:02,500 --> 00:05:05,331 Jo només seré capaç de cobrir la superfície d'un munt de coses. 91 00:05:05,331 --> 00:05:08,580 També la primera part del seminari serà una cosa així com un bolcat de dades. 92 00:05:08,580 --> 00:05:11,437 Estic bastant ho sento per això. 93 00:05:11,437 --> 00:05:13,770 Bàsicament, vaig a presentar a un munt de coses 94 00:05:13,770 --> 00:05:15,350 la dreta del pal, va el més ràpidament possible. 95 00:05:15,350 --> 00:05:17,058 I llavors arribem a la part divertida, la qual és 96 00:05:17,058 --> 00:05:20,570 la demo on et puc mostrar tot que hem parlat a la pantalla. 97 00:05:20,570 --> 00:05:23,321 I es pot jugar pel seu compte. 98 00:05:23,321 --> 00:05:26,070 Així que aquí hi haurà una gran quantitat de material tècnic llançat fins aquí. 99 00:05:26,070 --> 00:05:28,060 No et preocupis per la còpia de tot el que cap avall. 100 00:05:28,060 --> 00:05:31,740 A causa A, pot obtenir tota la coses en el lloc web CS50 després. 101 00:05:31,740 --> 00:05:37,780 And B, no és realment tan important memoritzar això des de les diapositives. 102 00:05:37,780 --> 00:05:40,462 És més important que vostè aconsegueix alguna facilitat intuïtiva amb ella 103 00:05:40,462 --> 00:05:44,220 i que ve de simplement jugant. 104 00:05:44,220 --> 00:05:45,720 >> Així que per què utilitzar R? 105 00:05:45,720 --> 00:05:49,440 Bàsicament, si vostè té un projecte que implica la mineria grans conjunts de dades, les dades 106 00:05:49,440 --> 00:05:52,664 visualització, ha d'utilitzar R. Si vostè és 107 00:05:52,664 --> 00:05:55,830 fent anàlisis estadístiques complicat, això seria difícil en Excel, 108 00:05:55,830 --> 00:05:58,010 per exemple, seria També es good-- també 109 00:05:58,010 --> 00:06:00,506 si vostè està fent estadística anàlisi que està automatitzat. 110 00:06:00,506 --> 00:06:02,130 Diguem que vostè està mantenint un lloc web. 111 00:06:02,130 --> 00:06:06,320 I voleu llegir el registre del servidor tots els dies i compilar alguna llista, 112 00:06:06,320 --> 00:06:10,320 com els primers països que seus usuaris estan venint, 113 00:06:10,320 --> 00:06:15,100 algunes estadístiques resumides sobre la durada que gasten al seu lloc web o el que sigui. 114 00:06:15,100 --> 00:06:16,910 I voleu executar això cada dia. 115 00:06:16,910 --> 00:06:20,280 >> Ara bé, si vostè està fent això en Excel, vostè hauria d'anar al seu registre del servidor, 116 00:06:20,280 --> 00:06:23,490 importar que en un Full de càlcul de dades d'Excel, 117 00:06:23,490 --> 00:06:24,910 executar totes les anàlisis de forma manual. 118 00:06:24,910 --> 00:06:27,100 Amb R, només pot escriure un script. 119 00:06:27,100 --> 00:06:29,520 Programar-lo perquè s'executi cada dia del seu sistema operatiu. 120 00:06:29,520 --> 00:06:33,657 I llavors totes les nits a les 2:00 del matí, o cada vegada que es programa perquè s'executi, 121 00:06:33,657 --> 00:06:35,990 que es veurà a través del seu el tràfic d'Internet per a aquest dia. 122 00:06:35,990 --> 00:06:39,010 I després al dia següent, se li tenir aquesta brillant, nou informe 123 00:06:39,010 --> 00:06:41,710 o el que sigui amb tota la la informació que va sol·licitar. 124 00:06:41,710 --> 00:06:44,960 125 00:06:44,960 --> 00:06:50,217 >> Així que, bàsicament R és per a Cisco programació en comparació amb l'anàlisi de Cisco. 126 00:06:50,217 --> 00:06:51,050 Preliminar es fa. 127 00:06:51,050 --> 00:06:53,104 Anem a entrar en les coses reals. 128 00:06:53,104 --> 00:06:55,020 Així que hi ha tres reals tipus en l'idioma. 129 00:06:55,020 --> 00:06:56,120 Hi ha tipus numèric. 130 00:06:56,120 --> 00:07:01,250 Hi ha una mena de diferència entre sencers i punts flotants, 131 00:07:01,250 --> 00:07:02,769 però no realment. 132 00:07:02,769 --> 00:07:04,560 Hi ha un personatge escriure, que és cordes. 133 00:07:04,560 --> 00:07:07,100 I hi ha una lògica escriure, que és Booleans. 134 00:07:07,100 --> 00:07:11,080 >> I vostè pot convertir entre tipus l'ús d'aquestes funcions com numèric, 135 00:07:11,080 --> 00:07:15,220 com el caràcter, com lògic. 136 00:07:15,220 --> 00:07:17,510 Si crida, per exemple, com numèric en una cadena, 137 00:07:17,510 --> 00:07:20,030 que tractarà de llegir aquesta cadena com un nombre, de la mateixa manera 138 00:07:20,030 --> 00:07:25,897 que a2i i scanf fan, i C. Si es diu com numèric de vertader o fals 139 00:07:25,897 --> 00:07:26,980 que convertirà a 1 o 0. 140 00:07:26,980 --> 00:07:29,110 Si diu com el personatge en tot el que va a 141 00:07:29,110 --> 00:07:32,550 convertir això en una representació de cadena. 142 00:07:32,550 --> 00:07:34,990 >> I després hi ha els vectors i matrius. 143 00:07:34,990 --> 00:07:37,580 Així vectors són bàsicament 1 arrays dimensionals. 144 00:07:37,580 --> 00:07:40,600 Són el que anomenem matrius en C. Matrius, 2 matrius dimensionals. 145 00:07:40,600 --> 00:07:42,350 I llavors major dimensionals que puguis 146 00:07:42,350 --> 00:07:48,560 tenen 3, 4, 5 dimensions o el que sigui de valors numèrics, de cadenes, 147 00:07:48,560 --> 00:07:52,860 valors de lògiques. 148 00:07:52,860 --> 00:07:55,380 >> Vostè també té llistes que són una mena de matriu associativa. 149 00:07:55,380 --> 00:07:57,390 Vaig a entrar en això una mica. 150 00:07:57,390 --> 00:07:59,390 Així que una cosa important que els viatges de les persones en R 151 00:07:59,390 --> 00:08:01,470 és que no hi ha , Tipus atòmics purs reals. 152 00:08:01,470 --> 00:08:05,870 No hi ha distinció real entre un nombre, com un valor numèric, 153 00:08:05,870 --> 00:08:07,920 i una llista de valors numèrics. 154 00:08:07,920 --> 00:08:12,370 Els valors numèrics són en realitat la mateix que els vectors de longitud 1. 155 00:08:12,370 --> 00:08:14,959 I això té un nombre de implicacions importants. 156 00:08:14,959 --> 00:08:17,500 Un, que vol dir que vostè pot fer coses molt fàcilment que involucren 157 00:08:17,500 --> 00:08:21,037 com l'addició d'un nombre a un vector. 158 00:08:21,037 --> 00:08:23,120 R serà bàsicament la figura el que vol dir amb això. 159 00:08:23,120 --> 00:08:24,610 I vaig a arribar a això en un segon. 160 00:08:24,610 --> 00:08:27,930 També vol dir que no hi ha manera per al tipus checker-- en la mesura 161 00:08:27,930 --> 00:08:30,530 que alguna cosa així existeix en r-- per explicar 162 00:08:30,530 --> 00:08:33,780 quan has passat al valor únic quan s'espera una matriu o viceversa. 163 00:08:33,780 --> 00:08:39,159 I això pot causar alguna estranya problemes que em vaig trobar quan 164 00:08:39,159 --> 00:08:42,252 Jo estava usant R durant la meva feina d'estiu. 165 00:08:42,252 --> 00:08:43,710 I no hi ha arranjaments de tipus mixt. 166 00:08:43,710 --> 00:08:46,543 Així que no es pot tenir una matriu fos el primers elements és, no sé, 167 00:08:46,543 --> 00:08:49,332 la cadena "John" i el segon element és el nombre 42. 168 00:08:49,332 --> 00:08:52,540 Si vostè tracta de fer això, llavors obtindrà tot només converteix en una cadena. 169 00:08:52,540 --> 00:08:54,760 Així que tenim corda Joan, cadena 42. 170 00:08:54,760 --> 00:08:58,250 171 00:08:58,250 --> 00:09:02,025 >> Sintàctica tan inusuals trets assenyalats- més de R sintaxi és molt similar a C. 172 00:09:02,025 --> 00:09:04,690 Hi ha algunes diferències importants. 173 00:09:04,690 --> 00:09:05,620 Escriure és molt feble. 174 00:09:05,620 --> 00:09:07,360 Així que no hi ha declaracions de variables. 175 00:09:07,360 --> 00:09:12,670 Assignació utilitza l'estranya operador d'error de menys de guió. 176 00:09:12,670 --> 00:09:15,340 Els comentaris són l'coixinet. 177 00:09:15,340 --> 00:09:19,230 Suposo que ara dia en diem hashtag encara que això no és realment no accurate-- 178 00:09:19,230 --> 00:09:21,810 la doble barra. 179 00:09:21,810 --> 00:09:24,710 >> Residus modulars són amb %% signes. 180 00:09:24,710 --> 00:09:30,172 La divisió sencera està amb% /% que és molt difícil de llegir quan es projecta 181 00:09:30,172 --> 00:09:30,880 a la pantalla. 182 00:09:30,880 --> 00:09:34,150 183 00:09:34,150 --> 00:09:37,200 Vostè pot obtenir rangs de sencers amb el còlon. 184 00:09:37,200 --> 00:09:41,840 Així 2,5 li donarà un vector de tots els números 2 a 5. 185 00:09:41,840 --> 00:09:44,530 >> Les matrius estan indexats d'una sola, que es cargola a molta gent 186 00:09:44,530 --> 00:09:47,540 fins si són de més llenguatges de programació típics, 187 00:09:47,540 --> 00:09:50,450 com C, on la major part les coses són zero-indexada. 188 00:09:50,450 --> 00:09:54,420 Un cop més, aquí és on l'herència de R com un llenguatge per com no 189 00:09:54,420 --> 00:09:56,560 programadors professionals provenen en. 190 00:09:56,560 --> 00:09:59,680 Si vostè és un sociòleg o un economista o alguna cosa 191 00:09:59,680 --> 00:10:01,980 i que està tractant d'usar R bàsicament com un complement 192 00:10:01,980 --> 00:10:03,832 al seu més important treball professional, 193 00:10:03,832 --> 00:10:06,040 trobaràs 1 indexar una mica més natural. 194 00:10:06,040 --> 00:10:09,890 A causa de començar a comptar a 1 en la vida quotidiana, no 0. 195 00:10:09,890 --> 00:10:13,260 >> Per-bucles, això és similar a el foreach construir en PHP, 196 00:10:13,260 --> 00:10:17,090 que vostè aconseguirà aprendre en-- molt aviat. 197 00:10:17,090 --> 00:10:22,540 Què és per al valor en el vector i llavors vostè pot fer les coses amb valor. 198 00:10:22,540 --> 00:10:24,040 AUDIÈNCIA: Això ve en conferència. 199 00:10:24,040 --> 00:10:26,248 CONNOR HARRIS: Oh, això és arribar a la conferència, excel·lent. 200 00:10:26,248 --> 00:10:29,815 AUDIÈNCIA: La missió, ¿és suposa assenyalar de dreta a esquerra? 201 00:10:29,815 --> 00:10:31,440 CONNOR HARRIS: De dreta a esquerra, si. 202 00:10:31,440 --> 00:10:34,720 Vostè pot pensar en ell com el valor en la dreta empès a la variable 203 00:10:34,720 --> 00:10:36,240 a l'esquerra. 204 00:10:36,240 --> 00:10:36,781 AUDIÈNCIA: OK. 205 00:10:36,781 --> 00:10:39,770 206 00:10:39,770 --> 00:10:42,330 >> CONNOR HARRIS: I finalment sintaxi de la funció és una mica estrany. 207 00:10:42,330 --> 00:10:48,460 Vostè té el nom de la funció foo, assignat a aquesta funció de paraules clau, seguit 208 00:10:48,460 --> 00:10:51,530 per tots els arguments i després el cos de la funció després d'això. 209 00:10:51,530 --> 00:10:53,280 Un cop més aquestes coses poden semblar una mica estrany. 210 00:10:53,280 --> 00:10:57,181 Ells es converteixen en segona naturalesa després es treballa amb la llengua una mica. 211 00:10:57,181 --> 00:10:58,930 Així vectors, el camí que la construcció d'un vector 212 00:10:58,930 --> 00:11:04,550 és que el tipus C, que és una paraula clau, a continuació, tots els nombres que desitja o cadenes 213 00:11:04,550 --> 00:11:06,490 o el que sigui. 214 00:11:06,490 --> 00:11:07,995 Arguments també ser vectors. 215 00:11:07,995 --> 00:11:09,620 Però la matriu resultant s'aplana. 216 00:11:09,620 --> 00:11:14,385 Així que no es pot tenir matrius on alguns elements són nombres individuals 217 00:11:14,385 --> 00:11:17,010 i alguns elements són propis arranjaments. 218 00:11:17,010 --> 00:11:20,010 >> Així que si vostè tracta de construir un matriu fos el primer element és de 4 219 00:11:20,010 --> 00:11:22,370 i el segon element és el 3,5 matriu que va a 220 00:11:22,370 --> 00:11:25,890 acaba d'obtenir una matriu de tres elements, 4,3,5. 221 00:11:25,890 --> 00:11:27,760 No poden ser de tipus mixt. 222 00:11:27,760 --> 00:11:32,290 Si voleu llegir o escriure fora dels límits d'un vector 223 00:11:32,290 --> 00:11:36,640 obtindrà aquest valor anomenat NA que significa un valor perdut. 224 00:11:36,640 --> 00:11:39,900 I això està destinat a com estadístiques que 225 00:11:39,900 --> 00:11:43,080 estan treballant amb conjunts de dades incompletes. 226 00:11:43,080 --> 00:11:46,460 >> Si s'aplica una funció que se suposa a prendre només un nombre a una matriu 227 00:11:46,460 --> 00:11:49,220 a continuació, el que s'obté és, la funció d'assignar sobre la matriu. 228 00:11:49,220 --> 00:11:52,130 Així que si la seva funció diguem que pren un nombre i retorna quadrats. 229 00:11:52,130 --> 00:11:58,170 Vostè sol·licita que a la matriu 2,3,5 El que rebrà és la matriu 4,9,25. 230 00:11:58,170 --> 00:12:00,010 >> I això és molt útil perquè li significa 231 00:12:00,010 --> 00:12:03,374 no ha d'escriure per bucles per fer les coses molt simples, com l'aplicació de 232 00:12:03,374 --> 00:12:05,040 una funció per a tots els membres d'un conjunt de dades. 233 00:12:05,040 --> 00:12:08,557 Què si vostè està treballant amb un gran conjunts de dades, vostè ha de fer molt. 234 00:12:08,557 --> 00:12:10,390 Funcions binàries són entrada aplicada per l'entrada. 235 00:12:10,390 --> 00:12:12,430 Vaig a entrar en això. 236 00:12:12,430 --> 00:12:16,750 Vostè pot accedir-hi amb matrius o vectors amb claudàtors. 237 00:12:16,750 --> 00:12:22,300 Suports Així nom del vector quadrats 1 li donarà el primer element. 238 00:12:22,300 --> 00:12:25,510 Nom Vector claudàtors 2 li donarà el segon element. 239 00:12:25,510 --> 00:12:27,530 >> Pot passar d'un vector d'índexs i vostè 240 00:12:27,530 --> 00:12:29,640 tornar a sortir, bàsicament, un factor secundari. 241 00:12:29,640 --> 00:12:34,990 Així que vostè pot fer vectorial suports Nom C, 2,4 i obtindrà un vector que conté 242 00:12:34,990 --> 00:12:38,804 el segon i quart elements de la matriu. 243 00:12:38,804 --> 00:12:40,720 I si vols només un Resum estadístic ràpida 244 00:12:40,720 --> 00:12:47,529 d'un vector com interquartil rang, mitjana, màxim, el que sigui, 245 00:12:47,529 --> 00:12:49,820 pot teclejar Resum nom del vector i treure això. 246 00:12:49,820 --> 00:12:52,680 Això no és realment útil en programació, però si estàs jugant 247 00:12:52,680 --> 00:12:55,990 voltant dels conjunts de dades, és molt útil. 248 00:12:55,990 --> 00:12:58,650 >> Matrices-- bàsicament matrius de dimensions superiors. 249 00:12:58,650 --> 00:13:01,190 Tenen aquesta sintaxi especial notació. 250 00:13:01,190 --> 00:13:07,620 Matriu amb una matriu que s'obté ple en-- sento, matriu amb les dades, 251 00:13:07,620 --> 00:13:09,780 nombre de files, el nombre de columnes. 252 00:13:09,780 --> 00:13:13,180 Quan vostè té algunes dades, omple la matriu bàsicament va de dalt a baix 253 00:13:13,180 --> 00:13:13,380 primer. 254 00:13:13,380 --> 00:13:14,190 Després d'esquerra a dreta. 255 00:13:14,190 --> 00:13:15,030 Així, així. 256 00:13:15,030 --> 00:13:17,809 257 00:13:17,809 --> 00:13:19,600 I R ha construït en multiplicacions de matrius, 258 00:13:19,600 --> 00:13:24,310 descomposició espectral, diagonalització, un munt de coses. 259 00:13:24,310 --> 00:13:27,785 Per major dimensió arrays, per la 3, 4, 5, 260 00:13:27,785 --> 00:13:29,410 o el que sigui dimensions es pot fer això. 261 00:13:29,410 --> 00:13:34,400 La sintaxi és la matriu és igual a c tènue, a continuació, la llista de les dimensions. 262 00:13:34,400 --> 00:13:38,620 Així que si vols una matriu tridimensional 4 amb dimensions de 4, 7, 8, 9, la matriu, 263 00:13:38,620 --> 00:13:45,470 tènue és igual a c (4,7,8,9). 264 00:13:45,470 --> 00:13:51,180 >> Per accedir als valors individuals amb els suports primera coma entrada segona entrada. 265 00:13:51,180 --> 00:13:54,870 Vostè pot obtenir llesques senceres de files o columnes. 266 00:13:54,870 --> 00:13:59,900 Amb aquesta sintaxi és incompleta simplement remar nombre de coma o columna de coma 267 00:13:59,900 --> 00:14:00,400 nombre. 268 00:14:00,400 --> 00:14:02,874 269 00:14:02,874 --> 00:14:04,540 Així que les llistes són una espècie de matriu associada. 270 00:14:04,540 --> 00:14:06,360 Ells tenen la seva pròpia sintaxi aquí. 271 00:14:06,360 --> 00:14:08,320 Un cop més no fer frenèticament copiar tot això. 272 00:14:08,320 --> 00:14:11,370 Això és només perquè la gent passant pels tobogans més tard 273 00:14:11,370 --> 00:14:13,089 tenir tot això en una bona referència. 274 00:14:13,089 --> 00:14:16,130 I això es convertirà en un cop molt natural De fet, em passeig per les donem. 275 00:14:16,130 --> 00:14:19,295 276 00:14:19,295 --> 00:14:20,920 Així enumera una arrays bàsicament associats. 277 00:14:20,920 --> 00:14:27,040 Es pot accedir als valors amb nom de la llista, mostra de dòlar, clau. 278 00:14:27,040 --> 00:14:31,370 Així que si la seva llista és el nom foo, llavors vostè pot accedir-hi d'aquesta manera. 279 00:14:31,370 --> 00:14:37,032 Vostè pot obtenir un parell clau-valor sencer passant en l'índex entre claudàtors. 280 00:14:37,032 --> 00:14:39,240 Si es llegeix des d'una inexistent clau, obtindrà nul·la. 281 00:14:39,240 --> 00:14:41,150 No serà error. 282 00:14:41,150 --> 00:14:43,590 La cosa és, R farà el que tant amb nul·la, ja que pot. 283 00:14:43,590 --> 00:14:46,580 I això pot significar que si estàs no esperant rebre nul·la fora 284 00:14:46,580 --> 00:14:51,840 d'alguna llista de lectura, obtindrà alguna errors impredictibles més baix 285 00:14:51,840 --> 00:14:52,620 La línia. 286 00:14:52,620 --> 00:14:54,890 >> Això em va passar a mi quan treball d'estiu que estava fent servir R 287 00:14:54,890 --> 00:14:58,410 on he canviat la forma d'un cert llista es va definir en un sol lloc 288 00:14:58,410 --> 00:15:05,410 però no va canviar més tard en el codi que llegeix els valors de la mateixa. 289 00:15:05,410 --> 00:15:10,190 I així, el que va passar va ser que estava llegir valors nuls fora d'aquesta llista, 290 00:15:10,190 --> 00:15:13,090 passar-los en funcions, i sent molt confusa 291 00:15:13,090 --> 00:15:16,000 quan em van donar tota mena de infinits aleatoris apareixent 292 00:15:16,000 --> 00:15:16,790 en aquesta funció. 293 00:15:16,790 --> 00:15:20,730 Perquè si s'aplica cert màxim o funcions mínimes en NULL, 294 00:15:20,730 --> 00:15:22,570 obtindrà valors infinits a terme. 295 00:15:22,570 --> 00:15:26,400 296 00:15:26,400 --> 00:15:29,180 >> Les trames de dades, són una subclasse de llista. 297 00:15:29,180 --> 00:15:31,170 Cada valor és un vector de la mateixa longitud. 298 00:15:31,170 --> 00:15:34,220 I es fan servir per a la presentació, bàsicament, taules de dades. 299 00:15:34,220 --> 00:15:36,175 Hi ha aquesta sintaxi d'inicialització. 300 00:15:36,175 --> 00:15:38,800 Això tot, un cop més, ser molt més clara quan s'arriba a la demo. 301 00:15:38,800 --> 00:15:42,240 302 00:15:42,240 --> 00:15:44,240 I el bo de trames de dades és que es 303 00:15:44,240 --> 00:15:49,380 pot donar noms a totes les columnes i els noms de totes les files. 304 00:15:49,380 --> 00:15:53,890 I pel que fa l'accés ells una mica més amable. 305 00:15:53,890 --> 00:15:59,130 També aquesta és la forma en la majoria de les funcions que llegir dades de fulls de càlcul d'Excel 306 00:15:59,130 --> 00:16:03,820 o des d'arxius de text, per exemple, llegirà en les seves dades. 307 00:16:03,820 --> 00:16:07,555 Ells posen en algun tipus de trama de dades. 308 00:16:07,555 --> 00:16:09,680 Així functions-- les funcions la sintaxi és una mica estrany. 309 00:16:09,680 --> 00:16:16,160 Una vegada més és el nom de la funció, cedir, aquesta funció de paraules clau i després 310 00:16:16,160 --> 00:16:17,900 la llista d'arguments. 311 00:16:17,900 --> 00:16:24,080 Així que hi ha algunes coses bones sobre com les funcions treballen aquí. 312 00:16:24,080 --> 00:16:28,170 D'una banda, en realitat es pot assignar valors per defecte a certs arguments. 313 00:16:28,170 --> 00:16:32,910 Així que es pot dir R1 equals-- es pot dir foo 314 00:16:32,910 --> 00:16:38,290 és una funció en què R1 és igual a alguna cosa per defecte si l'usuari especifica 315 00:16:38,290 --> 00:16:39,090 sense arguments. 316 00:16:39,090 --> 00:16:41,932 Altrament, és el que ell va posar en. 317 00:16:41,932 --> 00:16:44,140 I això és molt pràctic perquè moltes de les nostres funcions 318 00:16:44,140 --> 00:16:47,910 tenen sovint desenes o centenars d'arguments. 319 00:16:47,910 --> 00:16:51,210 Per exemple els que per al traçat gràfics o traçat gràfics de dispersió 320 00:16:51,210 --> 00:16:54,430 tenir arguments que controlen tot, des del títol i l'eix 321 00:16:54,430 --> 00:16:59,512 etiquetes al color de les línies de regressió. 322 00:16:59,512 --> 00:17:01,470 I pel que si vostè no vol perquè la gent especifiquen 323 00:17:01,470 --> 00:17:04,050 tots i cada un d'ells centenars d'arguments 324 00:17:04,050 --> 00:17:07,674 controlar tots els aspectes de una parcel·la o una regressió o el que sigui, 325 00:17:07,674 --> 00:17:09,299 és bo tenir aquests valors predeterminats. 326 00:17:09,299 --> 00:17:12,700 327 00:17:12,700 --> 00:17:19,146 >> I llavors vostè pot realment escriure el que va veure de nou aquí. 328 00:17:19,146 --> 00:17:22,869 O trobar un millor exemple. 329 00:17:22,869 --> 00:17:28,690 Quan es diu a funcions en realitat es pot anomenar utilitzant els noms d'arguments. 330 00:17:28,690 --> 00:17:33,919 Així que aquí està un exemple de el constructor matriu. 331 00:17:33,919 --> 00:17:34,960 Pren tres arguments. 332 00:17:34,960 --> 00:17:36,760 En general, té dades, que és un vector. 333 00:17:36,760 --> 00:17:38,920 Vostè té N files, que és el nombre de files. 334 00:17:38,920 --> 00:17:41,160 Tens N cols-- nombre de columnes. 335 00:17:41,160 --> 00:17:43,920 La cosa és que si escriu Fila N és igual al que sigui 336 00:17:43,920 --> 00:17:46,520 i N és igual a qualsevol col quan que està trucant a aquesta funció, 337 00:17:46,520 --> 00:17:47,770 en realitat es pot revertir ells. 338 00:17:47,770 --> 00:17:51,590 Així que vostè pot posar primer i la fila N N col segon i que li farà cap diferència. 339 00:17:51,590 --> 00:17:54,660 Així que aquesta és una característica poc agradable. 340 00:17:54,660 --> 00:17:56,260 >> Va fer importació i exportació. 341 00:17:56,260 --> 00:18:00,010 Això es pot fer, bàsicament. 342 00:18:00,010 --> 00:18:03,816 També hi ha instal·lacions per escriure arbitrària R s'oposa a un fitxer binari 343 00:18:03,816 --> 00:18:05,190 i després llegir de nou més tard. 344 00:18:05,190 --> 00:18:08,030 La qual cosa és molt útil si vostè està fent una gran sessió de R interactiu 345 00:18:08,030 --> 00:18:12,850 i el que necessita per salvar coses molt ràpidament. 346 00:18:12,850 --> 00:18:16,460 Per defecte R té un directori de treball que els arxius s'escriuen en 347 00:18:16,460 --> 00:18:19,410 i llegir de nou des. 348 00:18:19,410 --> 00:18:22,350 Es pot veure que amb getwg, canviar-ho amb setdw. 349 00:18:22,350 --> 00:18:25,630 Res especialment interessant aquí 350 00:18:25,630 --> 00:18:28,270 >> Així que ara les estadístiques reals stuff-- regressió multilineal. 351 00:18:28,270 --> 00:18:30,960 352 00:18:30,960 --> 00:18:34,910 Així la sintaxi habitual és una mica complicat. 353 00:18:34,910 --> 00:18:37,260 El model és un gran objecte, bàsicament. 354 00:18:37,260 --> 00:18:39,910 Se li assigna a LM, que és una crida a la funció. 355 00:18:39,910 --> 00:18:43,840 El primer element, la I x1 titlla, més el que sigui. 356 00:18:43,840 --> 00:18:46,574 357 00:18:46,574 --> 00:18:47,990 El meu sintaxi aquí és una mica confús. 358 00:18:47,990 --> 00:18:49,490 Estic molt trist, aquest és la forma estàndard 359 00:18:49,490 --> 00:18:50,990 que els llibres de ciències de la computació fan això. 360 00:18:50,990 --> 00:18:54,890 Però és una mica estrany. 361 00:18:54,890 --> 00:18:58,200 >> Així que, bàsicament, és lm parèntesi, primer punt 362 00:18:58,200 --> 00:19:06,730 es variable-- sento, dependent x1 titlla variable més x2 més 363 00:19:06,730 --> 00:19:10,910 però molts independents les variables que té. 364 00:19:10,910 --> 00:19:14,240 I llavors aquests poden ser tant vectors, tots la mateixa longitud. 365 00:19:14,240 --> 00:19:16,220 O poden ser la columna capçaleres en una trama de dades 366 00:19:16,220 --> 00:19:18,553 que acaba d'especificar en el segona trama de dades argument. 367 00:19:18,553 --> 00:19:23,270 368 00:19:23,270 --> 00:19:26,380 >> També podeu especificar una fórmula més complexa 369 00:19:26,380 --> 00:19:31,990 per la qual cosa no ha de linealment regressió una variable dependent, 370 00:19:31,990 --> 00:19:34,440 o un vector en un vector preexistent. 371 00:19:34,440 --> 00:19:38,070 Vostè pot fer, per exemple, un component de vector i al quadrat més 1 372 00:19:38,070 --> 00:19:42,100 i que en contra de la regressió log d'algun altre vector. 373 00:19:42,100 --> 00:19:45,200 Podeu imprimir resums de la model amb aquesta comanda anomenat 374 00:19:45,200 --> 00:19:48,607 summary-- simplement Resum parens model. 375 00:19:48,607 --> 00:19:50,190 De nou una altra cosa he d'aclarir. 376 00:19:50,190 --> 00:19:55,407 377 00:19:55,407 --> 00:19:58,615 Una altra cosa que aconseguirà corregida quan les diapositives pugen a Internet. 378 00:19:58,615 --> 00:20:01,127 379 00:20:01,127 --> 00:20:03,210 Si el que desitja és calcular una correlació simple 380 00:20:03,210 --> 00:20:09,170 pot utilitzar la correlació vectorial Febrer 1 vectorial funció bàsica. 381 00:20:09,170 --> 00:20:11,856 Mètode per defecte Correlacions de Pearson. 382 00:20:11,856 --> 00:20:13,480 Aquests són els estàndards que vostè pot fer. 383 00:20:13,480 --> 00:20:15,990 Hi ha també Spearman i Correlacions Kendell 384 00:20:15,990 --> 00:20:19,530 que són alguns varietat de correlació ordre de rang. 385 00:20:19,530 --> 00:20:23,600 Bé, ells no calculen producte moments entre els mateixos vectors, 386 00:20:23,600 --> 00:20:28,511 sinó d'ordres de rang del vector. 387 00:20:28,511 --> 00:20:29,510 Vaig a explicar això més endavant. 388 00:20:29,510 --> 00:20:30,120 >> AUDIÈNCIA: Una pregunta ràpida 389 00:20:30,120 --> 00:20:30,360 >> CONNER HARRIS: És clar. 390 00:20:30,360 --> 00:20:33,151 >> AUDIÈNCIA: Així que quan vostè està calculant per a les correlacions simples fan 391 00:20:33,151 --> 00:20:37,655 vostè assumeix que hi ha una estadística importància per a la correlació? 392 00:20:37,655 --> 00:20:39,030 CONNER HARRIS: No ha de fer-ho. 393 00:20:39,030 --> 00:20:41,840 394 00:20:41,840 --> 00:20:43,960 Una pel·lícula és bàsicament una màquina. 395 00:20:43,960 --> 00:20:47,690 Prendrà en dues coses i va escopir 396 00:20:47,690 --> 00:20:49,770 coeficients per a la línia de millor ajust. 397 00:20:49,770 --> 00:20:52,310 També informa estàndard errors en els coeficients. 398 00:20:52,310 --> 00:20:55,865 I li dirà, com és el intercepció estadísticament significativa 399 00:20:55,865 --> 00:20:56,740 o diferència de 0. 400 00:20:56,740 --> 00:20:59,400 És el pendent de la millor ajust de línia estadísticament 401 00:20:59,400 --> 00:21:01,510 diferent de zero, etcètera. 402 00:21:01,510 --> 00:21:06,260 Per tant, assumeix res, crec que és la millor resposta a la seva pregunta. 403 00:21:06,260 --> 00:21:07,410 D'ACORD. 404 00:21:07,410 --> 00:21:14,650 >> Plotting-- de manera que la raó principal que hauria de utilitzar R, com la regressió multilineal. 405 00:21:14,650 --> 00:21:17,320 Bàsicament tots els idiomes té alguna facilitat per això. 406 00:21:17,320 --> 00:21:21,365 I honestament sintaxi de R com regressió és una mica misteriós. 407 00:21:21,365 --> 00:21:22,990 Però traçat és on realment brilla. 408 00:21:22,990 --> 00:21:28,090 >> La funció cavall de batalla és trama i pren dos vectors, x i y. 409 00:21:28,090 --> 00:21:33,010 I després les el·lipses es destaca per una molt gran nombre d'arguments opcionals que 410 00:21:33,010 --> 00:21:39,190 controlar tot, des de títols de colors de diverses línies o diversos punts, 411 00:21:39,190 --> 00:21:40,200 amb el tipus de trama. 412 00:21:40,200 --> 00:21:42,250 Vostè pot tenir la dispersió parcel·les o gràfics de línies. 413 00:21:42,250 --> 00:21:47,900 414 00:21:47,900 --> 00:21:49,710 >> [Inaudible] 2 vectors de la mateixa longitud. 415 00:21:49,710 --> 00:21:53,780 Pot precedir a això amb adjuntar trama de dades a l'script. 416 00:21:53,780 --> 00:22:01,220 I això li permetrà només ha d'utilitzar la columna capçaleres en lloc de vectors separats. 417 00:22:01,220 --> 00:22:05,410 Podeu afegir rectes més ajustades i locals corbes de regressió al seu gràfic. 418 00:22:05,410 --> 00:22:09,390 >> Aquestes ordres enumeren aquí, ab línies i línies, 419 00:22:09,390 --> 00:22:11,640 per defecte aquests reben escrita en finestres emergents 420 00:22:11,640 --> 00:22:15,560 perquè se suposa que utilitzeu R interactiva. 421 00:22:15,560 --> 00:22:17,310 Si no és que pugui escriure dos arxius que 422 00:22:17,310 --> 00:22:21,600 són en realitat qualsevol format que vulguis. 423 00:22:21,600 --> 00:22:25,410 Ho sento, tinc una errada m'acabo de donar compte. 424 00:22:25,410 --> 00:22:30,887 425 00:22:30,887 --> 00:22:32,720 Si voleu obrir un altre dispositiu gràfica 426 00:22:32,720 --> 00:22:39,200 pot utilitzar aquesta funció anomenada PNG o JPEG o molts altres formats d'imatge. 427 00:22:39,200 --> 00:22:42,319 I vostè pot escriure als gràfics qualsevol que sigui el nom del fitxer que especifiqueu. 428 00:22:42,319 --> 00:22:45,110 Per cancel·lar la qual vostè ha de servei- Jo no vaig escriure això en el slide-- 429 00:22:45,110 --> 00:22:49,650 però hi ha una funció anomenada dev punt que no té arguments. 430 00:22:49,650 --> 00:22:51,517 >> Després hi ha les instal·lacions per al traçat 3D 431 00:22:51,517 --> 00:22:53,350 i per al contorn de traçat si vostè vol fer 432 00:22:53,350 --> 00:22:55,700 gràfiques de dues variables independents. 433 00:22:55,700 --> 00:22:57,150 No entraré en això en aquest moment. 434 00:22:57,150 --> 00:22:59,130 >> Hi ha també alguns són instal·lacions per a l'animació 435 00:22:59,130 --> 00:23:01,300 aquests són generalment mantinguts per tercers. 436 00:23:01,300 --> 00:23:06,330 He fet animacions amb gràfics de R, però no he utilitzat aquests tercers 437 00:23:06,330 --> 00:23:06,940 biblioteques. 438 00:23:06,940 --> 00:23:09,929 Així que no puc donar fe del bons que són. 439 00:23:09,929 --> 00:23:12,220 El que jo recomano que si vols per fer animacions utilitzant R 440 00:23:12,220 --> 00:23:16,480 és que vostè pot escriure a terme tots els marcs per a les animacions 441 00:23:16,480 --> 00:23:18,470 i llavors vostè pot utilitzar un tercer program-- partit 442 00:23:18,470 --> 00:23:23,630 els típics es diuen FFmpeg o ImageMagick-- a la puntada 443 00:23:23,630 --> 00:23:26,540 tots els seus quadres en una sola animació. 444 00:23:26,540 --> 00:23:28,380 >> Així que el temps per a la demostració. 445 00:23:28,380 --> 00:23:31,030 446 00:23:31,030 --> 00:23:37,189 Així que si vostè està utilitzant qualsevol Unix com a sistema que és Linux BSD, però que utilitza BSD. 447 00:23:37,189 --> 00:23:39,730 OS X obrir una finestra de terminal i tipus R en l'indicatiu. 448 00:23:39,730 --> 00:23:42,820 Si vostè té R estudi o similars, que també funciona. 449 00:23:42,820 --> 00:23:46,270 Per als usuaris de Windows que ha de ser capaç de trobar R al menú Inici. 450 00:23:46,270 --> 00:23:50,390 S'hauria de dir alguna cosa com R x64 3 punts el que sigui. 451 00:23:50,390 --> 00:23:53,110 Obriu que fins allà. 452 00:23:53,110 --> 00:23:58,850 >> Així que ara permetin-me obrir una finestra de terminal. 453 00:23:58,850 --> 00:24:02,562 Molt bé, la recerca. 454 00:24:02,562 --> 00:24:03,520 AUDIÈNCIA: Comando Espacial 455 00:24:03,520 --> 00:24:06,675 CONNER HARRIS: Comando Espacial, gràcies. 456 00:24:06,675 --> 00:24:10,030 No utilitzo normalment Macs. 457 00:24:10,030 --> 00:24:13,310 Terminal, mostren una nova finestra. 458 00:24:13,310 --> 00:24:18,120 Nova finestra és la configuració bàsic, R. Així que vostè ha de rebre 459 00:24:18,120 --> 00:24:22,230 un missatge de benvinguda, alguna cosa com això. 460 00:24:22,230 --> 00:24:31,060 >> Així que estic fent servir R interactiva. 461 00:24:31,060 --> 00:24:32,719 També pot escriure scripts R és clar. 462 00:24:32,719 --> 00:24:34,510 Bàsicament els scripts s'executen de la mateixa manera com 463 00:24:34,510 --> 00:24:40,250 si estigués assegut davant l'ordinador escrivint en cada línia d'una en una. 464 00:24:40,250 --> 00:24:42,660 Així que començarem per fer un vector. 465 00:24:42,660 --> 00:24:46,230 Una fletxa 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, segur. 468 00:24:50,050 --> 00:24:51,630 Puc fer que la mida de la font més gran. 469 00:24:51,630 --> 00:24:53,030 >> AUDIÈNCIA: Comando-Plus 470 00:24:53,030 --> 00:24:53,650 >> CONNER HARRIS: Comando-Plus. 471 00:24:53,650 --> 00:24:54,191 Comando-Plus. 472 00:24:54,191 --> 00:24:57,610 473 00:24:57,610 --> 00:25:00,370 Molt bé, com és això? 474 00:25:00,370 --> 00:25:00,870 Bona? 475 00:25:00,870 --> 00:25:01,551 D'ACORD. 476 00:25:01,551 --> 00:25:03,300 Així que anem a començar per declarar una llista de vectors. 477 00:25:03,300 --> 00:25:08,710 Fer un, fletxa, C 1,2,4. 478 00:25:08,710 --> 00:25:11,181 Podem veure a. 479 00:25:11,181 --> 00:25:12,680 No et preocupis pel suport d'allà. 480 00:25:12,680 --> 00:25:18,590 Els parèntesis són així que si vostè imprimir matrius molt llargues, podem on es trobi. 481 00:25:18,590 --> 00:25:26,987 Un exemple seria si jo només vull rang 2-200. 482 00:25:26,987 --> 00:25:28,820 Si vaig imprimir 01:00 llarga sèrie, els suports 483 00:25:28,820 --> 00:25:31,060 són només perquè jo pugui mantenir un registre de quin índex 484 00:25:31,060 --> 00:25:33,250 estem en si estic buscant a través d'aquest visualment. 485 00:25:33,250 --> 00:25:36,570 486 00:25:36,570 --> 00:25:38,280 Així que de totes maneres, tenim un. 487 00:25:38,280 --> 00:25:43,326 >> Així que li vaig dir abans que les matrius d'interacció molt bé amb, per exemple, 488 00:25:43,326 --> 00:25:44,450 operacions unaris els agrada. 489 00:25:44,450 --> 00:25:46,500 Llavors, ¿què creus que vaig a aconseguir si introdueixo la més 1? 490 00:25:46,500 --> 00:25:49,630 491 00:25:49,630 --> 00:25:51,140 Sí. 492 00:25:51,140 --> 00:25:54,250 Bé, ara faré aquesta matriu diferent. 493 00:25:54,250 --> 00:26:01,650 Diguem bc 20,40, 80. 494 00:26:01,650 --> 00:26:03,400 Així que què et sembla aquesta comanda farà? 495 00:26:03,400 --> 00:26:09,962 496 00:26:09,962 --> 00:26:10,670 Afegir els elements. 497 00:26:10,670 --> 00:26:14,950 I així que bàsicament això és el que fa. 498 00:26:14,950 --> 00:26:16,740 Així que això és bastant convenient. 499 00:26:16,740 --> 00:26:23,800 Així que què faig això. c és, diguem, 6 vegades 1 al 10. 500 00:26:23,800 --> 00:26:26,789 501 00:26:26,789 --> 00:26:28,830 Llavors, què és el que vull veure continguda, què et sembla? 502 00:26:28,830 --> 00:26:37,110 503 00:26:37,110 --> 00:26:38,110 Així que tots els múltiples de sis. 504 00:26:38,110 --> 00:26:42,170 Ara, què et sembla passarà si faig això? 505 00:26:42,170 --> 00:26:48,090 Vaig a fer això una mica més clar, c, c. 506 00:26:48,090 --> 00:26:50,365 Llavors, què passa, oi pensar, si faig això? 507 00:26:50,365 --> 00:26:51,488 un plus c. 508 00:26:51,488 --> 00:26:55,550 509 00:26:55,550 --> 00:26:56,050 [Inaudible] 510 00:26:56,050 --> 00:26:58,552 511 00:26:58,552 --> 00:27:02,350 >> AUDIÈNCIA: Qualsevol d'un error o només se suma els tres primers elements. 512 00:27:02,350 --> 00:27:04,510 >> CONNER HARRIS: No del tot. 513 00:27:04,510 --> 00:27:05,522 Això és el que ens van donar. 514 00:27:05,522 --> 00:27:08,910 El que passa és un més curt matriu, un, va aconseguir un cicle. 515 00:27:08,910 --> 00:27:13,990 Així que ens van donar 124, 124, 124. 516 00:27:13,990 --> 00:27:15,710 Sí. 517 00:27:15,710 --> 00:27:18,940 I en el fons, vostè pot veure aquest comportament abans, un plus 1, 518 00:27:18,940 --> 00:27:22,190 com una subclasse d'aquest comportament, on la matriu més curta és sols un nombre 519 00:27:22,190 --> 00:27:25,410 1, que és una matriu d'un element. 520 00:27:25,410 --> 00:27:27,740 Acabo d'estar dient tot vectorial el temps en lloc de la matriu, 521 00:27:27,740 --> 00:27:30,290 perquè això és el que el r documentació té acostumats. 522 00:27:30,290 --> 00:27:33,070 És una c hàbit arrelat. 523 00:27:33,070 --> 00:27:37,590 >> OK, i per això ara tenim aquesta matriu. 524 00:27:37,590 --> 00:27:38,830 Així que tenim aquesta matriu, c. 525 00:27:38,830 --> 00:27:41,380 Podem aconseguir Resum estadístiques sobre c, sumàries c. 526 00:27:41,380 --> 00:27:46,920 527 00:27:46,920 --> 00:27:48,280 I això és bo. 528 00:27:48,280 --> 00:27:51,070 529 00:27:51,070 --> 00:27:52,670 Així que ara anem a fer algunes coses de la matriu. 530 00:27:52,670 --> 00:27:56,160 Diguem que m és una matriu. 531 00:27:56,160 --> 00:27:57,780 Anem a fer que un tres per tres un. 532 00:27:57,780 --> 00:28:01,630 Així nRows és igual a 3, i és igual a 3 ncols. 533 00:28:01,630 --> 00:28:04,190 534 00:28:04,190 --> 00:28:10,710 I per a les dades que anem a fer-- així que el que creu vostè que això va a fer? 535 00:28:10,710 --> 00:28:15,310 536 00:28:15,310 --> 00:28:16,580 >> Correcte, és la següent. 537 00:28:16,580 --> 00:28:17,970 És nRow i nColumn. 538 00:28:17,970 --> 00:28:22,164 539 00:28:22,164 --> 00:28:24,580 Així que el que he fet és que he declarat una matriu de tres per tres 540 00:28:24,580 --> 00:28:26,950 i jo he passat en una sèrie de nou elements. 541 00:28:26,950 --> 00:28:30,530 Així que el logaritme de tot el elements u al nou. 542 00:28:30,530 --> 00:28:33,400 543 00:28:33,400 --> 00:28:37,285 I tots aquests valors s'omplen el lament array--? 544 00:28:37,285 --> 00:28:38,660 AUDIÈNCIA: Aquells són de base 10 registres? 545 00:28:38,660 --> 00:28:41,284 CONNER HARRIS: No, de registre és logaritmes naturals, de manera que en base e. 546 00:28:41,284 --> 00:28:44,886 547 00:28:44,886 --> 00:28:47,010 Sí, si vostè vol la base 10 log, crec que tindries 548 00:28:47,010 --> 00:28:51,620 per registrar el que sigui, dividit per registre 10. 549 00:28:51,620 --> 00:28:56,750 I pel que les dades de la [inaudible] només s'omple la matriu, per la qual cosa dalt a baix, 550 00:28:56,750 --> 00:28:59,490 després a l'esquerra a la dreta. 551 00:28:59,490 --> 00:29:06,890 I si volia fer alguna altra matriu, diguem n és la matriu. 552 00:29:06,890 --> 00:29:10,317 Anem a fer, no ho sé, 2 a 13. 553 00:29:10,317 --> 00:29:11,900 O vaig a fer alguna cosa més interessant. 554 00:29:11,900 --> 00:29:13,770 Faré 2-4. 555 00:29:13,770 --> 00:29:15,780 nRow és igual a, diguem, 3. 556 00:29:15,780 --> 00:29:18,992 ncol és igual a 4. 557 00:29:18,992 --> 00:29:20,360 n. 558 00:29:20,360 --> 00:29:22,090 Així que tenim això. 559 00:29:22,090 --> 00:29:26,130 >> I ara si volem multiplicar aquests, faríem vegades n cent per cent, 560 00:29:26,130 --> 00:29:27,680 perquè això és n. 561 00:29:27,680 --> 00:29:30,234 562 00:29:30,234 --> 00:29:31,400 I tenim productes de matriu. 563 00:29:31,400 --> 00:29:33,970 564 00:29:33,970 --> 00:29:37,810 Per cert, ¿veus com quan em vaig declarar n, del 2 al 4 565 00:29:37,810 --> 00:29:43,570 vector va aconseguir cicla fins que omplia tots els n? 566 00:29:43,570 --> 00:29:45,710 Si volies prendre la descomposició de valor propi, 567 00:29:45,710 --> 00:29:46,960 això és una cosa que podem fer amb molta facilitat. 568 00:29:46,960 --> 00:29:47,709 Podem fer Eigen n. 569 00:29:47,709 --> 00:29:52,290 570 00:29:52,290 --> 00:29:54,600 I pel que aquesta és la nostra primera trobar-se amb una llista. 571 00:29:54,600 --> 00:29:57,000 >> Així eigen n és una llista amb dues claus. 572 00:29:57,000 --> 00:29:58,430 Valors, que és aquesta matriu aquí. 573 00:29:58,430 --> 00:30:01,030 I vectors, que és aquesta matriu aquí. 574 00:30:01,030 --> 00:30:08,240 Així que si vostè vol extreure, per exemple, aquesta tercera columna 575 00:30:08,240 --> 00:30:13,080 de la matriu de vectors propis, perquè els vectors propis són vectors columna. 576 00:30:13,080 --> 00:30:24,400 Així que podem fer eigen vec n signe de dòlar vectors, coma 3, de [inaudible]. 577 00:30:24,400 --> 00:30:29,800 578 00:30:29,800 --> 00:30:30,900 Vec. 579 00:30:30,900 --> 00:30:34,100 És que, com es podria esperar. 580 00:30:34,100 --> 00:30:39,210 >> Llavors torneu a dir n vegades vegades cent vec. 581 00:30:39,210 --> 00:30:42,610 582 00:30:42,610 --> 00:30:48,320 Així que el resultat aquí sense dubte sembla si prenem el tercer valor propi aquí, 583 00:30:48,320 --> 00:30:50,390 que es correspon amb la tercera vector propi. 584 00:30:50,390 --> 00:30:53,190 Simplement multiplica tot en aquest vector propi, components savi, 585 00:30:53,190 --> 00:30:53,990 pel valor propi. 586 00:30:53,990 --> 00:30:57,760 I això és el que es podria esperar, perquè això és el que són els valors propis. 587 00:30:57,760 --> 00:31:00,890 Algú aquí no pres àlgebra lineal? 588 00:31:00,890 --> 00:31:02,530 Un parell de persones, a D'acord. 589 00:31:02,530 --> 00:31:04,030 Només cal activar el seu cervell fos una mica. 590 00:31:04,030 --> 00:31:07,490 591 00:31:07,490 --> 00:31:20,720 I de fet, si prenem eigen n valors de signe de dòlar 3 vegades vec, 592 00:31:20,720 --> 00:31:21,810 així aconseguir el mateix. 593 00:31:21,810 --> 00:31:24,726 És un format diferent com una fila vector en comptes d'un vector columna, 594 00:31:24,726 --> 00:31:25,640 però la gran cosa. 595 00:31:25,640 --> 00:31:29,430 596 00:31:29,430 --> 00:31:35,170 I així, aquests són bàsicament el bon coses que podem fer amb matrius, 597 00:31:35,170 --> 00:31:36,489 llistes demostrades. 598 00:31:36,489 --> 00:31:39,030 He demostrar el bon coses sobre les funcions també. 599 00:31:39,030 --> 00:31:41,750 >> Així que anem a dir-- [inaudible] funció, la crida de let 600 00:31:41,750 --> 00:31:51,960 que func contra la funció de n n squared-- En realitat, això no és realment el millor. 601 00:31:51,960 --> 00:31:55,632 a, b, un quadrat més b. 602 00:31:55,632 --> 00:31:58,547 603 00:31:58,547 --> 00:32:00,380 Així que una cosa sobre funcions, de nou, és que 604 00:32:00,380 --> 00:32:01,963 no necessiten declaracions explícites de retorn. 605 00:32:01,963 --> 00:32:04,250 Així que vostè pot sol-- la última declaració avaluat 606 00:32:04,250 --> 00:32:07,502 serà la declaració retornat, o el valor retornat. 607 00:32:07,502 --> 00:32:10,460 Així que en aquest cas, només estem avaluant una sentència, un plus quadrat b. 608 00:32:10,460 --> 00:32:12,043 Aquest serà el valor de retorn per defecte. 609 00:32:12,043 --> 00:32:14,530 Mai està de més posar en retornar valors de forma explícita, 610 00:32:14,530 --> 00:32:16,880 especialment si vostè està tractant amb un la funció de la lògica molt complicat 611 00:32:16,880 --> 00:32:17,380 fluir. 612 00:32:17,380 --> 00:32:18,450 Però vostè no els necessita. 613 00:32:18,450 --> 00:32:24,890 Així que ara podem fer func 5, 1, i això és bàsicament el que s'espera. 614 00:32:24,890 --> 00:32:29,146 615 00:32:29,146 --> 00:32:31,270 Una altra cosa que podem fer, en realitat podem fer func b 616 00:32:31,270 --> 00:32:33,260 és igual a 1, a és igual a 5. 617 00:32:33,260 --> 00:32:36,870 618 00:32:36,870 --> 00:32:40,770 Així que si especifiquem quin nombre aquí, que aquest argument al qual l'argument 619 00:32:40,770 --> 00:32:44,680 en la funció, podem donar la volta al voltant aquests valors on vulguem. 620 00:32:44,680 --> 00:32:48,405 >> AUDIÈNCIA: Hi ha una raó escriure amb la b 621 00:32:48,405 --> 00:32:52,404 iguals en lloc de només fer servir els números i la coma? 622 00:32:52,404 --> 00:32:54,820 CONNER HARRIS: Sí, en general fer això si té funcions 623 00:32:54,820 --> 00:32:58,540 amb una gran quantitat d'arguments. 624 00:32:58,540 --> 00:33:00,690 Això podria sovint ser com banderes que només havia 625 00:33:00,690 --> 00:33:03,130 que voleu utilitzar en rares ocasions. 626 00:33:03,130 --> 00:33:06,740 I d'aquesta manera vostè pot only-- vostè pot referir-se als arguments específics 627 00:33:06,740 --> 00:33:09,110 que voleu utilitzar valors no predeterminats per, 628 00:33:09,110 --> 00:33:14,470 i vostè no ha d'escriure un munt de banderes és igual a fals després d'ells. 629 00:33:14,470 --> 00:33:19,710 O puc escriure això de nou amb un valor per defecte com b és igual a 2. 630 00:33:19,710 --> 00:33:26,289 I llavors jo podria fer f func, Vaig a fer 4, 1 aquest temps. 631 00:33:26,289 --> 00:33:28,580 I el 17, que és 4 al quadrat més 1, com es podria esperar. 632 00:33:28,580 --> 00:33:34,290 >> Però podria també acaba trucar a aquest amb func 4, 633 00:33:34,290 --> 00:33:36,970 i aconseguiré 18, perquè No específic b. 634 00:33:36,970 --> 00:33:38,550 Així b obté el valor per defecte de 2. 635 00:33:38,550 --> 00:33:41,700 636 00:33:41,700 --> 00:33:47,200 >> OK, així que ara si ets següent juntament amb la demo, 637 00:33:47,200 --> 00:33:51,010 escrigui aquesta línia en la seva comanda impulsar i veure què surt. 638 00:33:51,010 --> 00:33:52,090 En realitat, no ho facis. 639 00:33:52,090 --> 00:33:52,590 Escrigui això. 640 00:33:52,590 --> 00:33:57,780 641 00:33:57,780 --> 00:34:01,000 Vostè ha d'obtenir alguna cosa com això. 642 00:34:01,000 --> 00:34:04,780 Així mtcars està construït en les dades establir per a aquesta demostració 643 00:34:04,780 --> 00:34:13,550 propòsits que ve con-- que ve en defecte amb la seva distribució de r. 644 00:34:13,550 --> 00:34:19,211 Aquest és un recull de les estadístiques de un nombre de la revista Motor Trend 1974 645 00:34:19,211 --> 00:34:20,710 en un nombre de diferents models d'automòbils. 646 00:34:20,710 --> 00:34:28,270 >> Així que hi ha milles per galó, cylinders-- M'oblido del que disp és-- cavalls de força. 647 00:34:28,270 --> 00:34:31,610 648 00:34:31,610 --> 00:34:32,420 Probablement. 649 00:34:32,420 --> 00:34:36,920 Si vostè acaba de cotxes Google MT, llavors un dels primers resultats 650 00:34:36,920 --> 00:34:38,730 serà a partir de la documentació oficial r 651 00:34:38,730 --> 00:34:41,080 i explicarà tots aquests camps de dades. 652 00:34:41,080 --> 00:34:47,020 Així pes és-- pes és pes del cotxe en tones. 653 00:34:47,020 --> 00:34:48,880 Q seg és el moment de quart de milla. 654 00:34:48,880 --> 00:34:52,409 655 00:34:52,409 --> 00:34:55,850 Així que ara podem fer algunes coses divertides sobre els cotxes MT és un camp de dades. 656 00:34:55,850 --> 00:35:01,640 >> Pel que podem fer les coses com els noms de fila, cotxes mt. 657 00:35:01,640 --> 00:35:05,490 I aquesta és una llista de totes les files de el conjunt de dades que són noms de cotxes. 658 00:35:05,490 --> 00:35:10,780 Podem fer COLNAMES, automòbils mt això. 659 00:35:10,780 --> 00:35:15,500 Si ho fas cotxes mt, subíndex numèric, com 2. 660 00:35:15,500 --> 00:35:18,177 tenim la segona columna de això, que seria cilindres. 661 00:35:18,177 --> 00:35:19,370 >> AUDIÈNCIA: Què vas fer? 662 00:35:19,370 --> 00:35:21,570 >> CONNER HARRIS: Jo teclejar MT actuacions, suports i, 663 00:35:21,570 --> 00:35:24,180 que em va donar la segona columna de cotxes mt. 664 00:35:24,180 --> 00:35:34,501 665 00:35:34,501 --> 00:35:38,110 O si volem una fila, puc escriure mtcars coma 2, per exemple. 666 00:35:38,110 --> 00:35:41,850 667 00:35:41,850 --> 00:35:46,390 Una altra 2 ronda coma, així. 668 00:35:46,390 --> 00:35:48,880 I això va en la seva fila. 669 00:35:48,880 --> 00:35:54,680 Aquesta aquí només et dóna una columna, però com un vector columna. 670 00:35:54,680 --> 00:36:04,634 671 00:36:04,634 --> 00:36:06,425 M'acabo de donar compte ara es va oblidar de demostrar 672 00:36:06,425 --> 00:36:09,150 algunes coses interessants sobre vectors que es pot veure amb els índexs. 673 00:36:09,150 --> 00:36:10,480 Així que permetin-me fer això ara mateix. 674 00:36:10,480 --> 00:36:17,130 Així que farem c gets-- posar això en pause-- 2 cops 1 a 10. 675 00:36:17,130 --> 00:36:21,360 Així que c és només serà el vector de 2 a 20. 676 00:36:21,360 --> 00:36:24,640 Puc prendre elements d'aquest tipus, c2. 677 00:36:24,640 --> 00:36:30,942 Em pot passar en un vector d'aquesta manera, em C-- deixi 678 00:36:30,942 --> 00:36:34,470 utilitzar un nom diferent que c, com c vec. 679 00:36:34,470 --> 00:36:37,591 680 00:36:37,591 --> 00:36:39,340 Bàsicament, estic fent això perquè no ho entenc 681 00:36:39,340 --> 00:36:45,010 confós entre c com funció de la construcció del vector, 682 00:36:45,010 --> 00:36:48,800 i després c com un nom de variable. 683 00:36:48,800 --> 00:36:53,120 Suports Vec c 4, 5, 7. 684 00:36:53,120 --> 00:36:56,540 Això em va sortir de la cambra, cinquè, i set elements de la matriu. 685 00:36:56,540 --> 00:37:01,740 Jo puc fer vec, posar en un negatiu índex, com a negatiu 4. 686 00:37:01,740 --> 00:37:06,500 Això Treurem això amb el quart element eliminat. 687 00:37:06,500 --> 00:37:10,140 Llavors, si jo volia fer rodanxes, Jo puc fer vec 2 a 6. 688 00:37:10,140 --> 00:37:15,480 2 punts 6 és més que una altra vector, que és 2, 3, 4, 5, 6. 689 00:37:15,480 --> 00:37:18,230 Escup això. 690 00:37:18,230 --> 00:37:20,770 >> Així que de totes maneres, de nou als cotxes mt. 691 00:37:20,770 --> 00:37:26,650 692 00:37:26,650 --> 00:37:28,450 Així que anem a fer algunes regressions. 693 00:37:28,450 --> 00:37:34,240 Diguem model gets-- anem linealment regress-- No sé. 694 00:37:34,240 --> 00:37:41,780 En primer lloc farem adjuntar mtcars, és clar. 695 00:37:41,780 --> 00:37:44,870 696 00:37:44,870 --> 00:38:00,010 Així que [inaudible] model lm, anem van retrocedint milles per galó en pes titlla. 697 00:38:00,010 --> 00:38:03,300 I després trama de dades és mtcars. 698 00:38:03,300 --> 00:38:06,830 Així model de resum. 699 00:38:06,830 --> 00:38:12,900 700 00:38:12,900 --> 00:38:15,595 >> OK, així que això sembla una mica complicat. 701 00:38:15,595 --> 00:38:19,380 Però, bàsicament, ja que si ens tractar d'expressar milles per galó 702 00:38:19,380 --> 00:38:23,970 com una funció lineal de pes, llavors tenim aquesta línia aquí, 703 00:38:23,970 --> 00:38:28,730 que intercepta a 37.28. 704 00:38:28,730 --> 00:38:33,830 37.28 serien les milles teòriques per galó d'un cotxe que pesa zero. 705 00:38:33,830 --> 00:38:41,210 I després per cada tona addicional, vostè colpeja a unes cinc milles per galó 706 00:38:41,210 --> 00:38:42,440 fora d'això. 707 00:38:42,440 --> 00:38:45,120 Tots dos d'aquests coeficients que pot veure, errors típics allà. 708 00:38:45,120 --> 00:38:47,870 I són molt estadísticament significativa. 709 00:38:47,870 --> 00:38:55,740 >> Així que podem estar molt segurs de 1 e 10 al negatiu 10. 710 00:38:55,740 --> 00:38:59,510 Així gener vegades alguna cosa al negatiu 10, que si fas un cotxe més pesat, 711 00:38:59,510 --> 00:39:01,440 tindrà pitjors milles per galó. 712 00:39:01,440 --> 00:39:04,940 713 00:39:04,940 --> 00:39:07,250 O podem provar algun altre model. 714 00:39:07,250 --> 00:39:09,230 Igual que en lloc de regressió això en pes, 715 00:39:09,230 --> 00:39:12,600 anem van retrocedint en el registre de pes, perquè potser el pes efectiu 716 00:39:12,600 --> 00:39:15,690 en el quilometratge no és d'alguna manera lineal. 717 00:39:15,690 --> 00:39:18,540 >> Això ens va donar un r quadrat de 0,7528. 718 00:39:18,540 --> 00:39:19,610 Així que anem a provar això. 719 00:39:19,610 --> 00:39:21,485 Aquesta vegada anem a fer un diferents variables, també. 720 00:39:21,485 --> 00:39:22,500 Model2. 721 00:39:22,500 --> 00:39:24,800 Així resum, model2. 722 00:39:24,800 --> 00:39:28,200 723 00:39:28,200 --> 00:39:31,390 Molt bé, així que de nou, vam aconseguir la nostra línia de millor ajust aquí. 724 00:39:31,390 --> 00:39:36,160 I aquest temps-- això està dient, bàsicament que cada vegada que 725 00:39:36,160 --> 00:39:38,090 augmentar el pes de un cotxe per un factor de correu 726 00:39:38,090 --> 00:39:40,580 a perdre aquesta quantitat de milles per galó. 727 00:39:40,580 --> 00:39:43,210 728 00:39:43,210 --> 00:39:50,326 >> I així que aquesta vegada el nostre nivell residual error it-- això no importa, de debò. 729 00:39:50,326 --> 00:39:53,540 L'error estàndard residual és bàsicament l'error estàndard 730 00:39:53,540 --> 00:39:57,760 que has deixat després treure la línia de tendència. 731 00:39:57,760 --> 00:40:02,805 I el nostre r quadrat aquí és 0,81, que és una mica millor que el 732 00:40:02,805 --> 00:40:07,640 que teníem abans, 0,52. 733 00:40:07,640 --> 00:40:09,750 >> I així que ara anem a afegir un termini per a aquesta regressió. 734 00:40:09,750 --> 00:40:13,020 Així que anem a van retrocedint milles per galó tant en el registre dels pesos 735 00:40:13,020 --> 00:40:21,130 i, farem, q milles, temps de milla trimestre. 736 00:40:21,130 --> 00:40:26,190 OK, ha de tenir ell-- bé, QseC. 737 00:40:26,190 --> 00:40:26,690 QseC. 738 00:40:26,690 --> 00:40:30,630 739 00:40:30,630 --> 00:40:35,000 Actually-- ho sento, què? 740 00:40:35,000 --> 00:40:37,000 Vaig a trucar a això alguna cosa més a part model2. 741 00:40:37,000 --> 00:40:38,000 Vaig a trucar a aquest MODEL3. 742 00:40:38,000 --> 00:40:40,860 743 00:40:40,860 --> 00:40:42,900 I pel que ara podem fer resum MODEL3. 744 00:40:42,900 --> 00:40:46,850 745 00:40:46,850 --> 00:40:49,100 I així, un cop més, això és, bàsicament, el que es podria esperar. 746 00:40:49,100 --> 00:40:51,750 Vostè té intercepto positiu. 747 00:40:51,750 --> 00:40:54,550 L'eficàcia creixent pes és negatiu. 748 00:40:54,550 --> 00:40:58,490 I l'efectiva augmentant trimestre temps milles 749 00:40:58,490 --> 00:41:02,420 és positiu, però malgrat en menor mesura que el pes. 750 00:41:02,420 --> 00:41:06,010 Ara intuïtivament, pot donar sentit a això dient pensar en els cotxes esportius. 751 00:41:06,010 --> 00:41:08,950 Hi ha una acceleració molt ràpida, A molt poca vegades quart de milla. 752 00:41:08,950 --> 00:41:13,729 També van a utilitzar més gas, mentre que els cotxes més sensibles van 753 00:41:13,729 --> 00:41:16,020 per tenir acceleració més lenta, majors temps de quart de milla, 754 00:41:16,020 --> 00:41:20,890 i utilitzar menys gas ,, pel milles per galó més alts. 755 00:41:20,890 --> 00:41:21,390 Gran. 756 00:41:21,390 --> 00:41:23,431 I pel que ara és el moment de traçar alguna cosa com això. 757 00:41:23,431 --> 00:41:27,810 Així que anem a fer-- tan nu ossos que poden fer plots-- 758 00:41:27,810 --> 00:41:35,280 perquè jo he adjuntat aquesta trama de dades abans-- ens podem fer parcel·les, mpg en pes. 759 00:41:35,280 --> 00:41:38,762 760 00:41:38,762 --> 00:41:39,720 Feu això una mica més gran. 761 00:41:39,720 --> 00:41:55,050 762 00:41:55,050 --> 00:41:57,350 Allà, tenim bàsicament una diagrama de dispersió, però els punts 763 00:41:57,350 --> 00:41:58,690 són una mica difícil de veure en això. 764 00:41:58,690 --> 00:42:04,860 765 00:42:04,860 --> 00:42:10,900 >> No em acord d'improvís el que el sintaxi és per canviar la trama. 766 00:42:10,900 --> 00:42:14,100 Així que suposo que això serà un bon moment perquè aparegui, 767 00:42:14,100 --> 00:42:18,000 hi ha una molt bona ajuda incorporat funció, cotitzacions d'ajuda funcionen nom. 768 00:42:18,000 --> 00:42:21,690 Anem a plantejar bàsicament alguna cosa que t'agradaria. 769 00:42:21,690 --> 00:42:28,010 770 00:42:28,010 --> 00:42:32,730 Crec que vaig a fer això realitat Tipus és igual a p per punts parcel·les. 771 00:42:32,730 --> 00:42:34,369 ¿Això canvia res? 772 00:42:34,369 --> 00:42:35,160 I no, no realment. 773 00:42:35,160 --> 00:42:39,160 774 00:42:39,160 --> 00:42:39,660 Tot bé. 775 00:42:39,660 --> 00:42:46,760 776 00:42:46,760 --> 00:42:49,580 >> Per alguna raó, quan vaig fer això en la meva pròpia ordinador fa un temps, 777 00:42:49,580 --> 00:42:52,080 tots els punts de dispersió eren molt més clara. 778 00:42:52,080 --> 00:43:06,390 779 00:43:06,390 --> 00:43:13,970 De totes maneres, són el tipus de dispersió de visible? 780 00:43:13,970 --> 00:43:15,124 No hi ha ningú allà. 781 00:43:15,124 --> 00:43:16,165 A pocs són, uns pocs allà. 782 00:43:16,165 --> 00:43:18,860 783 00:43:18,860 --> 00:43:21,185 Pot espècie de veure'ls, oi? 784 00:43:21,185 --> 00:43:24,310 Així que si volem afegir una línia de millor ajust a aquesta trama aquí, que és una mica nu 785 00:43:24,310 --> 00:43:29,290 bones-- vull deixar una mica més agradable. 786 00:43:29,290 --> 00:43:38,075 Principal és igual davant pes. 787 00:43:38,075 --> 00:43:46,322 788 00:43:46,322 --> 00:43:49,740 Milles per galó. 789 00:43:49,740 --> 00:43:53,570 Un cop més, es pot veure l'útil arguments opcionals són aquí amb també 790 00:43:53,570 --> 00:43:58,090 no haver de posar les coses en un cert ordre amb els arguments de teclat 791 00:43:58,090 --> 00:44:01,600 quan es té parcel·les, ja que aquestes tenen un munt d'arguments. 792 00:44:01,600 --> 00:44:07,490 >> Xlab igual pes, pes, tones. 793 00:44:07,490 --> 00:44:10,091 794 00:44:10,091 --> 00:44:10,590 Tot bé. 795 00:44:10,590 --> 00:44:17,340 796 00:44:17,340 --> 00:44:21,480 OK, sí, aquest dispositiu és ser una mica molest. 797 00:44:21,480 --> 00:44:30,160 Però es pot veure una espècie d'allà dalt, hi ha un títol del gràfic al lateral. 798 00:44:30,160 --> 00:44:35,260 Per aquí there's-- a la part inferior aquí hi ha etiquetes dels eixos. 799 00:44:35,260 --> 00:44:37,700 No em acord d'improvís el que els comandaments ars-- 800 00:44:37,700 --> 00:44:41,000 el que les funcions són augmentar la mida d'aquestes etiquetes i títols, 801 00:44:41,000 --> 00:44:43,110 però hi són. 802 00:44:43,110 --> 00:44:46,625 >> I pel que si volem afegiu la línia de millor ajust, 803 00:44:46,625 --> 00:44:49,250 podríem fer alguna cosa com-- I tenir la sintaxi escrita aquí. 804 00:44:49,250 --> 00:44:52,280 805 00:44:52,280 --> 00:45:11,130 Així que recordi que nosaltres simplement afegim model va ser mpg, pes, mtcars. 806 00:45:11,130 --> 00:45:16,470 I així, si volia afegir un millor ajust line, el que podia fer un model de la línia b. 807 00:45:16,470 --> 00:45:18,556 I auge, tenim una línia de millor ajust. 808 00:45:18,556 --> 00:45:19,970 És una mica difícil de veure de nou. 809 00:45:19,970 --> 00:45:22,178 Estic bastant això de la dificultats tecnològiques. 810 00:45:22,178 --> 00:45:25,230 Però s'executa bàsicament la part superior esquerra a la inferior dreta. 811 00:45:25,230 --> 00:45:27,550 >> I si l'escala fos més gran, es podia veure 812 00:45:27,550 --> 00:45:31,260 que la intersecció és el que pugui trobar des de les estadístiques de resum 813 00:45:31,260 --> 00:45:34,790 si escriu model de resum. 814 00:45:34,790 --> 00:45:40,130 OK, així que espero que tothom té una mena sentit del que 815 00:45:40,130 --> 00:45:42,030 R és, el que és bo per a. 816 00:45:42,030 --> 00:45:45,520 Vostè pot fer molt millor que les parcel·les això en el seu propi temps, si ho desitja. 817 00:45:45,520 --> 00:45:50,100 818 00:45:50,100 --> 00:45:53,950 >> Així que la interfície de la funció externa. 819 00:45:53,950 --> 00:46:00,330 Això és una cosa que no sol ser cobert de conferències introductòries 820 00:46:00,330 --> 00:46:03,560 ni res d'introducció per a r. 821 00:46:03,560 --> 00:46:05,584 No és probable que necessitaràs. 822 00:46:05,584 --> 00:46:08,000 No obstant això, em va semblar útil en meus propis projectes en el passat. 823 00:46:08,000 --> 00:46:10,984 I no hi ha bona tutorial per a això en línia. 824 00:46:10,984 --> 00:46:12,900 Així que només vaig a tots vostès s'afanyi a través d'aquest 825 00:46:12,900 --> 00:46:16,606 i després vostè és lliure de marxar. 826 00:46:16,606 --> 00:46:18,480 I així l'estranger interfície de la funció és el que 827 00:46:18,480 --> 00:46:23,130 que pot utilitzar per trucar a veure funcions amb una R. Internament, 828 00:46:23,130 --> 00:46:29,850 R es basa en l'aritmètica de C. R és només 64 bits aritmètica de punt flotant de C, 829 00:46:29,850 --> 00:46:32,852 que és de tipus doble [inaudible]. 830 00:46:32,852 --> 00:46:35,060 I és possible que vulgueu fer això per un munt de raons. 831 00:46:35,060 --> 00:46:39,250 D'una banda, R és interpretada, és No compilat a codi màquina. 832 00:46:39,250 --> 00:46:42,170 Així que vostè pot reescriure la seva bucles interns en C i després arribar 833 00:46:42,170 --> 00:46:45,920 l'avantatge d'utilitzar R. Com que és una mica més còmode que C. 834 00:46:45,920 --> 00:46:48,899 Té millor gràfica instal·lacions i altres coses. 835 00:46:48,899 --> 00:46:51,690 I sense deixar de ser capaç d'arribar la velocitat màxima dels bucles interns, 836 00:46:51,690 --> 00:46:53,650 que és on realment ho necessiten. 837 00:46:53,650 --> 00:46:56,330 >> La reutilització de llibreries C existents, això també és important. 838 00:46:56,330 --> 00:47:00,320 Si vostè té alguna biblioteca C per igual, No sé, transformades de Fourier, 839 00:47:00,320 --> 00:47:05,190 o alguns molt Arcaic procediment utilitzat estadístiques 840 00:47:05,190 --> 00:47:09,470 a l'escola d'astrofísica d'energia o alguna cosa així, no ho sé. 841 00:47:09,470 --> 00:47:13,058 Alta astrofísica energia no és ni tan sols un pensament, crec. 842 00:47:13,058 --> 00:47:16,480 Però vostè pot fer que en lloc de tenir escriure un port R nativa d'ells. 843 00:47:16,480 --> 00:47:22,725 I en ell-- i una altra, com si buscar a la majoria de les biblioteques per defecte de R, 844 00:47:22,725 --> 00:47:25,600 a la part interna, les parts internes són utilitzarà la funció estrangera 845 00:47:25,600 --> 00:47:26,724 interfície molt àmpliament. 846 00:47:26,724 --> 00:47:31,630 Van a tenir coses com Fourier transforma o computació de correlació 847 00:47:31,630 --> 00:47:34,890 coeficients escrits en C, i que van a només hi ha embolcalls R al voltant d'ells. 848 00:47:34,890 --> 00:47:38,230 La interfície és una mica difícil. penso 849 00:47:38,230 --> 00:47:43,750 seva dificultat és exagerada en una Moltes de les instruccions que trobaràs. 850 00:47:43,750 --> 00:47:46,200 Però, però, és una mica confús. 851 00:47:46,200 --> 00:47:48,650 I jo no he estat capaç de trobar un bon tutorial per a això, 852 00:47:48,650 --> 00:47:51,980 així que això és ara. 853 00:47:51,980 --> 00:47:55,360 Un cop més, tot aquest segment és més per a la posterior consulta. 854 00:47:55,360 --> 00:47:57,687 No et preocupis per la còpia tot fins ara. 855 00:47:57,687 --> 00:48:00,020 Així que les següents instruccions són per a sistemes tipus Unix, 856 00:48:00,020 --> 00:48:05,150 Linux, BSD, OS X. No ho sé com funciona en Windows, 857 00:48:05,150 --> 00:48:08,280 però per favor, simplement no fer la seva projecte final en Windows. 858 00:48:08,280 --> 00:48:10,790 859 00:48:10,790 --> 00:48:12,460 Segur que no vol. 860 00:48:12,460 --> 00:48:14,770 Unix és molt millor conjunt per a la programació casual. 861 00:48:14,770 --> 00:48:19,320 862 00:48:19,320 --> 00:48:21,390 Així que, bàsicament estrangera interfície de la funció. 863 00:48:21,390 --> 00:48:24,420 Si voleu escriure un C les per al seu ús amb R, 864 00:48:24,420 --> 00:48:27,250 ha de prendre tot el arguments com punters. 865 00:48:27,250 --> 00:48:30,666 >> Així que per a valors individuals, aquesta vol dir que està assenyalant el valor. 866 00:48:30,666 --> 00:48:33,040 Per a les matrius, aquest és un punter al primer element, el qual 867 00:48:33,040 --> 00:48:36,750 és el que els noms de matriu que realment signifiquen. 868 00:48:36,750 --> 00:48:40,140 Un cop més, això és una cosa que ha de tenir bastant totalment després de p estableix cinc. 869 00:48:40,140 --> 00:48:43,334 Noms de matriu són només punters al primer element, 870 00:48:43,334 --> 00:48:44,750 El tipus de punt flotant és doble. 871 00:48:44,750 --> 00:48:47,310 I la seva funció té que tornarà buida. 872 00:48:47,310 --> 00:48:50,810 L'única manera en què pot En realitat el que va passar dir-li R 873 00:48:50,810 --> 00:48:54,410 és mitjançant la modificació de la memòria que R va donar a ella a través de la funció estrangera 874 00:48:54,410 --> 00:48:54,910 interfície. 875 00:48:54,910 --> 00:48:58,180 876 00:48:58,180 --> 00:49:00,127 >> Així que he escrit aquest exemple d'això, es tracta de 877 00:49:00,127 --> 00:49:02,460 una funció que calcula ús punts producte de dos vectors. 878 00:49:02,460 --> 00:49:05,060 Es necessiten dos arguments, vec1, vec2, que són els propis vectors, 879 00:49:05,060 --> 00:49:06,934 i després n, que és una longitud, perquè, de nou, 880 00:49:06,934 --> 00:49:12,630 R ha construït al [inaudible] per esbrinar la longitud dels vectors, però C no. 881 00:49:12,630 --> 00:49:16,182 En C, els vectors és una arbitrària porció delimitada de memòria. 882 00:49:16,182 --> 00:49:17,890 Així que la forma en què pot calcular productes escalars 883 00:49:17,890 --> 00:49:23,470 s'acaba d'establir aquest paràmetre de sortida a zero i després recórrer 884 00:49:23,470 --> 00:49:28,760 d'1 a protagonitzar n, perquè n és un punter a la longitud, 885 00:49:28,760 --> 00:49:32,929 només ha d'afegir alguna cosa per això paràmetre. 886 00:49:32,929 --> 00:49:34,970 I pot ser una bona pràctica si vas a fer 887 00:49:34,970 --> 00:49:37,270 això a escriure dues funcions C separades. 888 00:49:37,270 --> 00:49:41,970 Un d'ells has-- Un d'ells només pren els arguments i els tipus 889 00:49:41,970 --> 00:49:43,970 que tindrien ordinàriament en C. 890 00:49:43,970 --> 00:49:47,780 >> Pel que pren una matriu arguments com punters. 891 00:49:47,780 --> 00:49:57,090 Però els arguments de valor únic com n, només es necessita com a valors per còpia, 892 00:49:57,090 --> 00:49:57,917 sense punters. 893 00:49:57,917 --> 00:49:59,750 I després no ho fa [Inaudible] a terme punter. 894 00:49:59,750 --> 00:50:01,290 I llavors vostè pot tenir una diferent, bàsicament, 895 00:50:01,290 --> 00:50:03,623 funció de contenidor que, bàsicament, maneja els requisits 896 00:50:03,623 --> 00:50:07,740 de la funció estrangera interfície per a vostè. 897 00:50:07,740 --> 00:50:11,840 >> La forma en què vostè diu això en R és, un cop Té la funció del seu escrit en C, 898 00:50:11,840 --> 00:50:17,770 escriu R shlib cmd, R comandament de biblioteca compartida, 899 00:50:17,770 --> 00:50:20,110 foo punt c, o el que sigui el nom de fitxer és, 900 00:50:20,110 --> 00:50:23,020 i el sistema operatiu no shell a la terminal R. 901 00:50:23,020 --> 00:50:25,200 I això crearà un biblioteca anomenada foo dot així. 902 00:50:25,200 --> 00:50:28,180 I llavors vostè pot carregar en nostre script o interactivament 903 00:50:28,180 --> 00:50:32,310 amb comandament de càrrega de punt din. 904 00:50:32,310 --> 00:50:35,720 A continuació, hi ha una funció en R anomenat c punt. 905 00:50:35,720 --> 00:50:39,310 >> Això pren arguments que són primer el nom de la funció en C 906 00:50:39,310 --> 00:50:40,970 que voleu marcar. 907 00:50:40,970 --> 00:50:43,920 I llavors tots els paràmetres a aquesta funció, 908 00:50:43,920 --> 00:50:45,420 que han d'estar en l'ordre correcte. 909 00:50:45,420 --> 00:50:48,580 Vostè ha de fer servir aquest tipus funcions de coerció com sencer, com 910 00:50:48,580 --> 00:50:52,050 doble, com el caràcter, i com lògic. 911 00:50:52,050 --> 00:50:54,710 I després, quan es torna el llista, que al seu torn és només 912 00:50:54,710 --> 00:50:57,550 una matriu associada de la noms dels paràmetres i els valors 913 00:50:57,550 --> 00:51:00,950 després de la funció s'ha executat. 914 00:51:00,950 --> 00:51:08,520 >> Així que en aquest cas, perquè prod punt té arguments vec1, vec2 i int n, n out. 915 00:51:08,520 --> 00:51:11,980 Posar els punts c tenim prod punt, el nom de la funció 916 00:51:11,980 --> 00:51:16,250 estem trucant, vec1, vec2, tipus coaccionar. 917 00:51:16,250 --> 00:51:20,060 La longitud de qualsevol de vector, Acabo vaig triar vec1 arbitràriament. 918 00:51:20,060 --> 00:51:25,479 Seria més robust dir s Longitud min sencer de vec1, longitud vec2. 919 00:51:25,479 --> 00:51:27,520 Llavors, just quan el doble zero, perquè no ho fem realitat 920 00:51:27,520 --> 00:51:29,644 cuidar el que entra a la terme paràmetre perquè som 921 00:51:29,644 --> 00:51:32,270 posant-lo a zero de totes maneres. 922 00:51:32,270 --> 00:51:37,560 >> I a continuació, els resultats seran un array gran associat de bàsicament 923 00:51:37,560 --> 00:51:42,090 vec1 és el que sigui, vec2 és el que sigui. 924 00:51:42,090 --> 00:51:44,330 Però ens interessa a terme, pel que podem treure això. 925 00:51:44,330 --> 00:51:47,780 Això és de nou, un exemple molt joguina d'una interfície de la funció externa. 926 00:51:47,780 --> 00:51:54,160 Però si vostè ha de calcular dot productes de vectors massius en bucles, 927 00:51:54,160 --> 00:51:56,960 o si té a veure alguna cosa més en un bucle, 928 00:51:56,960 --> 00:51:59,850 i no vol dependre de R, que té una mica de sobrecàrrega 929 00:51:59,850 --> 00:52:02,830 construït, això pot ser útil. 930 00:52:02,830 --> 00:52:05,870 >> Un cop més, això no és generalment un tema introductori a R. 931 00:52:05,870 --> 00:52:08,571 No està molt ben documentat. 932 00:52:08,571 --> 00:52:11,070 Només estic incloent perquè He trobat que és útil en el passat. 933 00:52:11,070 --> 00:52:13,654 Així, les males pràctiques. 934 00:52:13,654 --> 00:52:15,820 He esmentat que hi ha un per al bucle en la funció. 935 00:52:15,820 --> 00:52:21,150 En general, vostè no deu, en l'idioma, no la fem servir. 936 00:52:21,150 --> 00:52:26,100 Basat en com R implementa iteració internament, pot ser lent. 937 00:52:26,100 --> 00:52:28,540 Acaben també es veuen lletjos. 938 00:52:28,540 --> 00:52:32,410 >> R maneja vectors molt bé, per la moltes vegades no cal utilitzar-lo. 939 00:52:32,410 --> 00:52:35,050 940 00:52:35,050 --> 00:52:38,900 Llavors vostè pot usualment reemplaçar un vector sovint 941 00:52:38,900 --> 00:52:42,490 amb aquestes funcions trucades d'alta funcions d'ordre, Mapa, Reduir, 942 00:52:42,490 --> 00:52:44,404 Troba o filtre. 943 00:52:44,404 --> 00:52:46,320 Vaig a donar alguns exemples del que ells fan. 944 00:52:46,320 --> 00:52:49,957 Mapa és una funció d'ordre superior, ja que pren una funció com a argument. 945 00:52:49,957 --> 00:52:52,290 Així que vostè pot donar-li una funció, vostè pot donar-li una matriu, 946 00:52:52,290 --> 00:52:54,640 i va a aplicar la funció a cada element de la matriu 947 00:52:54,640 --> 00:52:55,681 i tornar la nova matriu. 948 00:52:55,681 --> 00:52:58,035 949 00:52:58,035 --> 00:53:00,160 Reduir, bàsicament li dones és una matriu, que li donen 950 00:53:00,160 --> 00:53:02,930 una funció que pren dos arguments. 951 00:53:02,930 --> 00:53:07,100 S'aplicarà la funció primera, la primera discussió amb algun valor d'arrencada. 952 00:53:07,100 --> 00:53:09,440 Llavors a aquest resultat en el segon. 953 00:53:09,440 --> 00:53:12,590 Llavors a aquest resultat en el tercer, després a aquest resultat en el quart. 954 00:53:12,590 --> 00:53:14,870 I després tornar quan s'arriba al final. 955 00:53:14,870 --> 00:53:17,620 Així, per exemple, si vols calcular la suma de tots els elements 956 00:53:17,620 --> 00:53:23,240 en una matriu, el que es podria anomenar a reduir amb [inaudible] reduir una addició 957 00:53:23,240 --> 00:53:26,620 funció, com func a, b, tornar a més b. 958 00:53:26,620 --> 00:53:28,960 I a continuació, iniciar un valor de 0. 959 00:53:28,960 --> 00:53:32,950 >> I tot això, vostè pot trobar es descriu a la documentació de R, 960 00:53:32,950 --> 00:53:35,720 en qualsevol llibre de text sobre programació funcional. 961 00:53:35,720 --> 00:53:38,330 També hi ha aquesta classe de funcions anomenades funcions s'apliquen, 962 00:53:38,330 --> 00:53:42,807 que jo no-- són una mica difícil d'explicar, 963 00:53:42,807 --> 00:53:45,640 però si ens fixem en [inaudible] reservat que he citat al principi, 964 00:53:45,640 --> 00:53:48,615 ell els explica bastant bé en el seu apèndix sobre la programació R. 965 00:53:48,615 --> 00:53:51,599 966 00:53:51,599 --> 00:53:53,390 Més sobre les pràctiques, afegint als vectors. 967 00:53:53,390 --> 00:53:57,570 968 00:53:57,570 --> 00:53:58,070 Sí? 969 00:53:58,070 --> 00:54:01,651 970 00:54:01,651 --> 00:54:02,900 Crec que hauria de corregir això. 971 00:54:02,900 --> 00:54:07,450 En aquesta primera línia, fletxa vec, aquesta fletxa no hauria d'estar allà. 972 00:54:07,450 --> 00:54:10,920 Podeu assignar a un vector, de nou, per prendre la seva longitud més 1 973 00:54:10,920 --> 00:54:13,220 i l'assignació d'un valor a això. 974 00:54:13,220 --> 00:54:18,970 Que s'estendrà el vector, o pot fer equals vec c, nuevovalor vec. 975 00:54:18,970 --> 00:54:21,540 Un cop més, si s'utilitza C amb un argument com un vector, 976 00:54:21,540 --> 00:54:23,300 la jerarquia resultant s'aplana. 977 00:54:23,300 --> 00:54:27,160 Pel que vostè acaba d'obtenir un vector això es va estendre per 1. 978 00:54:27,160 --> 00:54:30,410 Mai faci això. 979 00:54:30,410 --> 00:54:33,330 >> La raó per la qual no ha de fer això és la següent. 980 00:54:33,330 --> 00:54:37,430 En assignar un vector, que li dóna una certa quantitat de memòria. 981 00:54:37,430 --> 00:54:40,680 Si augmenta aquesta grandària del vector, ha de reassignar el vector 982 00:54:40,680 --> 00:54:43,820 algun altre lloc. 983 00:54:43,820 --> 00:54:46,980 I així reassignació és força car. 984 00:54:46,980 --> 00:54:50,530 No entraré en els detalls de com assignadors de memòria s'implementen 985 00:54:50,530 --> 00:54:57,280 en el nivell del sistema operatiu, però es necessita molt temps 986 00:54:57,280 --> 00:54:58,962 trobar un nou tros de memòria. 987 00:54:58,962 --> 00:55:00,920 I també, si vostè és re-assignació de lots i lots 988 00:55:00,920 --> 00:55:03,500 de forma progressiva més gran trossos, que acaben 989 00:55:03,500 --> 00:55:06,420 amb alguna cosa que es diu fragmentació de la memòria, 990 00:55:06,420 --> 00:55:09,390 on la memòria disponible és dividit en un munt de petits blocs 991 00:55:09,390 --> 00:55:11,500 en el punt de vista assignadors de memòria. 992 00:55:11,500 --> 00:55:15,340 I el que és més i més difícil per trobar la memòria per a altres coses. 993 00:55:15,340 --> 00:55:19,455 Així que en lloc, si el que necessita fer això, si vostè necessita per fer créixer un vector d'un extrem 994 00:55:19,455 --> 00:55:24,240 a la següent, en lloc d'afegir-hi constantment, ha de pre-assignar. 995 00:55:24,240 --> 00:55:29,310 Fletxa Vec, longitud del vector és igual a 1.000, o el que sigui. 996 00:55:29,310 --> 00:55:33,200 >> I a continuació, pots assignar a del vector de valors d'un sol 997 00:55:33,200 --> 00:55:36,000 un temps després que ha assignat una vegada. 998 00:55:36,000 --> 00:55:40,140 Em vaig trobar amb això, de nou, el meu treball d'estiu quan estava escrivint NRA diferencial 999 00:55:40,140 --> 00:55:42,120 resolució d'equacions. 1000 00:55:42,120 --> 00:55:43,180 No simbòlica numèrica. 1001 00:55:43,180 --> 00:55:49,290 La idea és que una vegada que tens un valor per a la seva solució, 1002 00:55:49,290 --> 00:55:51,240 utilitza que per calcular la següent. 1003 00:55:51,240 --> 00:55:53,700 Així que la meva natural, ingenu impuls va ser dir OK, 1004 00:55:53,700 --> 00:55:56,930 així que vaig a començar amb un vector això és un valor substancial. 1005 00:55:56,930 --> 00:56:01,260 Calcular a partir que el següent valor que va en la meva solució vectorial, 1006 00:56:01,260 --> 00:56:02,630 i adjuntar dita. 1007 00:56:02,630 --> 00:56:05,290 >> Crear alguna cosa més, annexar això. 1008 00:56:05,290 --> 00:56:08,120 Va ser molt, molt lentament. 1009 00:56:08,120 --> 00:56:11,540 I una vegada que em vaig adonar d'això i vaig canviar el meu sistema 1010 00:56:11,540 --> 00:56:16,020 afegint a partir d'aquest vector igual que entre 10.000 i 100.000 vegades, 1011 00:56:16,020 --> 00:56:18,910 tot just preassignació d'un vector i només córrer amb això. 1012 00:56:18,910 --> 00:56:22,100 Tinc més de 1.000 vegades la velocitat a dalt. 1013 00:56:22,100 --> 00:56:26,280 Així que aquesta és una molt comuna trampa per a la programació R. 1014 00:56:26,280 --> 00:56:31,560 Si vostè necessita per construir un vector peça per peça, abans d'assignar la mateixa. 1015 00:56:31,560 --> 00:56:35,360 1016 00:56:35,360 --> 00:56:40,240 >> Un altre viatge comú up-- aquesta és la meva última diapositiva, no worry-- és el maneig d'errors. 1017 00:56:40,240 --> 00:56:42,890 R, per ser franc, no realment fer això molt bé. 1018 00:56:42,890 --> 00:56:45,010 Hi ha una gran quantitat de problemes que poden sorgir. 1019 00:56:45,010 --> 00:56:48,360 Per exemple, si vostè aconsegueix un array o un vector d'una funció 1020 00:56:48,360 --> 00:56:52,377 que estaves esperant un sol valor de venir de, o viceversa, 1021 00:56:52,377 --> 00:56:55,460 i que passi això en una funció que Vostè va escriure esperant un sol valor, 1022 00:56:55,460 --> 00:56:57,270 que pot ser un problema. 1023 00:56:57,270 --> 00:57:01,440 >> Certes funcions tornar null com ho fan, per exemple, 1024 00:57:01,440 --> 00:57:05,560 lectura d'una clau inexistent en una llista. 1025 00:57:05,560 --> 00:57:08,527 Però nul·la no és com C on si intenta llegir 1026 00:57:08,527 --> 00:57:11,360 d'un vell punter, [inaudible] a punter nul, només SEG falles 1027 00:57:11,360 --> 00:57:14,109 i si estàs en el depurador es et diu exactament on es troba. 1028 00:57:14,109 --> 00:57:17,080 1029 00:57:17,080 --> 00:57:20,772 En el seu lloc, serà nul·la fer-- funcions va a fer coses impredictibles 1030 00:57:20,772 --> 00:57:21,730 si són nuls mà. 1031 00:57:21,730 --> 00:57:24,575 Igual que si vostè està entregat max nul, et donarà infinit negatiu. 1032 00:57:24,575 --> 00:57:27,230 1033 00:57:27,230 --> 00:57:28,190 I així, si. 1034 00:57:28,190 --> 00:57:30,880 1035 00:57:30,880 --> 00:57:32,630 I així va succeir això a mi una vegada quan vaig tenir 1036 00:57:32,630 --> 00:57:34,771 canviat un munt de camps en la meva estructura de llista 1037 00:57:34,771 --> 00:57:37,520 un cop sense canviar a una altra banda quan estava llegint d'ells. 1038 00:57:37,520 --> 00:57:40,670 I després vaig rebre tota mena d'atzar resultats infinit apareixent 1039 00:57:40,670 --> 00:57:43,080 i jo no sabia d'on venien. 1040 00:57:43,080 --> 00:57:45,310 I, per desgràcia, no hi ha hi ha manera estricte reals R 1041 00:57:45,310 --> 00:57:48,940 on es pot dir si alguna cosa sembla que podria ser un error, 1042 00:57:48,940 --> 00:57:51,960 simplement parar allà, així que puc ser disciplinat i arreglar això. 1043 00:57:51,960 --> 00:57:55,282 1044 00:57:55,282 --> 00:57:57,240 No obstant això, hi ha alguna cosa anomenat parada si no. 1045 00:57:57,240 --> 00:58:00,480 Això és equivalent a afirmar de C, si vostè ha parlat d'això. 1046 00:58:00,480 --> 00:58:02,690 No crec que C afirmen és un tema de la conferència, 1047 00:58:02,690 --> 00:58:06,370 però el seu cap de secció podria haver anat per sobre. 1048 00:58:06,370 --> 00:58:10,393 I parar si no bàsicament pren cap predicat, per la qual cosa qualsevol declaració que 1049 00:58:10,393 --> 00:58:11,824 pot ser veritable o falsa. 1050 00:58:11,824 --> 00:58:13,490 I si és falsa, que s'aturi el seu programa. 1051 00:58:13,490 --> 00:58:18,260 Li diu exactament el que la línia eren i quin estat fallit. 1052 00:58:18,260 --> 00:58:21,910 >> I això molt útil, per exemple, comprovació de seny, entrades de funció. 1053 00:58:21,910 --> 00:58:25,110 Així que si vostè té una funció i espera, per exemple, 1054 00:58:25,110 --> 00:58:29,640 si vostè em ha de donar una data, que vull les dates siguin només un vector de longitud 1 1055 00:58:29,640 --> 00:58:31,735 i en algun lloc entre l'1 i 31. 1056 00:58:31,735 --> 00:58:34,420 1057 00:58:34,420 --> 00:58:36,170 I si no, ho sé alguna cosa ha anat malament. 1058 00:58:36,170 --> 00:58:40,280 I decideixo parar allà abans d'això té cop a l'atzar sobre els efectes amb el codi de 1059 00:58:40,280 --> 00:58:44,190 que és més difícil de rastrejar a través. 1060 00:58:44,190 --> 00:58:47,170 Així que aquesta és una de les possibles utilitzar per a la parada si no. 1061 00:58:47,170 --> 00:58:48,660 >> De totes maneres, a D'acord. 1062 00:58:48,660 --> 00:58:49,690 Així que aquest és el final. 1063 00:58:49,690 --> 00:58:51,290 Moltes gràcies per haver vingut. 1064 00:58:51,290 --> 00:58:53,710 Jo sóc un aficionat en això. 1065 00:58:53,710 --> 00:58:57,270 Així que ho sento si estàs avorrit o confós o el que sigui. 1066 00:58:57,270 --> 00:59:01,670 Estic feliç de tenir preguntes per correu electrònic en connorharris@college.harvard.edu. 1067 00:59:01,670 --> 00:59:07,230 Això va també per a tothom veient això en directe o després. 1068 00:59:07,230 --> 00:59:10,190 També, encara que no estic 1 TF, també sóc molt 1069 00:59:10,190 --> 00:59:13,900 disposat a servir com un oficial assessor per a qualsevol persona que és 1070 00:59:13,900 --> 00:59:15,460 utilitzant R en un projecte final. 1071 00:59:15,460 --> 00:59:19,900 >> Si desitja que, a continuació, només parlar amb el seu TF 1072 00:59:19,900 --> 00:59:23,750 i després em escrigui un correu electrònic per Sé el que estàs treballant 1073 00:59:23,750 --> 00:59:26,680 i perquè pugui configurar reunió vegades amb vostè si vostè vol. 1074 00:59:26,680 --> 00:59:27,990 Així que de nou, moltes gràcies. 1075 00:59:27,990 --> 00:59:28,960 Espero que t'hagi agradat. 1076 00:59:28,960 --> 00:59:29,450 >> AUDIÈNCIA: [inaudible]. 1077 00:59:29,450 --> 00:59:30,617 >> CONNER HARRIS: Per descomptat. 1078 00:59:30,617 --> 00:59:34,910 >> AUDIÈNCIA: Quina classe de projecte seria un estudiant CS utilitzar R per? 1079 00:59:34,910 --> 00:59:37,427 1080 00:59:37,427 --> 00:59:40,510 CONNER HARRIS: Així que si vostè no està fas cosa que és purament en la mineria de dades, 1081 00:59:40,510 --> 00:59:43,790 per exemple, i hi ha un munt de coses 1082 00:59:43,790 --> 00:59:46,692 vostè podria fer amb aquest amb les dades mineria i aprenentatge automàtic. 1083 00:59:46,692 --> 00:59:48,900 És possible que vulgueu utilitzar R per un component d'alguna cosa. 1084 00:59:48,900 --> 00:59:52,022 Em vaig criar, al principi, l'exemple de si vostè està escrivint una pàgina web 1085 00:59:52,022 --> 00:59:54,730 i desitja executar automatitzat anàlisi estadística del seu servidor 1086 00:59:54,730 --> 00:59:57,990 registres en un cert temps cada dia, això podria ser una cosa que és 1087 00:59:57,990 --> 01:00:01,260 molt fàcil de fer en tan sols una breu R script que pot programar 1088 01:00:01,260 --> 01:00:04,200 per a executar cada nit, per exemple. 1089 01:00:04,200 --> 01:00:06,550 >> I estic segur que, si no hi ha cap raó per la qual hauria 1090 01:00:06,550 --> 01:00:11,520 vull estadístiques o capacitats gràfiques i tenir aquesta carrera automàticament en lloc 1091 01:00:11,520 --> 01:00:13,790 d'haver de interactuar amb les coses en Excel, 1092 01:00:13,790 --> 01:00:16,750 per exemple, això és una cosa és possible que vulgueu utilitzar R per. 1093 01:00:16,750 --> 01:00:21,190 Així que més preguntes abans d'anar-me'n? 1094 01:00:21,190 --> 01:00:21,690 No? 1095 01:00:21,690 --> 01:00:24,960 Molt bé, bé, de nou, gràcies gràcies per venir. 1096 01:00:24,960 --> 01:00:29,417