CONNOR HARRIS: Še vedno sem mislim nekaj zanimiv video proizvaja strokovno svetovanje ki uporablja R veliko v svojem delu. Pripovedovalec: Kaj se skriva za statistiko, Google Analytics, in vizualizacije da današnji najsvetlejši podatkov znanstveniki in poslovnimi voditelji zanašati na da bi močne odločitve? Vedno si ga ne sme videti. Ampak to je tam. To se imenuje R, open source r-- statistični programski jezik da so podatki, strokovnjaki svetovna nad uporabo za vse, od kartiranja širšem socialnem in tržne trende na spletu k razvoju finančnega in podnebje Modeli, ki pomagajo voziti naše gospodarstvo in skupnosti. Ampak kaj točno je R in kjer je R začeti? No prvotno, R začelo tukaj z dvema profesorji ki je želel boljši statistični Platforma za svoje učence. Tako so ustvarili eno vzoru Po statističnem jeziku S. Ti, skupaj s številnimi drugimi, hranijo delajo na in s pomočjo raziskav, ustvarjanje orodij za R in iskanju Nove aplikacije za R vsak dan. Zahvaljujoč temu je svetu napor skupnost, R hranijo raste s tisoči za uporabniško ustvarjenih knjižnic zgrajenih za povečanje R funkcionalnost in -množica nabavljal potrjevanje kakovosti in podpora najbolj priznanih industrija voditelji na vseh področjih, ki uporablja R. Kar je super, ker R je najboljši, kaj počne. Hitro nadobudne strokovnjake in enostavno razložiti, interakcijo z, in hitro vizualizacijo podatkov, ki prikazuje njihovo rastoča skupnost uporabnikov R po vsem svetu in videli, kako odprto kodo R še naprej oblikovati prihodnost statistični analiza in znanost podatkov. CONNOR HARRIS: OK, super. Torej, moji predstavitvi bo malo bolj trezen. To ne vključuje, da je veliko razburljiva glasbe v ozadju. Ampak kot ste videli v videu, R je nekako splošnega programa namen jeziku. Vendar pa je bil ustvarjen predvsem za statistično delo. Torej, to je zasnovan za statistiko, za analizo podatkov, za rudarjenje podatkov. In tako boste lahko videli v veliko izbire projektiranja, da ustvarjalci R postavil. To je zasnovan za veliki meri, ljudje, ki niso strokovnjaki v programiranju, ki so samo pobral programiranje na strani, tako da lahko opravljajo svoje delo v družboslovno ali v statistiki ali karkoli. Ima veliko zelo pomembne razlike iz C. Ampak sintaksa in paradigme ki jih uporablja, so na splošno enaka. In bi se počutite precej veliko doma pravico off kij. To je nujno jezik. Ne skrbite preveč o tem Če ne poznate izraz. Ampak tam je razlikovanje med nujne, deklarativnih, in funkcionalno. Nujno samo pomeni, da bo izkazi, ki so v bistvu ukazi. In potem tolmač ali računalnik jim sledi, enega po enega. To je slabo natipkano, obstajajo nobene izjave tipa v R. In potem linije med različnimi vrstami so nekoliko bolj ohlapno kot so v ° C, npr. In kot sem rekel, da so Zelo obsežna ponudba za izrisovanje, za statistične analize, za podatkovno rudarjenje. To so tako, vgrajenega v jezik in, kot video je dejal, tisoče knjižnic tretjih oseb, ki si lahko prenesete in uporabite brezplačno z zelo ohlapnih pogojev za izdajo dovoljenja. Torej na splošno, vam priporočam da pogledaš na teh dveh knjig če boš delati na R. One od njih je uradni R začetnik je vodič. To je vzdrževana z core razvijalci R. Lahko ga ponovno prenesete, brezplačno polnite in zakonito na tej povezavi tam. Vsi ti diapozitivi so šli gor na internetu, na CS50 spletni strani potem se to naredi. Torej ni potrebe, da bi kopirali stvari navzdol besen. Drugi pa je učbenik s Cosma Shalizi, ki je statistika profesor na Carnegie Mellon, ki se imenuje Napredno podatkov Analiza mora iz Osnovna Point of View. To ni bil predvsem R knjiga. To je statistika knjiga in to je knjiga analiza podatkov. Ampak to je zelo dostopna za ljudi, ki imajo trohico statistike znanja. Nikoli nisem sprejela formalno seveda. Jaz samo vem, bitov in kosov iz različnih zavezniških predmetov da sem sprejela tečaje. In sem bil sposoben razumeti je zelo dobro. So podani vsi podatki v R. Izdelani so iz R imajo pa tudi oglasi kodne pod vsako sliko, da vam povem, kako vam bo vsak lik z R kode. In to je zelo koristno, če ste poskušali posnemati nekateri sliki vidite v knjigi. In spet free download stat.cmu.edu/cshalizi/ Oprostite, da bi bilo treba drastično tilda cshalizi. Poskrbel bom, da se popravi, da ko so uradne diapozitive gredo gor. / ADAfaEPoV ki je le akronim naslova knjige. Tako splošna caveats-- R ima veliko zmogljivosti. Jaz sem samo še, da bi lahko pokrili površina veliko stvari. Tudi prvi del seminarja se bo nekaj podatkovnega smetišče. Jaz sem zelo žal zaradi tega. V bistvu, bom vam predstavil veliko stvari Pravica off kij, bo v najkrajšem možnem času. In potem pridemo do zabaven del, ki je demo, kjer ti lahko pokažem vse da smo govorili na zaslonu. In lahko igral na svoje. Tako da se dogaja, da je veliko tehnična stvar vrže gor na tukaj. Ne skrbite kopiranju vse to dol. Ker A, lahko dobite vse stvari na spletni strani CS50 kasneje. In B, to ni res, da je pomembno, da si zapomnimo to iz diapozitivov. To je bolj pomembno, da dobiš nekaj intuitivno objekt z njo in da prihaja iz samo igranje okrog. Torej, zakaj uporabljati R? V bistvu, če imate projekt, ki vključuje rudarstvo velikih količin podatkov, podatki vizualizacija, si morajo uporabljati R. Če ste početje komplicirana statistične analize, da bi bilo težko v Excelu, na primer, bi bilo se good-- prav tako če delaš statistično Analiza, ki je avtomatizirano. Recimo, da ste vzdrževanje spletne strani. In želite prebrati dnevnik strežnika vsak dan in zbrati nekaj seznam, kot top držav, ki vaši uporabniki prihajajo iz nekatere zbirne statistike o tem, kako dolgo preživijo na vaši spletni strani ali karkoli. In želite zagnati to vsak dan. Zdaj, če ste to počeli v Excelu, boš moral iti na svoj strežnik log, uvoziti, da v Excel podatkov preglednice, teči vse analize ročno. Z R, lahko samo napisati en scenarij. Načrtujete jo teči vsak dan iz vašega operacijskega sistema. In potem vsako noč ob 2:00 zjutraj, ali ko ga urnik za vožnjo, da bo pogledati skozi vaš internetnega prometa za ta dan. In potem ga je naslednji dan, boste imajo to sijoče, novo poročilo ali karkoli z vsemi informacije, ki jih prosil za. Torej v bistvu R je za Cisco programiranje versus Cisco analizo. Predhodno je naredil. Pojdimo v resničnih stvari. Tako obstajajo tri realne vrste v jeziku. Tam je številska vrsta. Obstaja vrsta razlike med cela števila in plavajoče točke, ampak ni res. Tam je znak tip, ki je strune. In tam je logična tip, ki je Booleans. In lahko pretvorite med vrstami uporabo teh funkcij kot številčna, kot lik, kot je logično. Če pokličete, na primer, kot številčna na vrvico, bo skušala prebrati ta niz kot število, enako da a2i in scanf storiti, in C. Če pokličete tako številčna na true ali false to bo pretvoril na 1 ali 0. Če pokličete kot značaja na karkoli, da bom pretvorbo, da na A Niz predstavitev. In potem so vektorji in matrike. Torej vektorji so v bistvu 1 dimenzionalni nizi. So tisto, čemur pravimo nize v C. Matrice, 2 dimenzionalni nizi. In potem višje dimenzionalni nizi si lahko imajo 3, 4, 5 dimenzije ali karkoli iz številčne vrednosti, nizov, od logične vrednosti. Imate tudi sezname, ki so nekakšna asociativni array. Grem v to malo. Torej, ena pomembna stvar da je bil ljudem v R je, da ni resnični, čisti atomski vrste. Ni dejanska razlika med število, kot številčno vrednostjo, in seznam številčne vrednosti. Numerične vrednosti, ki so dejansko Enako kot vektorjev dolžine 1. Kar ima številne pomembne posledice. Ena, to pomeni, da lahko narediš stvari zelo enostavno, ki vključujejo kot dodajanje številko vektorja. R bo v bistvu slika ven, kaj misliš s tem. In jaz bom tisti, ki v sekundi. To tudi pomeni, da ne obstaja način za tip checker-- v obsegu da je nekaj takega obstaja v r-- povedati ko ste opravili v enotnem vrednosti ko se pričakuje, da matrično ali obratno. In da lahko povzročijo nekatere čudno težave, da sem tekel v ko Bil sem s pomočjo raziskave med moje poletno delo. In ni mešani tip nizi. Torej, ne morete imeti niz bili Prvi elementi se, ne vem, niz "Janez" in Drugi element je številka 42. Če boste poskušali to storiti, potem boste dobili Vse samo pretvori v niz. Torej imamo niz John, niz 42. Tako nenavadno skladenjska features-- najbolj R je sintaksa zelo podobna C. Obstaja nekaj pomembnih razlik. Tipkanje je zelo šibka. Torej ni nobenih deklaracije spremenljivk. Odstop uporablja čudno Operator napak manj kot vezajem. Komentarji so z lojtra. Mislim, da zdaj dni, smo klic hashtag čeprav to ni res accurate-- ne dvojna poševnica. Modularne ostanki so s %% znaki. Delitev Integer je z% /%, kar je Zelo težko brati, ko je to predvideno na zaslonu. Lahko dobite razpone števili z debelem črevesu. Torej 2,5 vam bo vektor za vse številke od 2 do 5. Nizi so one-indeksirane, ki vijaki veliko ljudi gor, če oni iz več tipičnih programskih jezikov, kot C, kjer je najbolj Stvari so nič indeksirane. Še enkrat, to je, če dediščina r je kot jezik, kot ne profesionalni programerji pride. Če ste sociologa ali ekonomist ali kaj podobnega in skušate uporabiti R v bistvu kot dodatek za vaše bolj pomembno strokovno delo, boste našli ena indeksiranje malo bolj naravno. Ker ste začeli štetje na 1 v vsakdanjem življenju, ne pa 0. Za-zank, to je podobno foreach konstrukt v PHP, ki jih boste dobili, da naučiti in-- kmalu. Ki je za vrednost v vektorju in potem lahko to storite z vrednostjo stvari. OBČINSTVO: To je prišel gor na predavanju. CONNOR HARRIS: Oh, to je prišli do predavanje, odlično. OBČINSTVO: Naloga, je naj bi točke od desne proti levi? CONNOR HARRIS: Od desne na levo, ja. Lahko si o njej mislijo kot vrednost na pravica porinil v spremenljivko na levi. OBČINSTVO: OK. CONNOR HARRIS: In končno funkcija skladnja je malo čudno. Imate ime funkcije foo, dodeljeno na to funkcijo za ključne besede, ki mu sledi z vsemi argumenti in nato telesne funkcije po tem. Spet lahko te stvari zdi malo čudno. Ti bom postala druga narava po delate z jezikom za bit. Torej vektorjev, način si zgraditi vektor je, da tip C, kar je ključna beseda, potem vse številke, ki jih želite ali godala ali karkoli. Argumenti tudi vektorji. Ampak postane posledica matrika sploščena. Torej, ne morete imeti nizi kjer nekateri elementi so enoposteljne številke in nekateri elementi so nizi sami. Torej, če boste poskušali zgraditi Niz bili prvi element 4 in drugi element je matrika 3,5 boste pravkar dobil tri elemente paleto, 4,3,5. Ne more biti mešanega tipa. Če poskušate brati ali pisati izven meja vektorja boste dobili to vrednost, imenovano NA ki stoji za manjkajočo vrednost. In to namenjeno kot statistikov, ki delajo z nepopolnimi podatkovnimi nizi. Če uporabite funkcijo, ki je domnevno vzeti le eno številko za array potem kaj boste dobili, tem funkcija preslika preko polja. Torej, če je vaša funkcija recimo traja število in vrne to kvadratnih. Si velja, da je za paleto 2,3,5 Kaj boste dobili je matrika 4,9,25. In to je zelo koristen ker to pomeni, da vam ne bi bilo treba pisati za zank gre zelo preproste stvari, kot je uporaba funkcija za vse člane niza podatkov. Ki bi, če delate z velikimi zbirk podatkov, kar morate storiti veliko. Binarne funkcije aplikativna vnos z vpisom. Grem v to. Lahko do njih dostopate z nizi ali vektorji z oglatimi oklepaji. Torej ime vektor oglati oklepaj 1 vam bo dal prvi element. Ime Vector oglati oklepaji 2 vam bo dal drugega elementa. Lahko prenese na vektorju indeksov in boste priti nazaj ven bistvu sub faktorjem. Torej lahko narediš vektorsko ime kotnika C, 2,4 in boste dobili ven vektor, ki vsebuje drugi in četrti elementi matrike. In če hočeš samo Hiter povzetek statistika vektorja podobnega interkvartilnimi Območje, mediana, največja, karkoli, lahko vpišete povzetek Ime vektor in dobil to ven. To ni res uporabno v programiranje, vendar če ste igranje okoli podatkovnih nizov, da je prav. Matrices-- bistvu višje dimenzionalni nizi. Imajo to posebno zapisu sintakso. Matrix s paleto, ki dobi napolnjena in-- Žal matriko s podatki, število vrstic, število stolpcev. Ko imate nekaj podatkov, da izpolni array bistvu gre od zgoraj navzdol prvi. Nato z leve proti desni. Torej, kot je ta. In je R vgrajeno matrix množenja, spektralno razgradnja, diagonalizacije, veliko stvari. Če želite več dimenzionalno nizi, zato 3, 4, 5, ali karkoli dimenzije lahko to storite. Sintaksa je matrika dim enaka c, Nato seznam dimenzij. Torej, če hočeš 4 dimenzionalni array z dimenzijami, 4, 7, 8, 9, array, dim enaka c (4,7,8,9). Imate dostop do posamezne vrednosti z oklepaji prvi vstop vejica drugi vnos. Lahko dobite celotno rezine vrstic ali stolpcev. S tem nepopolno sintakso je samo vrstico številko vejico ali vejico stolpec številka. Torej seznami so nekakšna povezano array. Imajo svojo sintakso tukaj. Spet ne besen kopirati vse to navzdol. To je samo zato, da ljudje skozi diapozitivov kasneje ima vse to v prijetni referenco. In to bo postalo zelo naravno enkrat Pravzaprav sem hodil skozi demosa. Torej je navedenih v bistvu povezane nize. Lahko dostopate vrednote Ime seznama, znak za dolar, ključ. Torej, če je vaš seznam poimenovali foo, potem lahko dostopate tako. Lahko dobite celotno par ključ-vrednost s prehodom v indeksu oglati oklepaj. Če ste prebrali iz neobstoječega Ključ, boste dobili null. To ne bo napak. Stvar je v tem, R bo naredil, kot veliko z ničlo, kot je mogoče. In to lahko pomeni, da če ste ni pričakoval, da bi dobili null ven nekega seznama branje, boste dobili nekaj nepredvidljive napake še naprej navzdol linija. To se je zgodilo, da me je poletno delo, ko sem bil z uporabo R kjer sem se spremenila, kako neka Seznam je bil definiran v enem samem vendar pa pozneje ne spremeni na Koda, ki berejo vrednosti iz njega. In kaj se je zgodilo sem bil branje ničelne vrednosti iz tega seznama, jih poteka v funkcij in je zelo zmeden ko sem dobil vse vrste naključne neskončnost obrezovanje v to funkcijo. Ker če pride gotovo največja ali minimalne funkcije za ničlo, boste dobili neskončno vrednosti ven. Podatkovni okvirji, oni podrazred seznama. Vsak vrednost je vektor enake dolžine. In oni se uporabljajo za predstavitev, v bistvu, podatkovne tabele. Tam je to inicializacija sintakso. To bo vse, še enkrat, da je veliko jasnejši, ko prideš na demo. In lepo stvar o podatkovni okvirji je, da vas more dati imena za vse stolpce in imena v vseh vrstah. In tako, da omogoča dostop do jim malo prijaznejši. Tudi to je, kako večina funkcij, ki brati podatke iz preglednic Excel ali iz besedilne datoteke, na primer, bo prebral v njihovih podatkov. Ti bom dal v neke vrste podatkov okvirja. Torej functions-- funkcij skladnja je malo čudno. Spet je to ime funkcije, dodeliti, to funkcijo za ključne besede in nato seznam argumentov. Torej obstaja nekaj lepih stvari o tem, kako deluje delati tukaj. Za eno, lahko dejansko dodeliti Privzete vrednosti za nekatere argumente. Torej lahko rečemo, R1 equals-- lahko rečeš foo je funkcija, kjer je R1 enak nekaj privzeto če uporabnik določa nobenih argumentov. V nasprotnem primeru, to je vse, kar je dal v. In to je zelo priročno ker veliko naših funkcij imajo pogosto desetine ali stotine argumentov. Na primer tisti, ki za izris grafi ali ubral scatter parcel imajo argumente, ki nadzorujejo vse od naslova in osjo nalepke na barvo regresijskih linij. In tako, če ne želite, da bi ljudje določite vsak od teh stotine argumentov nadzor vsak vidik parcela ali regresija ali karkoli, to je lepo, da so te privzete vrednosti. In potem lahko dejansko pisati, kot ste videli nazaj. Ali najti boljši primer. Ko pokličete funkcije, ki jih lahko dejansko jih pokličete z uporabo imena argumentov. Torej, tukaj je primer matrica gradbenik. Traja tri argumente. Ponavadi imate podatke, ki je vektor. Imate N vrstic, ki je število vrstic. Imate N cols-- število stolpcev. Stvar je, če ste tip N vrstica je enaka ne glede na in N col enak karkoli, kadar kličeš to funkcijo, jih lahko dejansko obrne. Tako da lahko dajo N col prvi in ​​N vrstica Drugi in to bo nobene razlike. Tako da je lepo lastnost. Ali uvoz in izvoz. To je mogoče storiti, v bistvu. Obstajajo tudi objekti izpišite samovoljno R nasprotuje binarno datoteko in jih nato berejo nazaj kasneje. Kar je priročno, če delaš velik interaktivni zasedanje R in morate shraniti stvari zelo hitro. Privzeto ima R delovni imenik da se datoteke izpisano v in brati nazaj od. Vidite lahko, da s getwg, ga spremenite z setdw. Nič posebej zanimivo tukaj Torej, zdaj dejanska statistika stuff-- multilinear regresije. Tako običajni sintakse je malce zapleteno. Model je velik objekt v bistvu. To gets dodeljena lm, ki je funkcija klic. Prvi element, y Tilda x1 plus karkoli. Moj sintaksa tukaj je malo zmedeno. Jaz sem zelo žal, to je standardni način da računalništvo knjige to storiti. Ampak to je malo čudno. Torej v bistvu, to je lm oklepaje, prva točka je variable-- žal, odvisna od spremenljivka Tilda x1 plus x2 plus Vendar pa mnogi neodvisni spremenljivke, ki jih imate. In potem ti lahko bodisi vektorji, vsi enake dolžine. Ali pa je lahko kolona razdelilniki v podatkovnem okviru ki ste jo pravkar določite v Drugi argument podatki okvir. Lahko tudi določite bolj kompleksno formulo tako da ne boste imeli, da linearno nazadovanje na eno odvisno spremenljivko, ali en vektor na že obstoječem vektor. To lahko storite, na primer, vektorska komponenta y kvadrat plus 1 in nazadovati, da proti log nekega drugega vektorja. Lahko natisnete povzetki model, s tem ukazom, imenovano summary-- samo povzetek parens modela. Spet nekaj, kar bi moral pojasniti. Nekaj ​​drugega, da bodo dobili popravljeno ko diapozitivi šel na internetu. Če si želite izračunati enostavna korelacija lahko uporabite primerjalno vektor 1 vektor 2 funkcija jedro. Metoda je privzeto Pearson korelacije. Tisti, ki so standardne tiste, ki jih lahko storite. Obstajajo tudi Spearman in Kendell korelacije ki so na različnih čin red korelacija. No, ne izračunati izdelek trenutki med vektorji samih, ampak čin naročil prenašalca. Bom razložil kasneje. OBČINSTVO: Hitro vprašanje CONNER HARRIS: Seveda. OBČINSTVO: Torej, če ste izračunu za enostavne korelacije storiti si domnevati, da obstaja statistično Pomen na korelacijo? CONNER HARRIS: Nimate za. Lm je v bistvu samo stroj. To bo v dveh stvareh in bo izpljuni koeficienti za najustreznejša linije. Prav tako poroča standardna Napake na teh koeficientov. In to vam bo povedal, tako kot je prestrezanje statistično pomembna ali razliko od 0. Je naklon od najboljših fit linijo statistično različna od nič, et cetera. Torej predpostavlja nič, mislim, je najboljši odgovor na vaše vprašanje. V REDU. Plotting-- tako da je glavni razlog, da bi morala Uporaba R, kot multilinear regresije. V bistvu vsak jezik ima neko napravo za to. In skladnjo pošteno R za regresija je malo Skrivnosten. Ampak risanja je, če to res sije. Funkcija gonilna sila je parcela in sta potrebna dva vektorjev, X in Y. In potem elipse stoji za zelo Veliko število izbirnih argumentov, ki nadzoruje vse od naslovov v barvah različnih linij ali različnih točkah, na vrsto ploskvi. Lahko imaš odbojev parcele ali liniji parcele. [Neslišno] 2 vektorji enake dolžine. Lahko pred tem z priložiti Podatki okvir v vašem scenariju. In to vam bo šele raba stolpec Glave namesto ločenih vektorjev. Dodate lahko najustreznejše premice in lokalna regresijski krivulji do vašega grafu. Ti ukazi so navedene tukaj, ab linije in linije, privzeto ti dobili napisana v pop up oken ker je predvideno, da ste z uporabo R interaktivno. Če niste si lahko napisati dve datoteki, ki so res kakršni koli obliki, ki jo želite. Žal mi je, da imam slovnične napake sem spoznala. Če želite odpreti drugo grafično napravo lahko uporabite to funkcijo imenovano PNG ali JPEG ali veliko drugih slikovnih formatov. In lahko pišete grafe do ne glede na ime datoteke ki jo določite. Za preklic da moraš use-- Nisem napisati to v slide-- vendar pa je funkcija imenuje dev dot off, da ne potrebuje argumentov. Potem so tu še objekti za 3D risanje in konture ubral Če želite grafi dveh neodvisnih spremenljivk. Ne bom dobil v to zdaj. Obstaja tudi nekaj objekti za animacijo to so ponavadi vzdrževana s strani tretjih oseb. Sem naredil animacije z R grafov, sem pa ne uporablja te tretji osebi knjižnice. Tako da ne morem potrditi, kako dobri so. Kaj jaz priporočam, če želite, narediti animacije z uporabo R se lahko napisali vse okvirji za animacije in potem lahko uporabite program-- tretja stranka tipične tisti imenujemo FFmpeg ali ImageMagick-- lepljenje vse svoje okvirje v eno animacijo. Torej čas za demo. Torej, če ste z uporabo katere koli Unix, kot so sistem ki je Linux BSD a kdo uporablja BSD. OS X odpre terminalsko okno in Tip R v ukazno vrstico. Če imate R studio ali podobno, ki deluje tudi. Za uporabnike operacijskega sistema Windows, morate biti sposobni najti R v vašem meniju Start. Treba imenuje nekaj kot R x64 3 točka karkoli. Odprite da tam gor. Torej me zdaj pa samo odpre terminalsko okno. Vse je v redu, iskanje. OBČINSTVO: Command-Space CONNER HARRIS: Command-Space, hvala. Jaz navadno ne uporabljajo Mace. Terminal, kažejo novo okno. Novo okno je nastavitev osnovno, R. Torej bi morali dobiti pozdravno sporočilo, nekaj takega. Torej, jaz sem z uporabo R interaktivno. Napišete lahko tudi R skripte seveda. V bistvu zaženete skripte točno enak način kot če bi sedel na računalniku vnesete v vsako vrstico enega naenkrat. Torej začnimo s tem vektor. Puščica C 1, 2. 1, 2, 4. OK, seveda. Jaz lahko velikost pisave večji. OBČINSTVO: Command-Plus CONNER HARRIS: Command-Plus. Command-Plus. Vse je v redu, kaj pa je to? Dobra? V REDU. Torej začnimo s razglasitvi seznam vektor. Ali, puščico, C 1,2,4. Vidimo lahko, a. Ne skrbite nosilec tam. Nosilci so tako, če natisnete zelo dolgi nizi, smo lahko to, kje ste. En primer bi bil, če bi samo želim razpon od 2 do 200. Če sem natisnjena zelo dolgo matrika, oklepaji so samo zato, da sem lahko vodijo od katerih je indeks progi smo na, če iščem skozi to vizualno. Torej, v vsakem primeru, imamo. Torej sem že prej povedal, da so nizi interakcijo zelo lepo z, na primer, Unarni operacije, kot je ta. Torej, kaj misliš, da bom dobili, če sem tip plus 1? Ja. Dobro, zdaj bom, da ta drugačen niz. Recimo b c 20,40, 80. Torej, kaj mislite Ta ukaz bo naredil? Dodajte elemente. In tako v bistvu, da je tisto, kar počne. Torej, to je zelo priročno. Torej sem, kako pa naredim to. c je, recimo, 6-krat od 1 do 10. Torej, kaj bi rad videl vseboval, pa ti misliš? Torej, vse večkratnike šest. Zdaj, kaj misliš se bo zgodilo, če bom to naredil? Jaz bom, da to malo bolj jasno, c, c. Torej, kaj se zgodi, kajne mislim, če bi to naredil? plus c. [Neslišno] OBČINSTVO: Bodisi napaka ali pa samo dodaja prve tri elemente. CONNER HARRIS: Ne čisto. To je tisto, kar smo dobili. Kaj se zgodi, je krajši matrika a, dobil preklapljajo. Tako smo dobili 124, 124, 124. Ja. In v bistvu, si lahko ogledate To vedenje pred, plus 1, kot podrazreda tega obnašanja, kadar najkrajša array je samo številka 1, ki je matrika en element. Pravkar sem se pravim vektor vse čas namesto matrike, ker to je tisto, kar r dokumentacija običajno počne. To je ukoreninjen c navada. OK, in zdaj imamo to vrsto. Torej imamo to niz, c. Mi lahko dobite povzetek statistični podatki o c, povzetek c. In to je lepo. Tako da zdaj naredimo nekaj matrične stvari. Recimo m je matrica. Naj bo to tri trije eno. Torej nrows enak 3 in ncols enak 3. In za podatke dajmo do-- kaj misliš, da bo to naredil? Dobro, da je naslednja. To je nrow in ncolumn. Torej, kaj sem naredil je, da sem imel razglasila tri s tremi matrico in sem opravil v niz devetih elementov. Torej logaritmom vse Elementi ena skozi devet. In vse te vrednosti, izpolnite up array-- žal? OBČINSTVO: To so navadne 10 dnevniki? CONNER HARRIS: Ne, dnevnik naravni logaritmi, tako bazo e. Ja, če si hotel baza 10 Dnevnik, mislim, da bi morali da se prijavite karkoli, deljeno s log 10. In tako se podatki [neslišno] samo napolni matriko, tako od zgoraj navzdol, nato z leve proti desni. In če si hotel narediti nekaj drugega matrika, recimo n matrika. Naredimo, ne vem, od 2 do 13. Ali bom naredil nekaj bolj zanimivega. Jaz bom po 2 do 4. nrow je enak, recimo, 3. ncol enaka 4. n. Torej smo to dobili. In zdaj, če želimo, da se množijo teh, mi bi naredil n odstotka-krat odstotkov, ker to je n. In imamo matrične izdelke. Z oni način, ste videli, kako ko sem izjavil n je od 2 do 4 Vektor dobil preklapljajo do je napolnila vse n? Če boste želeli, da bi lastnih vrednosti razpade, To je nekaj, kar lahko naredimo zelo enostavno. Mi lahko naredimo Eigen n. In tako je to naša prva srečati s seznama. Torej Eigen n je seznam z dvema ključema. Vrednote, ki jih je ta niz tukaj. In vektorji, ki je ta niz tukaj. Torej, če boste želeli izvleči, recimo, ta tretji stolpec Iz vektorji matrike, ker so lastni vektorji so vektorji stolpcev. Torej ne moremo storiti Vec Eigen n znak za dolar vektorji, comma 3, dne [neslišno]. Vec. Je, kot bi lahko pričakovali. Potem pa pravijo, n-krat odstotkov krat Vec. Zato je rezultat tu zagotovo izgleda če smo tretjo lastnih vrednosti tukaj, ki ustreza tretji lastni vektor. Samo pomnožiti vse v ta lastni vektor, sestavnega dela pametno, ki ga je lastna vrednost. In to je tisto, kar bi pričakovali, ker to je tisto, kar lastne vrednosti so. Ima kdo tukaj ne sprejeti linearno algebro? Nekaj ​​ljudi, OK. Samo vklopite možgane off za malo. In res, če vzamemo Eigen n znak za dolar vrednosti 3-krat VEČ, tudi dobili isto stvar. To je oblikovano drugače kot zapored Vektor namesto vektorja stolpca ampak big deal. In tako so to v bistvu lepo stvari, ki jih lahko storite z matrikami, dokazane seznami. Moral bi prikazali lepo stvari o funkcijah, kot tudi. Torej, kaj je say-- [neslišno] funkcija, poziv Oglejmo je funkcijska pred funkcijo n n squared-- pravzaprav, da to ni res najboljši. a, b, A kvadrat plus b. Torej, ena stvar funkcije, še enkrat, je pa Ne potrebujemo izrecnih izjav o vrnitvi. Torej lahko just-- zadnja izjava oceniti bo izjavo vrne, ali vrniti vrednost. Torej, v tem primeru smo samo ocenjevanje eno Izjava, ki je kvadrat plus b. To bo privzeta vrednost povratka. Nikoli ne boli, da dajo v vrniti vrednote izrecno, še posebej, če imate opravka z Funkcija zelo zapleten logike tok. Vendar jih ne potrebujete. Torej sedaj lahko storimo Funkcij 5, 1, in to je v bistvu tisto, kar ste pričakovali. Nekaj ​​drugega, kar lahko naredimo, bomo lahko dejansko narediti funkcionalnem b enaka 1, je enaka 5. Torej, če želimo opredeliti, katero številko tukaj, kateri argument gre v kateri argument v funkciji, lahko flip okoli te vrednote, kjerkoli želimo. OBČINSTVO: Ali obstaja razlog da ga napišete z b enaka v nasprotju s samo uporabo številke in vejica? CONNER HARRIS: Ja, običajno To storite tako, če imate funkcije z veliko argumentov. Da lahko pogosto izkaže kot Zastave, ki ste jo le želite uporabiti v redkih primerih. In na ta način boste lahko only-- Lahko se nanašajo na posebne argumente ki jo želite uporabiti ne-privzete vrednosti za, in vam ne bi bilo treba pisati ven kup zastav enaka false po njih. Ali mi lahko to še enkrat pisati z privzeta vrednost kot b enaka 2. In potem bi jaz f funkcionalnem, Jaz bom naredil 4, 1 tokrat. In 17, ki je 4 kvadrati plus 1, kot bi lahko pričakovali. Ampak jaz bi tudi samo to imenujemo z funkcionalnem 4, in bom dobil 18, ker Jaz ne določajo b. Torej b dobi privzeto vrednost 2. OK, tako da zdaj, če ste naslednja skupaj z demo, vnesite to vrstico na vaš ukaz spodbuditi in glej, kaj prihaja gor. Pravzaprav, ne delaj tega. Ta tip. Moral bi dobiti nekaj takega. Torej mtcars je vgrajeno v podatkih nastavljena za to demonstracijo namene, ki prihaja with--, ki prihaja v privzeto z vašo distribucijo r. To je zbirka statističnih podatkov iz 1974 izdaji revije Motor Trend je na več različnih modelov avtomobilov. Torej je milj na galono, cylinders-- Sem pozabil, kaj disp is-- konjskih moči. Verjetno. Če ste pravkar Google MT avtomobilov, nato eden prvih rezultatov bo med Uradna r dokumentacija in bo razložil vsi ti podatkovna polja. Torej teža is-- mas je masa avtomobila v ton. Q sec je čas, četrt milje. Torej sedaj lahko storimo nekaj zabavnih stvari o MT avtomobilih je podatkovno polje. Tako da lahko naredimo stvari kot so imena vrstic, MT avtomobilov. In to je seznam vseh vrstic Podatki iz katerih so imena avtomobilov. Mi lahko naredimo colnames, MT avtomobile s tem. Če boste to storili mt avtomobili, sub-numerični indeks, kot 2. dobimo druge kolone iz to, kar bi bilo jeklenke. OBČINSTVO: Kaj ste naredili? CONNER HARRIS: sem tipkal mt avtomobili, nosilci e, ki mi je dal drugo stolpec iz mt avtomobilov. Ali pa, če želimo vrstico, sem lahko tip mtcars vejico 2, npr. Drugi krog 2 vejica, kot je ta. In da gre v vašem zapored. To vam tukaj samo daje stolpec, vendar kolona kot vektor. Pravkar sem spoznal, zdaj sem Pozabil dokazati nekaj kul stvari o vektorjev da lahko to storite z indeksi. Torej, kaj naj storim, da je prav zdaj. Torej, kaj je naredil c gets-- dajanje to na pause-- 2-krat 1 do 10. Torej c je šele bo vektor 2 do 20. Lahko vzamem elemente, kot je ta, c2. I lahko preide v vektorju kot je ta, C- mi dovolite, uporabite drugo ime kot c, kot VEČ c. V bistvu, delam to, da ne boste dobili zmeden med C kot Gradnja funkcija vektor, nato c kot ime spremenljivke. Več nosilci c 4, 5, 7. To me bo ven četrta, peta, in sedem elementi matrike. Jaz lahko naredim Vec, dal v negativno indeks, kot negativnega 4. Da me bo ven to z četrti element odstranjen. Potem, če sem hotel storiti rezine, Jaz lahko naredim Vec 2 do 6. 2 colon 6 je samo še en Vektor, ki je 2, 3, 4, 5, 6. Izpljune da. Torej, v vsakem primeru, nazaj k mt avtomobilov. Torej, kaj je narediti nekaj regresije. Recimo model, gets-- dovolimo linearno regress-- ne vem. Najprej si ne pripisujejo mtcars, seveda. Torej [neslišno] Model lm, dajmo nazadovati milj na galono na tilde teže. In potem podatkovni niz mtcars. Torej povzetek modela. OK, tako da to izgleda malce zapleteno. Ampak v bistvu, ko vidim, če bomo poskušali izraziti milj na galono kot linearna funkcija mas potem imamo to vrstico tukaj, ki prestreže ob 37.28. 37.28 bi teoretične milj na galono avtomobila, ki tehta nič. In potem za vsako dodatno tono, ste knock približno pet milj na galono off da. Oba koeficientov si vidim, standardne napake tam. In so zelo statistično pomembna. Tako smo lahko zelo gotovo, da 1 e 10 k negativnemu 10. Torej 1 krat nekaj za negativni 10, da če bo težji avto, da bodo imeli slabše milj na galono. Ali bomo lahko preizkusili nekaj drugega modela. Kot namesto nazaduje to na teži, dajmo nazadovati na dnevniku teže, saj morda dejansko utežjo na število prevoženih kilometrov je nekako ni linearna. To nam je dal r kvadrat od 0.7528. Torej, poskusimo to. Tokrat Naredimo drugačna spremenljivka, preveč. Model2. Torej povzetek, model2. Vse je v redu, tako da še enkrat, bomo dobili naše najboljše prilega tukaj. In to time-- to je rekel, v bistvu, da vsakič, ko težja avtomobil s faktorjem e ste izgubili to veliko milj na galono. In tako ta čas naša preostala standardni napake it--, da ni važno, res. Preostala standardna napaka bistvu samo standardna napaka da ste zapustili po vas odvzela trendno linijo. In naša r tu kvadrat je 0,81, ki je nekoliko boljše od tistega smo imeli prej, 0.52. In tako zdaj pa dodajte Izraz te regresije. Torej, kaj je nazadovati milj na galono tako na dnevniku uteži in, kaj je storiti, q milj, Četrtina časa milje. OK, mora imeti the-- v redu, qsec. Qsec. Actually-- Oprosti, kaj? Naj to imenujemo nekaj drug poleg model2. Naj to imenujemo model3. In tako zdaj lahko naredimo povzetek model3. In tako še enkrat, to je v bistvu kaj bi lahko pričakovali. Imate pozitiven prestrezanje. Učinkovito povečanje teža je negativen. In učinkovito povečanje četrtletje čas milje je pozitivna, vendar čeprav manj kot težo. Zdaj intuitivno, lahko osmisliti to z besedami, razmišljati o športnih avtomobilov. Tam je zelo hiter pospešek, Zelo kratek četrt milje krat. Oni tudi dogaja, da porabijo več plina, ker je bolj smiselno avtomobili gredo da so počasnejši pospešek, Višje četrt milje krat, in porabijo manj plina ,, tako višje milj na galono. Great. In zdaj je čas, da zapiše kaj takega. Torej, kaj je do-- tako bare kosti ne moremo storiti plots-- ker sem pritrjena teh podatkov okvirja before-- moremo pač zemljišče WT mpg. Naredite to malo večji. Tam smo v bistvu imajo scatter plot, vendar točke so nekako težko videti na tem. Ne spomnim Nepripravan kaj sintaksa je za spreminjanje parcelo. Tako da mislim, da bo to dober čas za bruhati, tam je zelo lepo Builtin pomoč funkcija, quotes pomoč deloval ime. Bomo bruhati bistvu kaj si želite. Mislim, da bom dejansko to narediti Tip je enaka p za točke parcel. Ali da ničesar spremeniti? In ne, ni res. V redu. Iz neznanega razloga, ko sem to naredil na svojem računalniku že pred časom, vsi raztreseni točke, je bilo veliko bolj jasno. Kakorkoli že, so raztreseni vrsta vidna? Tam je ena tam. Nekaj ​​je, nekaj tam. Lahko jih nekako videli, kajne? Torej, če želimo dodati najbolje prilega k tej ploskvi tukaj, ki je nekoliko golo bones-- dovolite mi, da to malo lepše. Glavna enaka primerjavi mas. Milj na galono. Again, lahko vidite, kako koristno neobvezno argumenti so tukaj s tako ne da bi dal stvari v določenem vrstnem redu z argumenti na tipkovnici če imate parcel, saj ti bo veliko argumentov. Xlab enako težo, težo, ton. V redu. OK, ja, ta naprava je pa malo nadležno. Pa si lahko ogledate nekako tam, tam je Naslovno graf na strani. Tukaj there's-- na dnu tukaj obstajajo os nalepke. Ne spomnim Nepripravan kaj ukazi ars-- kaj so funkcije za povečanje velikost teh nalepk in nazivov, ampak oni so tam. In zato, če želimo dodajte najboljše prilega, kar lahko storimo nekaj like-- I imajo sintaksa napisal tukaj. Torej, ne pozabite, smo pravkar dodali modela je mpg, teža, mtcars. In zato, če sem hotel dodati najboljše prileganje linija, sem lahko naredil, model b postavo. In bum, imamo najboljše prilega. To je nekako težko spet videti. Jaz sem zelo žal približno tehnološke težave. Ampak to deluje v bistvu zgoraj levo do spodaj desno. In če bi bila lestvica večji, lahko vidite da je nanj kaj lahko ugotovite iz statističnih povzetkov če vtipkate povzetek modela. OK, tako da upam, da vsakdo dobi nekaj občutka kaj R je, kaj je dobro za. Lahko bi veliko lepše parcel kot to na svoj čas, če vam je všeč. Torej vmesnika tujih funkcij. To je nekaj, kar ni običajno zajeta v uvodnih predavanjih ali uvodni kaj za r. To je verjetno ne boste potrebovali. Vendar pa sem ugotovil, da je uporabna v moji projekti v preteklosti. In tam ni dobro tutorial za to na spletu. Tako da sem le, da bo Vse vas hitenja skozi to in potem ste prost zapustiti. In tako je tuji funkcija vmesnik je kaj lahko uporabite za klic, da vidim funkcij s R. interno, R je zgrajena na je aritmetična C. r je pravkar 64-bitno plavajočo vejico aritmetično C je, ki je tipa double [neslišno]. In boste morda želeli narediti to za kup razlogov. Za eno, ki je R razlaga, da je ne zbirajo do strojni kodi. Torej lahko znova vaš notranje zanke v ° C in potem dobili prednost uporabe R. Like to je malo bolj priročen kot C. Ima boljše izrisovanje objektov in drugih malenkosti. In medtem ko še vedno lahko dobili največja hitrost od notranjih zank, ki je, če jo zares potrebujete. Ponovna uporaba obstoječe knjižnice C, ki je prav tako pomembna. Če imate nekaj C knjižnico podobno, Ne vem, Fourier preoblikuje, ali nekaj zelo arhaik uporabljeni statistični postopek v visoko energetsko astrofizike ali nekaj takega, ne vem. Visoka energetska astrofizika ni niti pomislim, se mi zdi. Ampak lahko storite, da namesto ob napisati native pristanišče R njih. In na the-- in spet, kot če vas poglej v večini privzetih knjižnic R je, na notranji deli, notranji deli so nameravate uporabljati tuje funkcijo vmesnik je zelo obširno. Oni imajo stvari, kot Fourier preoblikuje ali računanje korelacije koeficienti napisana v C, in jih bomo samo še R zavijanje okoli njih. Vmesnik je malo težko. mislim njegova težava je pretiran Veliko navodilih boste našli. Ampak kljub temu, da je malo zmedeno. In nisem mogla najti dober tutorial za to, tako da to je to zdaj. Tudi to cel odsek je bolj za poznejšo uporabo. Ne skrbite za kopiranje vse dol zdaj. Torej naslednjimi navodili so za Unix sistemov, Linux, BSD, OS X. Ne vem kako to deluje na Windows, ampak prosim, ne delaj si Končni projekt na Windows. Ti pa res ne želim. Unix je veliko bolje set up za priložnostne programiranja. Torej, v bistvu tuja Funkcija vmesnika. Če želite napisati C Funkcija za uporabo z R, mora sprejeti vse Argumenti so kazalci. Torej, za posamezne vrednosti ta pomeni, da je opozoril na vrednost. Za zaporedja, to je kazalec na prvem elementu, ki je je tisto, kar imena zaporedji pravzaprav pomeni. Tudi to je nekaj, kar bi morali imeti zal popolnoma navzdol po p nastavite pet. Imena Array so le kazalci na prvi element, Za tip s plavajočo vejico, je dvojna. In vaša naloga je, da se vrnete neveljavne. Edini način, da lahko dejansko povedati, R kaj se je zgodilo je s spreminjanjem pomnilnik, ki sta dala nanjo skozi zunanjo funkcijo vmesnik. Tako sem to napisal Primer tukaj, to je funkcija, ki izračuna uporabo skalarni produkt dveh vektorjev. To traja dva argumenta, vec1, vec2, ki so vektorji same, in potem je n, ki je Dolžina, ker spet R je zgrajena v [neslišno], da ugotovite dolžina vektorjev, vendar C ne. V C, vektorji je poljubna razmeji kos pomnilnika. Torej, kako si lahko izračun izdelke dot je le ta določen parameter na nič in potem ponovitev prek od 1 do zvezdasto n, ker n je kazalec na dolžino, samo nekaj dodati tole parameter. In to lahko dobra praksa če boš naredil to napisati dve ločeni funkcije C. Eden od njih has-- eden izmed njih samo ima argumente in vrste da bodo običajno v C. Torej je potrebno matriko Argumenti so kazalci. Ampak argumenti single-vrednosti, kot n, to traja le kot vrednot, ki jih kopija, brez kazalcev. In potem se ne [Neslišno] ven kazalec. In potem imate lahko drugačen, v bistvu, Funkcija ovoj, ki v bistvu ročaji zahteve tujega funkcije vmesnik za vas. Način pokličete to v raziskave je, enkrat imate vaše funkcija napisana v C, tipkanjem R cmd shlib, R Ukaz skupna knjižnica, foo dot c, ali karkoli Vaše ime datoteke, in OS ne lupine v R terminalu. In to bo ustvariti Knjižnica imenovano foo dot tako. In potem ga lahko naložite v naš skript ali interaktivno z ukazno dyn dot obremenitvi. Potem je funkcija R imenujemo dot c. To traja argumente, ki so Prvo ime funkcijo C ki jo želite poklicati. In potem vsi parametri za to funkcijo, morajo biti v pravilnem zaporedju. Boste morali uporabiti te vrste prisila deluje kot celo število, kot je dvojna, kot značaja in kot logična. In potem, ko se vrne Seznam, ki je spet samo povezano matriko parametrov imena in vrednosti potem, ko je funkcija teči. Torej, v tem primeru, ker je pika prod argumenti vec1, vec2 in int n, n ven. Dot, c imamo dot prod, ime funkcije smo kličeš, vec1, vec2, tip prisiliti. Dolžina obeh vektorja, Pravkar sem se odločil vec1 samovoljno. To bi bilo bolj robusten reči ov celo min dolžina vec1, dolžina vec2. Potem samo kot dvojna ničla, ker smo v resnici ne zanima me, kaj gre v ven parameter, ker smo to nastavitev, da itak nič. In potem rezultati se dogaja, da se big povezana array bistvu vec1 je karkoli, vec2 je karkoli. Vendar smo zainteresirani ven, tako da bomo lahko dobili, da se ven. To je spet zelo primer igrača vmesnika tujega funkcijo. Toda, če imate za izračun dot izdelki iz masivnih vektorjev v zanke, ali če morate storiti nekaj drugega v zanko, in ne želite, da se zanesejo na raziskave, ki ima malo režijske vgrajen vanjo, je to lahko koristno. Tudi to ni običajno uvodni tema, R. To ni dobro dokumentirana. Jaz sem samo zato, ker vključuje Sem ugotovil, da je koristno v preteklosti. Torej, slabe prakse. Omenil sem, da obstaja za zanko v funkciji. Na splošno ne bi smeli, v jezik, ne uporabljajte. Temelji na tem, kako R izvaja ponovitev interno, je lahko počasno. Pravkar so tudi videti grda. R ročaji vektorji zelo lepo, tako da velikokrat vam ni treba, da ga uporabljate. Potem lahko običajno nadomestiti vektor pogosto s temi funkcijami imenovanih high naročilo funkcije, Map, Reduce, Najdi, ali Filter. Jaz bom samo dal nekaj primeri, kaj je to naredil. Karta je višja funkcija Da, ker je potrebno funkcijo kot argument. Torej lahko daš to funkcijo, lahko izročiti to matriko, in bo uporabila funkcijo za vsak element matrike in vrne nov niz. Zmanjša, v bistvu daš je niz, ga dal funkcija, ki traja dva argumenta. Veljal bo funkcijo prvič, Prvi argument z nekaj starter vrednosti. Nato do takšnega rezultata na sekundo. Potem s tem rezultatom v tretjem, nato na tej podlagi v četrti. In se nato vrnite, ko pride do konca. Tako na primer, če želite izračunamo vsoto vseh elementov v polju, kot si morda pokličete zmanjšanje z [neslišno] zmanjšati dodatek funkcija, kot funkcionalnem a, b, vrne plus b. In potem začnejo vrednost 0. In vse to, jih lahko najdete opisano v dokumentaciji R, v vsakem učbeniku na funkcionalno programiranje. Tam je tudi ta razred funkcije imenovani uporabljajo funkcije, ki sem don't-- oni malce težko razložiti, ampak če pogledaš v [neslišno] rezervirana da sem naveden na začetku, on jih pojasnjuje precej dobro njegova priloga o R programiranja. Več o praksah, dodajo z vektorji. Ja? Mislim, da bi morali popraviti da. V tej prvi vrstici, Vec puščica, da puščica ne bi smelo biti. Lahko dodelite vektor, še enkrat, jo sprejme svojo dolžino plus 1 in dodeljevanje neko vrednost, ki. Da bo razširila vektor, ali ste lahko storite Več enaka c, VEČ newvalue. Še enkrat, če uporabljate C z en argument kot vektor, dobljeno hierarhija dobi sploščen. Torej boste le dobili vektor ki je podaljšan do 1.. Nikoli to storite. Razlog, zakaj vas ne bi smeli storiti, to je to. Ko se dodelijo vektor, ga ji daje določeno kos pomnilnika. Če povečate to velikost vektorja, ima prerazporediti vektor nekje drugje. In tako prerazporeditev je precej drag. Ne bom se spuščal v podrobnosti o tem, kako Pomnilniške delilniki se izvajajo na ravni operacijskega sistema, vendar pa je potrebno veliko časa najti nov kos pomnilnika. In tudi, če ste prerazporeditev serij in veliko postopne večje koščkih, boste na koncu z nečim, kar se imenuje razdrobljenost spomin, če je na voljo pomnilnik razdeljen na veliko majhnih blokov v spomin delilnikov vidika. In to postane težje in težje najti pomnilnika za druge stvari. Torej, namesto, če boste morali to storiti, če morate rastejo vektor iz enega konca na drugo, namesto da dodajo k njej ves čas, jo pre-dodeliti. Vec puščica, vector dolžina znaša 1,000, ali karkoli. In potem si lahko samo določite do vrednosti enega prenašalca čas, ko ste ga dodeli enkrat. Stekel sem v to, še enkrat, moje poletno delo ko sem pisal NRA diferencial enačba reševalec. Ni simbolična numerično. Ideja je, da ko imate ena vrednost za vašo rešitev, ste uporabili, da je za izračun naslednjega. Torej, moja naravna naiven Naklon je reči, OK, tako da bom začela z vektorjem da je znatna dodana vrednost. Izračunati od tega naslednje vrednosti da gre na mojo rešitev vektorja, in priložite to. Ustvarite nekaj drugega, dodajte to. To je šlo zelo, zelo počasi. In ko sem to spoznal in sem spremenil svoj sistem s tem da se doda k temu vektorju kot 10.000 do 100.000-krat, tik pred dodelitvijo vektor in samo vožnjo s tem. Imam več kot 1.000 krat pospešijo. Torej, to je zelo pogost past za R programiranja. Če morate zgraditi vektor kos za kosom, ga pre-dodeliti. Druga pogosta izlet up-- to je moja zadnja slide, ne worry-- je obravnavanje napak. R, da se odkrito, ne res je to zelo dobro. Obstaja veliko Težave, ki se lahko Izbijati. Na primer, če boste dobili niz ali vektor iz funkcije da si pričakoval enoten vrednost izvira, ali obratno, in se boste peljali, da v funkciji, ki si napisal pričakoval eno vrednost, da lahko problem. Nekatere funkcije vrne null tako kot, recimo, branju iz neobstoječ ključ na seznamu. Vendar se null ni všeč C Če jo boste poskušali prebrati iz starega kazalca, [neslišno] NULL kazalec, je samo SEG napake in če ste v vašem razhroščevalniku je vam pove, kje ste. Namesto, null bo do-- funkcije bo naredil nepredvidljive stvari če si roko null. Like, če ste predali max null, to vam bom dal negativno neskončnost. In tako, ja. In tako se je to zgodilo se mi enkrat, ko sem imel spremenila kup polj v moj seznam strukturi enkrat brez njihovega spreminjanja drugje ko sem bral od njih. In potem sem dobil vse vrste random Rezultati INFINITY obrezovanje in jaz ne vem, od kod so prišli. In na žalost, tam je nobene prave R strog način kjer lahko rečete, če kaj Izgleda da je morda prišlo do napake, samo ustaviti tam, tako da sem lahko discipliniran in popraviti. Vendar pa je nekaj imenuje stop, če ni. To je enakovredno uveljavljati C je, če ste se pogovarjali o tem. Ne verjamem, C uveljavljati je tema, predavanje, vendar vaš vodja oddelek Morda so šli preko njega. In ne, če ni v bistvu ima vsaka predikat, da vsaka izjava, ki je lahko resnična ali neresnična. In če je napačna, se ne ustavi svoj program. To vam pove točno to, kar vam linijo so bili in kaj stanje ni uspelo. In to zelo uporaben, na primer, sanity preverjanje, funkcijski vhodi. Torej, če imate funkcija in vi pričakujete, recimo, če naj bi mi dali datum, hočem datumi so samo vektor dolžine 1 in nekje med 1 in 31. In če ne, vem, kaj je šlo narobe. In sem se odločil, da bi se ustavili pred tem ima naključno potrkal na učinke z oznako da je težje izslediti skozi. Tako da je ena od možnih uporabite za zaustavitev, če ne. Kakorkoli že, OK. Tako da je konec. Najlepša hvala za prihod. Sem čin amater pri tem. Tako mi je žal, če ste dolgčas ali zmedeni, ali tisto, kar imate. Vesel sem, da sprejmejo vprašanja po e-pošti na connorharris@college.harvard.edu~~pobj. To velja tudi za vsakogar gledal to v živo ali kasneje. Prav tako, čeprav nisem TF, sem tudi zelo pripravljeni služiti kot neuradno svetovalec za vsakogar, ki je pomočjo raziskav v končni projekt. Če bi radi, da potem pa se pogovorite s svojim TF in nato napišite mi email, tako Vem, kaj delate in da bom lahko ustanovi sestanek krat z vami, če želite. Torej še enkrat, najlepša hvala. Upam, da si užival. OBČINSTVO: [neslišno]. CONNER HARRIS: Seveda. OBČINSTVO: Kakšno projekta bi CS študent uporabiti R za? CONNER HARRIS: Torej, če niste storili nekaj, kar je povsem v rudarjenje podatkov, na primer, in tam veliko stvari lahko narediš s tem s podatki rudarstvo in strojno učenje. Morda boste želeli uporabiti R za sestavni del nečesa. Prinesel sem gor, prvotno zgledu o če pišete spletno stran in želite teči avtomatizirano statistična analiza vašega strežnika dnevniki v določenem času vsak dan, da bi bilo nekaj, kar je zelo enostavno narediti v samo kratko R skript, ki lahko načrtujete teči vsak večer, na primer. In prepričan sem, če obstaja kakršen koli razlog, da bi želim statistiko ali grafov zmogljivosti in imajo to samodejno zažene namesto imajo za interakcijo s stvarmi v Excelu, na primer, da je nekaj boste morda želeli uporabiti R za. Torej, vse več vprašanj, preden grem? Ne? Dobro, dobro, še enkrat, hvala hvala za prihod.