CONNOR HARRIS: Encara em pensar en algun vídeo emocionant produït per una consultoria professional que utilitza R molt en el seu treball. NARRADOR: Què hi ha darrere de les estadístiques, les anàlisis i les visualitzacions científics de dades més brillants d'avui i els líders empresarials es basen en per prendre decisions de gran abast? No sempre es pot veure. Però hi és. Es diu R, de codi obert r-- la llenguatge de programació estadística que els experts en dades del món sobre l'ús de tot el de cartografia àmplia socials i tendències de màrqueting en línia al desenvolupament dels sectors financer i el clima models que ajuden a impulsar les nostres economies i comunitats. Però, què és exactament R i on es va iniciar R? Bé originalment, R va començar aquí amb dos professors que volia una millor estadística plataforma per als seus estudiants. Així que van crear un sol modelades després que el llenguatge estadístic S. Ells, juntament amb molts altres, mantenen treballant i fent servir R, la creació d'eines per a la I i la recerca noves aplicacions per a R cada dia. Gràcies a això és esforç de la comunitat en tot el món, R va seguir creixent amb milers de les biblioteques creades per l'usuari construïdes per millorar la funcionalitat de R i validació de la qualitat de multitud de fonts i el suport de les més reconegudes líders de la indústria en tots els camps que utilitza R. Què és gran, perquè R és el millor en el que fa. Florida experts de forma ràpida i fàcil d'interpretar, interactuar amb, i visualitzar les dades mostrant la seva rapidesa creixent comunitat d'usuaris a tot el món I i veure com codi obert R continua donant forma el futur de l'estadística l'anàlisi i la ciència de dades. CONNOR HARRIS: Molt bé, molt bé. Així que la meva pròpia presentació serà una mica més sobri. No va a implicar molt emocionant música de fons. Però com es va veure en el vídeo, R és una espècie d'un llenguatge de programació de propòsit general. Però va ser creat majorment per al treball estadístic. Així que ha estat dissenyat per a les estadístiques, per a l'anàlisi de dades, per a la mineria de dades. I així es pot veure això en una gran quantitat de les opcions de disseny que els fabricants de R feta. Està dissenyat per a gran part, persones que no són experts en programació, que s'acaba de recollir la programació en el costat perquè puguin fer la seva feina en ciències socials o en les estadístiques o el que sigui. Té un munt de molt diferències importants de C. Però la sintaxi i els paradigmes que utilitza són bàsicament els mateixos. I vostè ha de sentir-se bastant com a casa la dreta del pal. És un llenguatge imperatiu. No et preocupis massa per això si vostè no sap el terme. Però hi ha una distinció entre imperatiu, declarativa, i funcional. Imperatiu només significa que facis declaracions que són bàsicament els ordres. I a continuació, l'intèrpret o el equip els segueix un per un. Es tipus febles, hi ha no hi ha declaracions de tipus en R. I després les línies entre els diferents tipus són una mica més fluix que estan en C, per exemple. I com ja he dit, hi ha molt àmplies instal·lacions per a la seva representació gràfica, per estadística anàlisi, per a la mineria de dades. Tots dos estan integrats en el llenguatge i, com deia el vídeo, milers de biblioteques de tercers que vostè pot descarregar i utilitzar de forma gratuïta amb condicions de llicència molt solts. Així que, en general, m'agradaria recomanar que ens fixem en aquests dos llibres si vostè va a treballar en R. Un d'ells és funcionari principiant de R guiï. Ha mantingut pel desenvolupadors principals de R. Pot descarregar-lo de nou, lliure de cobrar i legalment en aquest vincle existeix. Totes aquestes diapositives es van a anar dalt a l'Internet, a la pàgina web CS50 després d'això es fa. Així que no hi ha necessitat de copiar coses baix frenèticament. L'altre és un llibre de text de Cosma Shalizi, qui és un professor d'estadística a Carnegie Mellon, anomenat Advanced Data Anàlisi d'una Point of View Primària. Això no és principalment un llibre de R. És un llibre d'estadística i és un llibre d'anàlisi de dades. Però és molt accessible a les persones que tenir un mínim de coneixements d'estadístiques. Mai he pres un curs formal. Només sé parts i peces de diverses disciplines afins que he pres cursos a. I jo era capaç d'entendre perfectament bé. Es donen totes les figures en R. Es fan en R i també tenen llistats de codi sota cada figura que et diuen com fer que cada figura amb el codi R. I això és molt útil si vostè està tractant d'emular una figura que es veu en un llibre. I de nou descàrrega gratuïta stat.cmu.edu/cshalizi/ Ho sentim, que ha de ser slash cshalizi titlla. M'asseguraré que corregir això quan les diapositives oficials pugen. / ADAfaEPoV que és només el acrònim del títol del llibre. Així que en general caveats-- R té un munt de possibilitats. Jo només seré capaç de cobrir la superfície d'un munt de coses. També la primera part del seminari serà una cosa així com un bolcat de dades. Estic bastant ho sento per això. Bàsicament, vaig a presentar a un munt de coses la dreta del pal, va el més ràpidament possible. I llavors arribem a la part divertida, la qual és la demo on et puc mostrar tot que hem parlat a la pantalla. I es pot jugar pel seu compte. Així que aquí hi haurà una gran quantitat de material tècnic llançat fins aquí. No et preocupis per la còpia de tot el que cap avall. A causa A, pot obtenir tota la coses en el lloc web CS50 després. And B, no és realment tan important memoritzar això des de les diapositives. És més important que vostè aconsegueix alguna facilitat intuïtiva amb ella i que ve de simplement jugant. Així que per què utilitzar R? Bàsicament, si vostè té un projecte que implica la mineria grans conjunts de dades, les dades visualització, ha d'utilitzar R. Si vostè és fent anàlisis estadístiques complicat, això seria difícil en Excel, per exemple, seria També es good-- també si vostè està fent estadística anàlisi que està automatitzat. Diguem que vostè està mantenint un lloc web. I voleu llegir el registre del servidor tots els dies i compilar alguna llista, com els primers països que seus usuaris estan venint, algunes estadístiques resumides sobre la durada que gasten al seu lloc web o el que sigui. I voleu executar això cada dia. Ara bé, si vostè està fent això en Excel, vostè hauria d'anar al seu registre del servidor, importar que en un Full de càlcul de dades d'Excel, executar totes les anàlisis de forma manual. Amb R, només pot escriure un script. Programar-lo perquè s'executi cada dia del seu sistema operatiu. I llavors totes les nits a les 2:00 del matí, o cada vegada que es programa perquè s'executi, que es veurà a través del seu el tràfic d'Internet per a aquest dia. I després al dia següent, se li tenir aquesta brillant, nou informe o el que sigui amb tota la la informació que va sol·licitar. Així que, bàsicament R és per a Cisco programació en comparació amb l'anàlisi de Cisco. Preliminar es fa. Anem a entrar en les coses reals. Així que hi ha tres reals tipus en l'idioma. Hi ha tipus numèric. Hi ha una mena de diferència entre sencers i punts flotants, però no realment. Hi ha un personatge escriure, que és cordes. I hi ha una lògica escriure, que és Booleans. I vostè pot convertir entre tipus l'ús d'aquestes funcions com numèric, com el caràcter, com lògic. Si crida, per exemple, com numèric en una cadena, que tractarà de llegir aquesta cadena com un nombre, de la mateixa manera que a2i i scanf fan, i C. Si es diu com numèric de vertader o fals que convertirà a 1 o 0. Si diu com el personatge en tot el que va a convertir això en una representació de cadena. I després hi ha els vectors i matrius. Així vectors són bàsicament 1 arrays dimensionals. Són el que anomenem matrius en C. Matrius, 2 matrius dimensionals. I llavors major dimensionals que puguis tenen 3, 4, 5 dimensions o el que sigui de valors numèrics, de cadenes, valors de lògiques. Vostè també té llistes que són una mena de matriu associativa. Vaig a entrar en això una mica. Així que una cosa important que els viatges de les persones en R és que no hi ha , Tipus atòmics purs reals. No hi ha distinció real entre un nombre, com un valor numèric, i una llista de valors numèrics. Els valors numèrics són en realitat la mateix que els vectors de longitud 1. I això té un nombre de implicacions importants. Un, que vol dir que vostè pot fer coses molt fàcilment que involucren com l'addició d'un nombre a un vector. R serà bàsicament la figura el que vol dir amb això. I vaig a arribar a això en un segon. També vol dir que no hi ha manera per al tipus checker-- en la mesura que alguna cosa així existeix en r-- per explicar quan has passat al valor únic quan s'espera una matriu o viceversa. I això pot causar alguna estranya problemes que em vaig trobar quan Jo estava usant R durant la meva feina d'estiu. I no hi ha arranjaments de tipus mixt. Així que no es pot tenir una matriu fos el primers elements és, no sé, la cadena "John" i el segon element és el nombre 42. Si vostè tracta de fer això, llavors obtindrà tot només converteix en una cadena. Així que tenim corda Joan, cadena 42. Sintàctica tan inusuals trets assenyalats- més de R sintaxi és molt similar a C. Hi ha algunes diferències importants. Escriure és molt feble. Així que no hi ha declaracions de variables. Assignació utilitza l'estranya operador d'error de menys de guió. Els comentaris són l'coixinet. Suposo que ara dia en diem hashtag encara que això no és realment no accurate-- la doble barra. Residus modulars són amb %% signes. La divisió sencera està amb% /% que és molt difícil de llegir quan es projecta a la pantalla. Vostè pot obtenir rangs de sencers amb el còlon. Així 2,5 li donarà un vector de tots els números 2 a 5. Les matrius estan indexats d'una sola, que es cargola a molta gent fins si són de més llenguatges de programació típics, com C, on la major part les coses són zero-indexada. Un cop més, aquí és on l'herència de R com un llenguatge per com no programadors professionals provenen en. Si vostè és un sociòleg o un economista o alguna cosa i que està tractant d'usar R bàsicament com un complement al seu més important treball professional, trobaràs 1 indexar una mica més natural. A causa de començar a comptar a 1 en la vida quotidiana, no 0. Per-bucles, això és similar a el foreach construir en PHP, que vostè aconseguirà aprendre en-- molt aviat. Què és per al valor en el vector i llavors vostè pot fer les coses amb valor. AUDIÈNCIA: Això ve en conferència. CONNOR HARRIS: Oh, això és arribar a la conferència, excel·lent. AUDIÈNCIA: La missió, ¿és suposa assenyalar de dreta a esquerra? CONNOR HARRIS: De dreta a esquerra, si. Vostè pot pensar en ell com el valor en la dreta empès a la variable a l'esquerra. AUDIÈNCIA: OK. CONNOR HARRIS: I finalment sintaxi de la funció és una mica estrany. Vostè té el nom de la funció foo, assignat a aquesta funció de paraules clau, seguit per tots els arguments i després el cos de la funció després d'això. Un cop més aquestes coses poden semblar una mica estrany. Ells es converteixen en segona naturalesa després es treballa amb la llengua una mica. Així vectors, el camí que la construcció d'un vector és que el tipus C, que és una paraula clau, a continuació, tots els nombres que desitja o cadenes o el que sigui. Arguments també ser vectors. Però la matriu resultant s'aplana. Així que no es pot tenir matrius on alguns elements són nombres individuals i alguns elements són propis arranjaments. Així que si vostè tracta de construir un matriu fos el primer element és de 4 i el segon element és el 3,5 matriu que va a acaba d'obtenir una matriu de tres elements, 4,3,5. No poden ser de tipus mixt. Si voleu llegir o escriure fora dels límits d'un vector obtindrà aquest valor anomenat NA que significa un valor perdut. I això està destinat a com estadístiques que estan treballant amb conjunts de dades incompletes. Si s'aplica una funció que se suposa a prendre només un nombre a una matriu a continuació, el que s'obté és, la funció d'assignar sobre la matriu. Així que si la seva funció diguem que pren un nombre i retorna quadrats. Vostè sol·licita que a la matriu 2,3,5 El que rebrà és la matriu 4,9,25. I això és molt útil perquè li significa no ha d'escriure per bucles per fer les coses molt simples, com l'aplicació de una funció per a tots els membres d'un conjunt de dades. Què si vostè està treballant amb un gran conjunts de dades, vostè ha de fer molt. Funcions binàries són entrada aplicada per l'entrada. Vaig a entrar en això. Vostè pot accedir-hi amb matrius o vectors amb claudàtors. Suports Així nom del vector quadrats 1 li donarà el primer element. Nom Vector claudàtors 2 li donarà el segon element. Pot passar d'un vector d'índexs i vostè tornar a sortir, bàsicament, un factor secundari. Així que vostè pot fer vectorial suports Nom C, 2,4 i obtindrà un vector que conté el segon i quart elements de la matriu. I si vols només un Resum estadístic ràpida d'un vector com interquartil rang, mitjana, màxim, el que sigui, pot teclejar Resum nom del vector i treure això. Això no és realment útil en programació, però si estàs jugant voltant dels conjunts de dades, és molt útil. Matrices-- bàsicament matrius de dimensions superiors. Tenen aquesta sintaxi especial notació. Matriu amb una matriu que s'obté ple en-- sento, matriu amb les dades, nombre de files, el nombre de columnes. Quan vostè té algunes dades, omple la matriu bàsicament va de dalt a baix primer. Després d'esquerra a dreta. Així, així. I R ha construït en multiplicacions de matrius, descomposició espectral, diagonalització, un munt de coses. Per major dimensió arrays, per la 3, 4, 5, o el que sigui dimensions es pot fer això. La sintaxi és la matriu és igual a c tènue, a continuació, la llista de les dimensions. Així que si vols una matriu tridimensional 4 amb dimensions de 4, 7, 8, 9, la matriu, tènue és igual a c (4,7,8,9). Per accedir als valors individuals amb els suports primera coma entrada segona entrada. Vostè pot obtenir llesques senceres de files o columnes. Amb aquesta sintaxi és incompleta simplement remar nombre de coma o columna de coma nombre. Així que les llistes són una espècie de matriu associada. Ells tenen la seva pròpia sintaxi aquí. Un cop més no fer frenèticament copiar tot això. Això és només perquè la gent passant pels tobogans més tard tenir tot això en una bona referència. I això es convertirà en un cop molt natural De fet, em passeig per les donem. Així enumera una arrays bàsicament associats. Es pot accedir als valors amb nom de la llista, mostra de dòlar, clau. Així que si la seva llista és el nom foo, llavors vostè pot accedir-hi d'aquesta manera. Vostè pot obtenir un parell clau-valor sencer passant en l'índex entre claudàtors. Si es llegeix des d'una inexistent clau, obtindrà nul·la. No serà error. La cosa és, R farà el que tant amb nul·la, ja que pot. I això pot significar que si estàs no esperant rebre nul·la fora d'alguna llista de lectura, obtindrà alguna errors impredictibles més baix La línia. Això em va passar a mi quan treball d'estiu que estava fent servir R on he canviat la forma d'un cert llista es va definir en un sol lloc però no va canviar més tard en el codi que llegeix els valors de la mateixa. I així, el que va passar va ser que estava llegir valors nuls fora d'aquesta llista, passar-los en funcions, i sent molt confusa quan em van donar tota mena de infinits aleatoris apareixent en aquesta funció. Perquè si s'aplica cert màxim o funcions mínimes en NULL, obtindrà valors infinits a terme. Les trames de dades, són una subclasse de llista. Cada valor és un vector de la mateixa longitud. I es fan servir per a la presentació, bàsicament, taules de dades. Hi ha aquesta sintaxi d'inicialització. Això tot, un cop més, ser molt més clara quan s'arriba a la demo. I el bo de trames de dades és que es pot donar noms a totes les columnes i els noms de totes les files. I pel que fa l'accés ells una mica més amable. També aquesta és la forma en la majoria de les funcions que llegir dades de fulls de càlcul d'Excel o des d'arxius de text, per exemple, llegirà en les seves dades. Ells posen en algun tipus de trama de dades. Així functions-- les funcions la sintaxi és una mica estrany. Una vegada més és el nom de la funció, cedir, aquesta funció de paraules clau i després la llista d'arguments. Així que hi ha algunes coses bones sobre com les funcions treballen aquí. D'una banda, en realitat es pot assignar valors per defecte a certs arguments. Així que es pot dir R1 equals-- es pot dir foo és una funció en què R1 és igual a alguna cosa per defecte si l'usuari especifica sense arguments. Altrament, és el que ell va posar en. I això és molt pràctic perquè moltes de les nostres funcions tenen sovint desenes o centenars d'arguments. Per exemple els que per al traçat gràfics o traçat gràfics de dispersió tenir arguments que controlen tot, des del títol i l'eix etiquetes al color de les línies de regressió. I pel que si vostè no vol perquè la gent especifiquen tots i cada un d'ells centenars d'arguments controlar tots els aspectes de una parcel·la o una regressió o el que sigui, és bo tenir aquests valors predeterminats. I llavors vostè pot realment escriure el que va veure de nou aquí. O trobar un millor exemple. Quan es diu a funcions en realitat es pot anomenar utilitzant els noms d'arguments. Així que aquí està un exemple de el constructor matriu. Pren tres arguments. En general, té dades, que és un vector. Vostè té N files, que és el nombre de files. Tens N cols-- nombre de columnes. La cosa és que si escriu Fila N és igual al que sigui i N és igual a qualsevol col quan que està trucant a aquesta funció, en realitat es pot revertir ells. Així que vostè pot posar primer i la fila N N col segon i que li farà cap diferència. Així que aquesta és una característica poc agradable. Va fer importació i exportació. Això es pot fer, bàsicament. També hi ha instal·lacions per escriure arbitrària R s'oposa a un fitxer binari i després llegir de nou més tard. La qual cosa és molt útil si vostè està fent una gran sessió de R interactiu i el que necessita per salvar coses molt ràpidament. Per defecte R té un directori de treball que els arxius s'escriuen en i llegir de nou des. Es pot veure que amb getwg, canviar-ho amb setdw. Res especialment interessant aquí Així que ara les estadístiques reals stuff-- regressió multilineal. Així la sintaxi habitual és una mica complicat. El model és un gran objecte, bàsicament. Se li assigna a LM, que és una crida a la funció. El primer element, la I x1 titlla, més el que sigui. El meu sintaxi aquí és una mica confús. Estic molt trist, aquest és la forma estàndard que els llibres de ciències de la computació fan això. Però és una mica estrany. Així que, bàsicament, és lm parèntesi, primer punt es variable-- sento, dependent x1 titlla variable més x2 més però molts independents les variables que té. I llavors aquests poden ser tant vectors, tots la mateixa longitud. O poden ser la columna capçaleres en una trama de dades que acaba d'especificar en el segona trama de dades argument. També podeu especificar una fórmula més complexa per la qual cosa no ha de linealment regressió una variable dependent, o un vector en un vector preexistent. Vostè pot fer, per exemple, un component de vector i al quadrat més 1 i que en contra de la regressió log d'algun altre vector. Podeu imprimir resums de la model amb aquesta comanda anomenat summary-- simplement Resum parens model. De nou una altra cosa he d'aclarir. Una altra cosa que aconseguirà corregida quan les diapositives pugen a Internet. Si el que desitja és calcular una correlació simple pot utilitzar la correlació vectorial Febrer 1 vectorial funció bàsica. Mètode per defecte Correlacions de Pearson. Aquests són els estàndards que vostè pot fer. Hi ha també Spearman i Correlacions Kendell que són alguns varietat de correlació ordre de rang. Bé, ells no calculen producte moments entre els mateixos vectors, sinó d'ordres de rang del vector. Vaig a explicar això més endavant. AUDIÈNCIA: Una pregunta ràpida CONNER HARRIS: És clar. AUDIÈNCIA: Així que quan vostè està calculant per a les correlacions simples fan vostè assumeix que hi ha una estadística importància per a la correlació? CONNER HARRIS: No ha de fer-ho. Una pel·lícula és bàsicament una màquina. Prendrà en dues coses i va escopir coeficients per a la línia de millor ajust. També informa estàndard errors en els coeficients. I li dirà, com és el intercepció estadísticament significativa o diferència de 0. És el pendent de la millor ajust de línia estadísticament diferent de zero, etcètera. Per tant, assumeix res, crec que és la millor resposta a la seva pregunta. D'ACORD. Plotting-- de manera que la raó principal que hauria de utilitzar R, com la regressió multilineal. Bàsicament tots els idiomes té alguna facilitat per això. I honestament sintaxi de R com regressió és una mica misteriós. Però traçat és on realment brilla. La funció cavall de batalla és trama i pren dos vectors, x i y. I després les el·lipses es destaca per una molt gran nombre d'arguments opcionals que controlar tot, des de títols de colors de diverses línies o diversos punts, amb el tipus de trama. Vostè pot tenir la dispersió parcel·les o gràfics de línies. [Inaudible] 2 vectors de la mateixa longitud. Pot precedir a això amb adjuntar trama de dades a l'script. I això li permetrà només ha d'utilitzar la columna capçaleres en lloc de vectors separats. Podeu afegir rectes més ajustades i locals corbes de regressió al seu gràfic. Aquestes ordres enumeren aquí, ab línies i línies, per defecte aquests reben escrita en finestres emergents perquè se suposa que utilitzeu R interactiva. Si no és que pugui escriure dos arxius que són en realitat qualsevol format que vulguis. Ho sento, tinc una errada m'acabo de donar compte. Si voleu obrir un altre dispositiu gràfica pot utilitzar aquesta funció anomenada PNG o JPEG o molts altres formats d'imatge. I vostè pot escriure als gràfics qualsevol que sigui el nom del fitxer que especifiqueu. Per cancel·lar la qual vostè ha de servei- Jo no vaig escriure això en el slide-- però hi ha una funció anomenada dev punt que no té arguments. Després hi ha les instal·lacions per al traçat 3D i per al contorn de traçat si vostè vol fer gràfiques de dues variables independents. No entraré en això en aquest moment. Hi ha també alguns són instal·lacions per a l'animació aquests són generalment mantinguts per tercers. He fet animacions amb gràfics de R, però no he utilitzat aquests tercers biblioteques. Així que no puc donar fe del bons que són. El que jo recomano que si vols per fer animacions utilitzant R és que vostè pot escriure a terme tots els marcs per a les animacions i llavors vostè pot utilitzar un tercer program-- partit els típics es diuen FFmpeg o ImageMagick-- a la puntada tots els seus quadres en una sola animació. Així que el temps per a la demostració. Així que si vostè està utilitzant qualsevol Unix com a sistema que és Linux BSD, però que utilitza BSD. OS X obrir una finestra de terminal i tipus R en l'indicatiu. Si vostè té R estudi o similars, que també funciona. Per als usuaris de Windows que ha de ser capaç de trobar R al menú Inici. S'hauria de dir alguna cosa com R x64 3 punts el que sigui. Obriu que fins allà. Així que ara permetin-me obrir una finestra de terminal. Molt bé, la recerca. AUDIÈNCIA: Comando Espacial CONNER HARRIS: Comando Espacial, gràcies. No utilitzo normalment Macs. Terminal, mostren una nova finestra. Nova finestra és la configuració bàsic, R. Així que vostè ha de rebre un missatge de benvinguda, alguna cosa com això. Així que estic fent servir R interactiva. També pot escriure scripts R és clar. Bàsicament els scripts s'executen de la mateixa manera com si estigués assegut davant l'ordinador escrivint en cada línia d'una en una. Així que començarem per fer un vector. Una fletxa C 1, 2. 1, 2, 4. OK, segur. Puc fer que la mida de la font més gran. AUDIÈNCIA: Comando-Plus CONNER HARRIS: Comando-Plus. Comando-Plus. Molt bé, com és això? Bona? D'ACORD. Així que anem a començar per declarar una llista de vectors. Fer un, fletxa, C 1,2,4. Podem veure a. No et preocupis pel suport d'allà. Els parèntesis són així que si vostè imprimir matrius molt llargues, podem on es trobi. Un exemple seria si jo només vull rang 2-200. Si vaig imprimir 01:00 llarga sèrie, els suports són només perquè jo pugui mantenir un registre de quin índex estem en si estic buscant a través d'aquest visualment. Així que de totes maneres, tenim un. Així que li vaig dir abans que les matrius d'interacció molt bé amb, per exemple, operacions unaris els agrada. Llavors, ¿què creus que vaig a aconseguir si introdueixo la més 1? Sí. Bé, ara faré aquesta matriu diferent. Diguem bc 20,40, 80. Així que què et sembla aquesta comanda farà? Afegir els elements. I així que bàsicament això és el que fa. Així que això és bastant convenient. Així que què faig això. c és, diguem, 6 vegades 1 al 10. Llavors, què és el que vull veure continguda, què et sembla? Així que tots els múltiples de sis. Ara, què et sembla passarà si faig això? Vaig a fer això una mica més clar, c, c. Llavors, què passa, oi pensar, si faig això? un plus c. [Inaudible] AUDIÈNCIA: Qualsevol d'un error o només se suma els tres primers elements. CONNER HARRIS: No del tot. Això és el que ens van donar. El que passa és un més curt matriu, un, va aconseguir un cicle. Així que ens van donar 124, 124, 124. Sí. I en el fons, vostè pot veure aquest comportament abans, un plus 1, com una subclasse d'aquest comportament, on la matriu més curta és sols un nombre 1, que és una matriu d'un element. Acabo d'estar dient tot vectorial el temps en lloc de la matriu, perquè això és el que el r documentació té acostumats. És una c hàbit arrelat. OK, i per això ara tenim aquesta matriu. Així que tenim aquesta matriu, c. Podem aconseguir Resum estadístiques sobre c, sumàries c. I això és bo. Així que ara anem a fer algunes coses de la matriu. Diguem que m és una matriu. Anem a fer que un tres per tres un. Així nRows és igual a 3, i és igual a 3 ncols. I per a les dades que anem a fer-- així que el que creu vostè que això va a fer? Correcte, és la següent. És nRow i nColumn. Així que el que he fet és que he declarat una matriu de tres per tres i jo he passat en una sèrie de nou elements. Així que el logaritme de tot el elements u al nou. I tots aquests valors s'omplen el lament array--? AUDIÈNCIA: Aquells són de base 10 registres? CONNER HARRIS: No, de registre és logaritmes naturals, de manera que en base e. Sí, si vostè vol la base 10 log, crec que tindries per registrar el que sigui, dividit per registre 10. I pel que les dades de la [inaudible] només s'omple la matriu, per la qual cosa dalt a baix, després a l'esquerra a la dreta. I si volia fer alguna altra matriu, diguem n és la matriu. Anem a fer, no ho sé, 2 a 13. O vaig a fer alguna cosa més interessant. Faré 2-4. nRow és igual a, diguem, 3. ncol és igual a 4. n. Així que tenim això. I ara si volem multiplicar aquests, faríem vegades n cent per cent, perquè això és n. I tenim productes de matriu. Per cert, ¿veus com quan em vaig declarar n, del 2 al 4 vector va aconseguir cicla fins que omplia tots els n? Si volies prendre la descomposició de valor propi, això és una cosa que podem fer amb molta facilitat. Podem fer Eigen n. I pel que aquesta és la nostra primera trobar-se amb una llista. Així eigen n és una llista amb dues claus. Valors, que és aquesta matriu aquí. I vectors, que és aquesta matriu aquí. Així que si vostè vol extreure, per exemple, aquesta tercera columna de la matriu de vectors propis, perquè els vectors propis són vectors columna. Així que podem fer eigen vec n signe de dòlar vectors, coma 3, de [inaudible]. Vec. És que, com es podria esperar. Llavors torneu a dir n vegades vegades cent vec. Així que el resultat aquí sense dubte sembla si prenem el tercer valor propi aquí, que es correspon amb la tercera vector propi. Simplement multiplica tot en aquest vector propi, components savi, pel valor propi. I això és el que es podria esperar, perquè això és el que són els valors propis. Algú aquí no pres àlgebra lineal? Un parell de persones, a D'acord. Només cal activar el seu cervell fos una mica. I de fet, si prenem eigen n valors de signe de dòlar 3 vegades vec, així aconseguir el mateix. És un format diferent com una fila vector en comptes d'un vector columna, però la gran cosa. I així, aquests són bàsicament el bon coses que podem fer amb matrius, llistes demostrades. He demostrar el bon coses sobre les funcions també. Així que anem a dir-- [inaudible] funció, la crida de let que func contra la funció de n n squared-- En realitat, això no és realment el millor. a, b, un quadrat més b. Així que una cosa sobre funcions, de nou, és que no necessiten declaracions explícites de retorn. Així que vostè pot sol-- la última declaració avaluat serà la declaració retornat, o el valor retornat. Així que en aquest cas, només estem avaluant una sentència, un plus quadrat b. Aquest serà el valor de retorn per defecte. Mai està de més posar en retornar valors de forma explícita, especialment si vostè està tractant amb un la funció de la lògica molt complicat fluir. Però vostè no els necessita. Així que ara podem fer func 5, 1, i això és bàsicament el que s'espera. Una altra cosa que podem fer, en realitat podem fer func b és igual a 1, a és igual a 5. Així que si especifiquem quin nombre aquí, que aquest argument al qual l'argument en la funció, podem donar la volta al voltant aquests valors on vulguem. AUDIÈNCIA: Hi ha una raó escriure amb la b iguals en lloc de només fer servir els números i la coma? CONNER HARRIS: Sí, en general fer això si té funcions amb una gran quantitat d'arguments. Això podria sovint ser com banderes que només havia que voleu utilitzar en rares ocasions. I d'aquesta manera vostè pot only-- vostè pot referir-se als arguments específics que voleu utilitzar valors no predeterminats per, i vostè no ha d'escriure un munt de banderes és igual a fals després d'ells. O puc escriure això de nou amb un valor per defecte com b és igual a 2. I llavors jo podria fer f func, Vaig a fer 4, 1 aquest temps. I el 17, que és 4 al quadrat més 1, com es podria esperar. Però podria també acaba trucar a aquest amb func 4, i aconseguiré 18, perquè No específic b. Així b obté el valor per defecte de 2. OK, així que ara si ets següent juntament amb la demo, escrigui aquesta línia en la seva comanda impulsar i veure què surt. En realitat, no ho facis. Escrigui això. Vostè ha d'obtenir alguna cosa com això. Així mtcars està construït en les dades establir per a aquesta demostració propòsits que ve con-- que ve en defecte amb la seva distribució de r. Aquest és un recull de les estadístiques de un nombre de la revista Motor Trend 1974 en un nombre de diferents models d'automòbils. Així que hi ha milles per galó, cylinders-- M'oblido del que disp és-- cavalls de força. Probablement. Si vostè acaba de cotxes Google MT, llavors un dels primers resultats serà a partir de la documentació oficial r i explicarà tots aquests camps de dades. Així pes és-- pes és pes del cotxe en tones. Q seg és el moment de quart de milla. Així que ara podem fer algunes coses divertides sobre els cotxes MT és un camp de dades. Pel que podem fer les coses com els noms de fila, cotxes mt. I aquesta és una llista de totes les files de el conjunt de dades que són noms de cotxes. Podem fer COLNAMES, automòbils mt això. Si ho fas cotxes mt, subíndex numèric, com 2. tenim la segona columna de això, que seria cilindres. AUDIÈNCIA: Què vas fer? CONNER HARRIS: Jo teclejar MT actuacions, suports i, que em va donar la segona columna de cotxes mt. O si volem una fila, puc escriure mtcars coma 2, per exemple. Una altra 2 ronda coma, així. I això va en la seva fila. Aquesta aquí només et dóna una columna, però com un vector columna. M'acabo de donar compte ara es va oblidar de demostrar algunes coses interessants sobre vectors que es pot veure amb els índexs. Així que permetin-me fer això ara mateix. Així que farem c gets-- posar això en pause-- 2 cops 1 a 10. Així que c és només serà el vector de 2 a 20. Puc prendre elements d'aquest tipus, c2. Em pot passar en un vector d'aquesta manera, em C-- deixi utilitzar un nom diferent que c, com c vec. Bàsicament, estic fent això perquè no ho entenc confós entre c com funció de la construcció del vector, i després c com un nom de variable. Suports Vec c 4, 5, 7. Això em va sortir de la cambra, cinquè, i set elements de la matriu. Jo puc fer vec, posar en un negatiu índex, com a negatiu 4. Això Treurem això amb el quart element eliminat. Llavors, si jo volia fer rodanxes, Jo puc fer vec 2 a 6. 2 punts 6 és més que una altra vector, que és 2, 3, 4, 5, 6. Escup això. Així que de totes maneres, de nou als cotxes mt. Així que anem a fer algunes regressions. Diguem model gets-- anem linealment regress-- No sé. En primer lloc farem adjuntar mtcars, és clar. Així que [inaudible] model lm, anem van retrocedint milles per galó en pes titlla. I després trama de dades és mtcars. Així model de resum. OK, així que això sembla una mica complicat. Però, bàsicament, ja que si ens tractar d'expressar milles per galó com una funció lineal de pes, llavors tenim aquesta línia aquí, que intercepta a 37.28. 37.28 serien les milles teòriques per galó d'un cotxe que pesa zero. I després per cada tona addicional, vostè colpeja a unes cinc milles per galó fora d'això. Tots dos d'aquests coeficients que pot veure, errors típics allà. I són molt estadísticament significativa. Així que podem estar molt segurs de 1 e 10 al negatiu 10. Així gener vegades alguna cosa al negatiu 10, que si fas un cotxe més pesat, tindrà pitjors milles per galó. O podem provar algun altre model. Igual que en lloc de regressió això en pes, anem van retrocedint en el registre de pes, perquè potser el pes efectiu en el quilometratge no és d'alguna manera lineal. Això ens va donar un r quadrat de 0,7528. Així que anem a provar això. Aquesta vegada anem a fer un diferents variables, també. Model2. Així resum, model2. Molt bé, així que de nou, vam aconseguir la nostra línia de millor ajust aquí. I aquest temps-- això està dient, bàsicament que cada vegada que augmentar el pes de un cotxe per un factor de correu a perdre aquesta quantitat de milles per galó. I així que aquesta vegada el nostre nivell residual error it-- això no importa, de debò. L'error estàndard residual és bàsicament l'error estàndard que has deixat després treure la línia de tendència. I el nostre r quadrat aquí és 0,81, que és una mica millor que el que teníem abans, 0,52. I així que ara anem a afegir un termini per a aquesta regressió. Així que anem a van retrocedint milles per galó tant en el registre dels pesos i, farem, q milles, temps de milla trimestre. OK, ha de tenir ell-- bé, QseC. QseC. Actually-- ho sento, què? Vaig a trucar a això alguna cosa més a part model2. Vaig a trucar a aquest MODEL3. I pel que ara podem fer resum MODEL3. I així, un cop més, això és, bàsicament, el que es podria esperar. Vostè té intercepto positiu. L'eficàcia creixent pes és negatiu. I l'efectiva augmentant trimestre temps milles és positiu, però malgrat en menor mesura que el pes. Ara intuïtivament, pot donar sentit a això dient pensar en els cotxes esportius. Hi ha una acceleració molt ràpida, A molt poca vegades quart de milla. També van a utilitzar més gas, mentre que els cotxes més sensibles van per tenir acceleració més lenta, majors temps de quart de milla, i utilitzar menys gas ,, pel milles per galó més alts. Gran. I pel que ara és el moment de traçar alguna cosa com això. Així que anem a fer-- tan nu ossos que poden fer plots-- perquè jo he adjuntat aquesta trama de dades abans-- ens podem fer parcel·les, mpg en pes. Feu això una mica més gran. Allà, tenim bàsicament una diagrama de dispersió, però els punts són una mica difícil de veure en això. No em acord d'improvís el que el sintaxi és per canviar la trama. Així que suposo que això serà un bon moment perquè aparegui, hi ha una molt bona ajuda incorporat funció, cotitzacions d'ajuda funcionen nom. Anem a plantejar bàsicament alguna cosa que t'agradaria. Crec que vaig a fer això realitat Tipus és igual a p per punts parcel·les. ¿Això canvia res? I no, no realment. Tot bé. Per alguna raó, quan vaig fer això en la meva pròpia ordinador fa un temps, tots els punts de dispersió eren molt més clara. De totes maneres, són el tipus de dispersió de visible? No hi ha ningú allà. A pocs són, uns pocs allà. Pot espècie de veure'ls, oi? Així que si volem afegir una línia de millor ajust a aquesta trama aquí, que és una mica nu bones-- vull deixar una mica més agradable. Principal és igual davant pes. Milles per galó. Un cop més, es pot veure l'útil arguments opcionals són aquí amb també no haver de posar les coses en un cert ordre amb els arguments de teclat quan es té parcel·les, ja que aquestes tenen un munt d'arguments. Xlab igual pes, pes, tones. Tot bé. OK, sí, aquest dispositiu és ser una mica molest. Però es pot veure una espècie d'allà dalt, hi ha un títol del gràfic al lateral. Per aquí there's-- a la part inferior aquí hi ha etiquetes dels eixos. No em acord d'improvís el que els comandaments ars-- el que les funcions són augmentar la mida d'aquestes etiquetes i títols, però hi són. I pel que si volem afegiu la línia de millor ajust, podríem fer alguna cosa com-- I tenir la sintaxi escrita aquí. Així que recordi que nosaltres simplement afegim model va ser mpg, pes, mtcars. I així, si volia afegir un millor ajust line, el que podia fer un model de la línia b. I auge, tenim una línia de millor ajust. És una mica difícil de veure de nou. Estic bastant això de la dificultats tecnològiques. Però s'executa bàsicament la part superior esquerra a la inferior dreta. I si l'escala fos més gran, es podia veure que la intersecció és el que pugui trobar des de les estadístiques de resum si escriu model de resum. OK, així que espero que tothom té una mena sentit del que R és, el que és bo per a. Vostè pot fer molt millor que les parcel·les això en el seu propi temps, si ho desitja. Així que la interfície de la funció externa. Això és una cosa que no sol ser cobert de conferències introductòries ni res d'introducció per a r. No és probable que necessitaràs. No obstant això, em va semblar útil en meus propis projectes en el passat. I no hi ha bona tutorial per a això en línia. Així que només vaig a tots vostès s'afanyi a través d'aquest i després vostè és lliure de marxar. I així l'estranger interfície de la funció és el que que pot utilitzar per trucar a veure funcions amb una R. Internament, R es basa en l'aritmètica de C. R és només 64 bits aritmètica de punt flotant de C, que és de tipus doble [inaudible]. I és possible que vulgueu fer això per un munt de raons. D'una banda, R és interpretada, és No compilat a codi màquina. Així que vostè pot reescriure la seva bucles interns en C i després arribar l'avantatge d'utilitzar R. Com que és una mica més còmode que C. Té millor gràfica instal·lacions i altres coses. I sense deixar de ser capaç d'arribar la velocitat màxima dels bucles interns, que és on realment ho necessiten. La reutilització de llibreries C existents, això també és important. Si vostè té alguna biblioteca C per igual, No sé, transformades de Fourier, o alguns molt Arcaic procediment utilitzat estadístiques a l'escola d'astrofísica d'energia o alguna cosa així, no ho sé. Alta astrofísica energia no és ni tan sols un pensament, crec. Però vostè pot fer que en lloc de tenir escriure un port R nativa d'ells. I en ell-- i una altra, com si buscar a la majoria de les biblioteques per defecte de R, a la part interna, les parts internes són utilitzarà la funció estrangera interfície molt àmpliament. Van a tenir coses com Fourier transforma o computació de correlació coeficients escrits en C, i que van a només hi ha embolcalls R al voltant d'ells. La interfície és una mica difícil. penso seva dificultat és exagerada en una Moltes de les instruccions que trobaràs. Però, però, és una mica confús. I jo no he estat capaç de trobar un bon tutorial per a això, així que això és ara. Un cop més, tot aquest segment és més per a la posterior consulta. No et preocupis per la còpia tot fins ara. Així que les següents instruccions són per a sistemes tipus Unix, Linux, BSD, OS X. No ho sé com funciona en Windows, però per favor, simplement no fer la seva projecte final en Windows. Segur que no vol. Unix és molt millor conjunt per a la programació casual. Així que, bàsicament estrangera interfície de la funció. Si voleu escriure un C les per al seu ús amb R, ha de prendre tot el arguments com punters. Així que per a valors individuals, aquesta vol dir que està assenyalant el valor. Per a les matrius, aquest és un punter al primer element, el qual és el que els noms de matriu que realment signifiquen. Un cop més, això és una cosa que ha de tenir bastant totalment després de p estableix cinc. Noms de matriu són només punters al primer element, El tipus de punt flotant és doble. I la seva funció té que tornarà buida. L'única manera en què pot En realitat el que va passar dir-li R és mitjançant la modificació de la memòria que R va donar a ella a través de la funció estrangera interfície. Així que he escrit aquest exemple d'això, es tracta de una funció que calcula ús punts producte de dos vectors. Es necessiten dos arguments, vec1, vec2, que són els propis vectors, i després n, que és una longitud, perquè, de nou, R ha construït al [inaudible] per esbrinar la longitud dels vectors, però C no. En C, els vectors és una arbitrària porció delimitada de memòria. Així que la forma en què pot calcular productes escalars s'acaba d'establir aquest paràmetre de sortida a zero i després recórrer d'1 a protagonitzar n, perquè n és un punter a la longitud, només ha d'afegir alguna cosa per això paràmetre. I pot ser una bona pràctica si vas a fer això a escriure dues funcions C separades. Un d'ells has-- Un d'ells només pren els arguments i els tipus que tindrien ordinàriament en C. Pel que pren una matriu arguments com punters. Però els arguments de valor únic com n, només es necessita com a valors per còpia, sense punters. I després no ho fa [Inaudible] a terme punter. I llavors vostè pot tenir una diferent, bàsicament, funció de contenidor que, bàsicament, maneja els requisits de la funció estrangera interfície per a vostè. La forma en què vostè diu això en R és, un cop Té la funció del seu escrit en C, escriu R shlib cmd, R comandament de biblioteca compartida, foo punt c, o el que sigui el nom de fitxer és, i el sistema operatiu no shell a la terminal R. I això crearà un biblioteca anomenada foo dot així. I llavors vostè pot carregar en nostre script o interactivament amb comandament de càrrega de punt din. A continuació, hi ha una funció en R anomenat c punt. Això pren arguments que són primer el nom de la funció en C que voleu marcar. I llavors tots els paràmetres a aquesta funció, que han d'estar en l'ordre correcte. Vostè ha de fer servir aquest tipus funcions de coerció com sencer, com doble, com el caràcter, i com lògic. I després, quan es torna el llista, que al seu torn és només una matriu associada de la noms dels paràmetres i els valors després de la funció s'ha executat. Així que en aquest cas, perquè prod punt té arguments vec1, vec2 i int n, n out. Posar els punts c tenim prod punt, el nom de la funció estem trucant, vec1, vec2, tipus coaccionar. La longitud de qualsevol de vector, Acabo vaig triar vec1 arbitràriament. Seria més robust dir s Longitud min sencer de vec1, longitud vec2. Llavors, just quan el doble zero, perquè no ho fem realitat cuidar el que entra a la terme paràmetre perquè som posant-lo a zero de totes maneres. I a continuació, els resultats seran un array gran associat de bàsicament vec1 és el que sigui, vec2 és el que sigui. Però ens interessa a terme, pel que podem treure això. Això és de nou, un exemple molt joguina d'una interfície de la funció externa. Però si vostè ha de calcular dot productes de vectors massius en bucles, o si té a veure alguna cosa més en un bucle, i no vol dependre de R, que té una mica de sobrecàrrega construït, això pot ser útil. Un cop més, això no és generalment un tema introductori a R. No està molt ben documentat. Només estic incloent perquè He trobat que és útil en el passat. Així, les males pràctiques. He esmentat que hi ha un per al bucle en la funció. En general, vostè no deu, en l'idioma, no la fem servir. Basat en com R implementa iteració internament, pot ser lent. Acaben també es veuen lletjos. R maneja vectors molt bé, per la moltes vegades no cal utilitzar-lo. Llavors vostè pot usualment reemplaçar un vector sovint amb aquestes funcions trucades d'alta funcions d'ordre, Mapa, Reduir, Troba o filtre. Vaig a donar alguns exemples del que ells fan. Mapa és una funció d'ordre superior, ja que pren una funció com a argument. Així que vostè pot donar-li una funció, vostè pot donar-li una matriu, i va a aplicar la funció a cada element de la matriu i tornar la nova matriu. Reduir, bàsicament li dones és una matriu, que li donen una funció que pren dos arguments. S'aplicarà la funció primera, la primera discussió amb algun valor d'arrencada. Llavors a aquest resultat en el segon. Llavors a aquest resultat en el tercer, després a aquest resultat en el quart. I després tornar quan s'arriba al final. Així, per exemple, si vols calcular la suma de tots els elements en una matriu, el que es podria anomenar a reduir amb [inaudible] reduir una addició funció, com func a, b, tornar a més b. I a continuació, iniciar un valor de 0. I tot això, vostè pot trobar es descriu a la documentació de R, en qualsevol llibre de text sobre programació funcional. També hi ha aquesta classe de funcions anomenades funcions s'apliquen, que jo no-- són una mica difícil d'explicar, però si ens fixem en [inaudible] reservat que he citat al principi, ell els explica bastant bé en el seu apèndix sobre la programació R. Més sobre les pràctiques, afegint als vectors. Sí? Crec que hauria de corregir això. En aquesta primera línia, fletxa vec, aquesta fletxa no hauria d'estar allà. Podeu assignar a un vector, de nou, per prendre la seva longitud més 1 i l'assignació d'un valor a això. Que s'estendrà el vector, o pot fer equals vec c, nuevovalor vec. Un cop més, si s'utilitza C amb un argument com un vector, la jerarquia resultant s'aplana. Pel que vostè acaba d'obtenir un vector això es va estendre per 1. Mai faci això. La raó per la qual no ha de fer això és la següent. En assignar un vector, que li dóna una certa quantitat de memòria. Si augmenta aquesta grandària del vector, ha de reassignar el vector algun altre lloc. I així reassignació és força car. No entraré en els detalls de com assignadors de memòria s'implementen en el nivell del sistema operatiu, però es necessita molt temps trobar un nou tros de memòria. I també, si vostè és re-assignació de lots i lots de forma progressiva més gran trossos, que acaben amb alguna cosa que es diu fragmentació de la memòria, on la memòria disponible és dividit en un munt de petits blocs en el punt de vista assignadors de memòria. I el que és més i més difícil per trobar la memòria per a altres coses. Així que en lloc, si el que necessita fer això, si vostè necessita per fer créixer un vector d'un extrem a la següent, en lloc d'afegir-hi constantment, ha de pre-assignar. Fletxa Vec, longitud del vector és igual a 1.000, o el que sigui. I a continuació, pots assignar a del vector de valors d'un sol un temps després que ha assignat una vegada. Em vaig trobar amb això, de nou, el meu treball d'estiu quan estava escrivint NRA diferencial resolució d'equacions. No simbòlica numèrica. La idea és que una vegada que tens un valor per a la seva solució, utilitza que per calcular la següent. Així que la meva natural, ingenu impuls va ser dir OK, així que vaig a començar amb un vector això és un valor substancial. Calcular a partir que el següent valor que va en la meva solució vectorial, i adjuntar dita. Crear alguna cosa més, annexar això. Va ser molt, molt lentament. I una vegada que em vaig adonar d'això i vaig canviar el meu sistema afegint a partir d'aquest vector igual que entre 10.000 i 100.000 vegades, tot just preassignació d'un vector i només córrer amb això. Tinc més de 1.000 vegades la velocitat a dalt. Així que aquesta és una molt comuna trampa per a la programació R. Si vostè necessita per construir un vector peça per peça, abans d'assignar la mateixa. Un altre viatge comú up-- aquesta és la meva última diapositiva, no worry-- és el maneig d'errors. R, per ser franc, no realment fer això molt bé. Hi ha una gran quantitat de problemes que poden sorgir. Per exemple, si vostè aconsegueix un array o un vector d'una funció que estaves esperant un sol valor de venir de, o viceversa, i que passi això en una funció que Vostè va escriure esperant un sol valor, que pot ser un problema. Certes funcions tornar null com ho fan, per exemple, lectura d'una clau inexistent en una llista. Però nul·la no és com C on si intenta llegir d'un vell punter, [inaudible] a punter nul, només SEG falles i si estàs en el depurador es et diu exactament on es troba. En el seu lloc, serà nul·la fer-- funcions va a fer coses impredictibles si són nuls mà. Igual que si vostè està entregat max nul, et donarà infinit negatiu. I així, si. I així va succeir això a mi una vegada quan vaig tenir canviat un munt de camps en la meva estructura de llista un cop sense canviar a una altra banda quan estava llegint d'ells. I després vaig rebre tota mena d'atzar resultats infinit apareixent i jo no sabia d'on venien. I, per desgràcia, no hi ha hi ha manera estricte reals R on es pot dir si alguna cosa sembla que podria ser un error, simplement parar allà, així que puc ser disciplinat i arreglar això. No obstant això, hi ha alguna cosa anomenat parada si no. Això és equivalent a afirmar de C, si vostè ha parlat d'això. No crec que C afirmen és un tema de la conferència, però el seu cap de secció podria haver anat per sobre. I parar si no bàsicament pren cap predicat, per la qual cosa qualsevol declaració que pot ser veritable o falsa. I si és falsa, que s'aturi el seu programa. Li diu exactament el que la línia eren i quin estat fallit. I això molt útil, per exemple, comprovació de seny, entrades de funció. Així que si vostè té una funció i espera, per exemple, si vostè em ha de donar una data, que vull les dates siguin només un vector de longitud 1 i en algun lloc entre l'1 i 31. I si no, ho sé alguna cosa ha anat malament. I decideixo parar allà abans d'això té cop a l'atzar sobre els efectes amb el codi de que és més difícil de rastrejar a través. Així que aquesta és una de les possibles utilitzar per a la parada si no. De totes maneres, a D'acord. Així que aquest és el final. Moltes gràcies per haver vingut. Jo sóc un aficionat en això. Així que ho sento si estàs avorrit o confós o el que sigui. Estic feliç de tenir preguntes per correu electrònic en connorharris@college.harvard.edu. Això va també per a tothom veient això en directe o després. També, encara que no estic 1 TF, també sóc molt disposat a servir com un oficial assessor per a qualsevol persona que és utilitzant R en un projecte final. Si desitja que, a continuació, només parlar amb el seu TF i després em escrigui un correu electrònic per Sé el que estàs treballant i perquè pugui configurar reunió vegades amb vostè si vostè vol. Així que de nou, moltes gràcies. Espero que t'hagi agradat. AUDIÈNCIA: [inaudible]. CONNER HARRIS: Per descomptat. AUDIÈNCIA: Quina classe de projecte seria un estudiant CS utilitzar R per? CONNER HARRIS: Així que si vostè no està fas cosa que és purament en la mineria de dades, per exemple, i hi ha un munt de coses vostè podria fer amb aquest amb les dades mineria i aprenentatge automàtic. És possible que vulgueu utilitzar R per un component d'alguna cosa. Em vaig criar, al principi, l'exemple de si vostè està escrivint una pàgina web i desitja executar automatitzat anàlisi estadística del seu servidor registres en un cert temps cada dia, això podria ser una cosa que és molt fàcil de fer en tan sols una breu R script que pot programar per a executar cada nit, per exemple. I estic segur que, si no hi ha cap raó per la qual hauria vull estadístiques o capacitats gràfiques i tenir aquesta carrera automàticament en lloc d'haver de interactuar amb les coses en Excel, per exemple, això és una cosa és possible que vulgueu utilitzar R per. Així que més preguntes abans d'anar-me'n? No? Molt bé, bé, de nou, gràcies gràcies per venir.