[GIOCO MUSIC] DUSTIN TRAN: Hi. Il mio nome Dustin. Quindi io presenterò Analisi dei dati in R. Solo un po 'di me stesso. Sono attualmente uno studente laureato in Scienze Ingegneria e applicate. Io studio un incrocio di learning e statistica machine così Analisi dei dati in R è davvero fondamentale per quello che Faccio ogni giorno. E R è particolarmente buono per l'analisi dei dati perché è molto buono per la prototipazione. E di solito, quando si sta facendo una sorta di analisi dei dati, molti dei problemi stanno per cognitiva. E così si vogliono solo alcuni davvero buona lingua è solo un bene per fare funzioni integrate, in contrapposizione per avere a che fare con le cose di basso livello. Quindi, in principio, sto solo andando per introdurre quello che è R, perché avrebbe si desidera utilizzarlo, e poi andare oltre in qualche demo, e basta andare da lì. Allora, qual è R? R è solo un linguaggio sviluppato per il calcolo statistico e visualizzazione. Che cosa questo significa è che si tratta di un linguaggio molto eccellente per qualsiasi tipo di cosa che si occupa di incertezza o la visualizzazione dei dati. In modo da avere tutti questi distribuzioni di probabilità. Ci stanno per essere funzioni integrate. Avrete anche eccellenti tramando pacchetti. Python è un altro concorrente lingua per i dati. E una cosa che trovo che R è molto meglio è la visualizzazione. Quindi, quello che vedrete nella demo come bene è solo un linguaggio molto intuitivo che funziona molto bene. E 'anche gratuito e open source, come è un altro buon linguaggio immagino. E qui, un gruppo di soli parole chiave gettati voi. E 'dinamica, nel senso se si dispone di un tipo specifico assegnato a un oggetto che sarà solo cambiare al volo. E 'pigro quindi è intelligente su come lo fa calcoli. Funzionale significa che può davvero funzionare in base al largo di funzioni così anything-- qualsiasi tipo di manipolazione sei facendo, sarà basato off funzioni. Quindi operatori binari, per esempio, sono funzioni solo intrinsecamente. E tutto ciò che si sta andando a fare è andando a essere eseguito off funzioni stessa. E poi orientato agli oggetti pure. Così qui è una trama XKCD. Non solo perché mi sento come XKCD è fondamentale per qualsiasi tipo di presentazione, ma perché Mi sento come questo davvero martelli punto che un sacco di momento in cui si sta facendo una sorta di dati analisi, il problema non è tanto quanto velocemente si corre, ma quanto tempo sta andando a prendere per programmare l'attività. Così qui è solo analizzare se strategia a o b è più efficiente. Questo sarà qualcosa che sei andare a fare molto con in sorta di linguaggi di basso livello dove hai a che fare con difetti seg, allocazione della memoria, inizializzazione, anche rendendo le funzioni built-in. E questa roba è tutto gestito molto, molto elegante in R. Quindi, solo a martellare questo punto, il più grande collo di bottiglia sta per essere cognitivo. Quindi analisi dei dati è un problema molto difficile. Sia che si sta facendo machine learning o sei facendo proprio una sorta di esplorazione dei dati di base, non si vuole avere prendere un documento e quindi compilare qualcosa che ogni volta che si vogliono vedere ciò che una colonna assomiglia, cosa particolare le voci in una matrice assomiglia. Così si vuole solo avere alcuni interfaccia veramente bello è possibile eseguire una semplice funzione che gli indici a qualunque vuoi e basta eseguire da lì. E avete bisogno di dominio lingue specifiche per questo. E R sarà davvero aiutare a definire il problema e risolverlo in questo modo. Così qui è una mostra programmazione trama popolarità di R come è andata nel corso del tempo. Quindi, come si può vedere, come la 2013 o quindi appena fatto saltare in aria tremendamente. E questo è stato solo a causa di tale enorme tendenza nel settore della tecnologia su Big Data. Inoltre, non solo la tecnologia industria, ma in realtà qualsiasi che-- industria perché molte industrie sono una sorta di fondamentale cercando di risolvere questi problemi. E di solito, si può avere qualche buon modo di misurare questi problemi o addirittura definirli o risolverli utilizzando i dati. Quindi penso che in questo momento R è il 11 ° lingua più popolare sul TIOBE ed è cresciuta da allora. Quindi, ecco un po 'di più caratteristiche di R. Ha un numero enorme di pacchetti e per tutte queste cose diverse. Così ogni volta che hai un certo problema, la maggior parte il tempo di R avrà tale funzione per voi. Quindi, se si desidera costruire una sorta di macchina algoritmo di apprendimento chiamato Casuale Foresta o Decision Trees, o anche cercando di prendere la media di una funzione o una qualsiasi di queste cose, R avrà tale. E se non ti interessa ottimizzazione, una cosa che è comune è che dopo aver finito la prototipazione una sorta di linguaggio di alto livello, si buttare dentro-- vi sarà solo la porta che oltre a un certo linguaggio di basso livello. Cosa c'è di buono R è che una volta che sei fatta prototipazione, è possibile eseguire C ++, o Fortran, o qualsiasi di questi quelli più bassi di livello direttamente in R. Ecco, questo è realmente caratteristica fredda su R, se davvero a cuore il punto di ottimizzazione. Ed è anche molto buono per visualizzazioni web. Così D3.js, per esempio, è Credo che un altro seminario che abbiamo presentato oggi. E questo è davvero impressionante per facendo visualizzazioni interattive. E D3.js si presuppone una sorta di dati da tracciare e R è un ottimo modo di poter fare l'analisi dei dati prima di esportarlo verso D3.js o anche solo correre Comandi in R si D3.js, nonché tutti questi altre librerie come bene. Così che era solo l'introduzione di ciò che è R e perché si potrebbe usarlo. Così si spera, ho si convinse qualcosa su solo cercando di vedere che cosa è come. Quindi ho intenzione di andare avanti e passare attraverso alcuni fondamentali sugli oggetti R e ciò che si può davvero fare. Così qui è solo un mazzo di comandi matematica. Quindi dici you're-- si vuole costruire te stesso linguaggio e si desidera solo di avere un sacco di diversi strumenti. Qualsiasi tipo di operazione si pensa che ci si voglio è praticamente sta per essere in R. Così qui è 2 più 2. Qui è 2 volte pi. R ha un sacco di costanti incorporate che ti frequentemente usate come pi, e. E poi, ecco 7 più runif, così runif di 1. Questa è una funzione che è genera una uniforme casuale da 0 a 1. E poi c'è 3 alla potenza di 4. Ci sono radici quadrate. C'è log. Così log farà di base esponenziale per sé. E poi, se si specifica una base, poi si può fare quello base che si desidera. E poi qui ci sono alcuni altri comandi. In modo da avere 23 mod 2. Poi ci sono il resto. Allora avete scientifica Notazione se anche voglia di fare solo più e le cose più complicate. Così qui è l'assegnazione. Incarichi così tipico in R è fatto con una freccia quindi è inferiore e quindi il trattino. Così qui sto solo assegnando 3 per la val variabile. E poi sto stampando val e quindi stampa tre. Per impostazione predefinita, in interprete R, si stamperà le cose per voi così non è necessario specificare stampare un val ogni volta che si desidera stampare qualcosa. Si può solo fare val e allora lo farà per voi. Inoltre, è possibile utilizzare Equals tecnicamente come un operatore di assegnazione. Ci sono lievi sfumature tra utilizzando la freccia operatore e di uguale operatore per le assegnazioni. Per lo più per convenzione, tutti sarà solo utilizzare l'operatore freccia. E qui, sto assegnando questo Notazione obliqua denominata 1 colon 6. Questo genera un vettore da 1 a 6. E questo davvero bello perché poi basta assegnare il vettore di val e che funziona da solo. Quindi questo è già in corso da un single-- un dato molto intuitivo la struttura di un semplice doppio qualche tipo di tipo in un vettore e che raccoglierà tutto i valori scalari per voi. Così, dopo essere andato da scalare, si hanno oggetti R e questo è un vettore. Un vettore è un qualsiasi tipo di raccolta dello stesso tipo. Così qui sono un gruppo di vettori. Quindi questo è numerico. Numeric è il modo di R di dire doppio. E così per impostazione predefinita, qualsiasi numero sarà un doppio. Quindi, se avete c di 1,1, 3, negative 5.7, c è una funzione. Questo concatena tutti e tre numeri in un vettore. E questo essere-- quindi se si nota 3 di per sé, Normalmente si potrebbe pensare che questo è come un intero, ma perché tutti i vettori sono dello stesso tipo, questo è un vettore di doppi o numerico in questo caso. RNorm è una funzione che genera variables-- normale standard o valori normali standard. E sto specificando due di loro. Così sto facendo RNorm 2, assegnando che a sviluppatori, e poi sto stampando sviluppatori. Quindi questi sono solo due valori normali casuali. E poi INT se lo fai che ti interessano interi. Quindi questo è solo sulla memoria allocazione e salvare la dimensione della memoria. Quindi si dovrà accodare i numeri di capitale L. In generale, questo è Notazione storico di R per qualcosa chiamato intero lungo. Così la maggior parte del tempo, sarete essere trattare con doppie. E se mai sarà più tardi sul ottimizzare il codice, si può semplicemente aggiungere questi L's dopo o durante lo se siete come precognitiva su ciò si sta andando a fare queste variabili. Così qui è un carattere vettoriale. Così, ancora una volta, sto concatenando tre corde questa volta. Si noti che le corde doppie e singole stringhe sono uguali in R. Così ho arthur e Marvin e di così quando sono fuori stampa, tutti stanno andando a mostrare corde doppie. E se anche voi volete includere la stringa doppia o singola nei vostri personaggi, allora si può o alternare le corde. Così Marvin per il secondo elemento, questo è andando a show-- voi appena hanno doppie corde e poi una singola stringa quindi questo è alternata. In caso contrario, se si desidera utilizzare un doppio operatore di stringa in una doppia corda quando si sta dichiarando, allora è sufficiente utilizzare l'operatore di fuga. Così si fa il doppio della stringa backslash. E, infine, abbiamo anche avere vettori logici. Così logical-- così TRUE e FALSE, e sono sta per essere tutte le lettere maiuscole. E poi, di nuovo, sto concatenando e poi assegnarli a bool. Così bool sta per dimostrare si VERO, FALSO e VERO. Così qui è l'indicizzazione vectorized. Quindi, all'inizio, ho Sto prendendo un function-- questo si chiama un sequence-- sequenza da 2 a 12. E mi sto prendendo una sequenza 2. Così sta andando a fare 2, 4, 6, 8, 10 e 12. E poi, io sono l'indicizzazione per ottenere il terzo elemento. Quindi una cosa da tenere a mente è che gli indici di R a partire dal 1. Così vals 3 sta per dare il terzo elemento. Questa è una sorta di diverso dagli altri lingue dove inizia da zero. Quindi, in C o C ++, ad esempio, si è andando ad ottenere il quarto elemento. E qui è vals da 3 a 5. Così una cosa che è davvero cool è che si può generare variabili temporanee all'interno e poi basta usarli al volo. Così qui è da 3 a 5. Così sto generando un vettore 3, 4 e 5 e Sto indicizzazione per ottenere il terzo, quarto, e il quinto elemento. Così allo stesso modo, è possibile abstract questo per fare solo qualsiasi tipo di un vettore che ti dà l'indicizzazione. Così qui è vals e poi il primo, terzo, e sesto elementi. E poi, se volete per fare un complemento, quindi basta fare il meno dopo e che ti darvi tutto ciò che non è la primo, terzo, o sesto elemento. Quindi questo sarà 4, 8 e 10. E se si desidera ottenere ancora più avanzato, è possibile concatenare vettori booleani. Quindi questo indice sta per darvi questo vettore booleano lunghezza 6. Così rep TRUE comma 3. Questo si ripeterà TRUE tre volte. Quindi questo vi darà un vector VERO, VERO, VERO. rep FALSE 4-- questo sta per darvi un vettore di FALSO, FALSO, FALSO, FALSO. E poi c sta per concatenare questi due booleani insieme. Quindi si sta andando ad ottenere tre Trues e poi quattro FALSEs. In modo che quando si vals indice, sei andando a ottenere il VERO, VERO, VERO. Così che sta per dire di sì, Voglio questi tre elementi. E poi FALSO, FALSO, FALSE, FALSE sta andando per dire no, non voglio quegli elementi quindi non sta andando a restituirli. E credo che ci sia in realtà un errore di battitura qui perché questo sta dicendo ripetere TRUE 3 e ripetere FALSE 4, e tecnicamente, si hanno solo sei elementi così ripetono FALSE, dovrebbe essere ripetuta FALSE 3. Penso che R è anche abbastanza intelligente come che se si specifica 4 qui, poi Non sarà nemmeno errore fuori. Appena gli darà questo valore. Quindi sarà solo ignorare il quarto FALSE. Così qui è l'assegnazione vectorized. Quindi set.seed-- questo solo imposta la seme per numeri pseudocasuali. Così sto impostando il seme 42, il che significa che se genero tre casuale normale valori, e poi se si Eseguire set.seed da soli computer utilizzando lo stesso valore 42, allora si ottiene anche il stessi tre normali casuali. Quindi questo è veramente buono per riproducibilità. Di solito, quando si sta facendo un po ' tipo di analisi scientifica, si vorrebbe impostare il seme. In questo modo altri scienziati può solo riprodurre esattamente lo stesso codice che avete fatto, perché avranno l'esatto stesse variabili aleatorie che-- o casuale valori che hai preso fuori pure. E così l'assegnazione vectorized qui sta mostrando i vals 1 a 2. Così prende i primi due elementi di vals e poi li assegna a 0. E poi, si può anche solo fare il cosa simile con i booleani. Quindi vals non è uguale a 0-- questa volontà dare un FALSE vettore, FALSE, TRUE in questo caso. E poi, sta andando a dire qualsiasi di quegli indici che fossero vere, poi sta andando assegnare quello a 5. Così prende il terzo elemento qui e poi lo assegna a 5. E questo è davvero bello rispetto ai linguaggi di basso livello dove è necessario utilizzare cicli for per fare tutte queste cose vectorized perché è solo molto intuitivo ed è un unico one-liner. E ciò che è grande circa Notazione vectorized è che in R, questi sono specie di incorporato in modo che siano quasi più veloce come fare in un linguaggio di basso livello come invece di fare un ciclo for in R e poi averlo fare l'indicizzazione dinamica stessa. E che sarà più lento di fare questo genere di cose vectorized dove può farlo in parallelo, dove che sta facendo in filettatura fondamentalmente. Così qui è vettorializzare operazioni. Così sto generando un valore da 1 a 3, assegnazione che per vec1, da 3 a 5, vec2, sommandoli. Li aggiunge componente-saggio così è 1 plus 3, 2 più 4, e così via. vec1 tempi vec2. Questo moltiplica i due valori dei componenti saggio. Quindi è 1 volte 3, 2 volte 4, e poi 3 volte 5. E poi, allo stesso modo si può anche fare comparisons-- confronti logici. Quindi è FALSE FALSE TRUE in questo caso perché 1 non è superiore a 3, 2 non è superiore a 4. Questo è, credo, un errore di battitura, 3 è sicuramente non superiore a 5. Sì. E così si può solo fare tutto queste semplici operazioni perché la loro ereditato dalle classi stesse. Così che era solo il vettore. E questo è una specie di fondamentale Oggetto R perché dato un vettore, è possibile costruire gli oggetti più avanzate. Quindi, ecco una matrice. Questo è essenzialmente l'astrazione di ciò è una matrice stessa. Quindi in questo caso, è tre diversi vettori, dove ognuno è una colonna, o si può considerare come ciascuno è una riga. Così sto memorizzare una matrice da 1 a 9 e poi sto specificando 3 file. Così da 1 a 9 vi darà un vettore 1, 2, 3, 4, 5, 6, e fino a 9. Una cosa da tenere anche a mente è che Negozi R valori in formato column-major. Quindi, in altre parole, quando si vede 1 a 9, sta andando a memorizzare them-- che sta per essere 1, 2, 3 nella prima colonna, e poi si farà 4, 5, 6 nella seconda colonna, e poi 7, 8, 9 nella terza colonna. Ed ecco un altro funzioni comuni che è possibile utilizzare. Quindi dim mat, questo vi darà le dimensioni della matrice. E 'intenzione di tornare voi un vettore di dimensione. Quindi, in questo caso, poiché la nostra matrice è di 3 per 3, sta andando per darvi un vettore numerico che è 3 3. E qui è solo mostrando moltiplicazione di matrici. Così di solito, se lo farete asterisk-- così mat asterisco mat-- questo sta per essere funzionamento del componente-saggio o quello che è chiamato il prodotto di Hadamard. Così sta andando a fare ogni elemento componente-saggio. Tuttavia, se si desidera multiplication-- matrix quindi moltiplicando le prime volte fila prima colonna della seconda matrice e così on-- si usa questa operazione cento. E t di tappeto è solo un operazione per trasposizione. Così sto dicendo che prendere la trasposizione in la matrice, moltiplicarlo per la matrice stesso. E poi sta andando a tornare a un altro 3 da 3 mostrando matrice il prodotto che ci si vuole. E così che era di matrice. Ecco quello che è chiamato un frame di dati. Un frame di dati si può pensare come una matrice, ma ogni colonna stessa sta per essere di tipo diverso. Così che cosa è veramente interessante di dati fotogrammi è che in analisi dati stessi, si sta andando ad avere tutto questo dati eterogenei e tutte queste realtà cose disordinato dove ciascuna delle colonne stessi possono essere di diversi tipi. Così qui sto dicendo a creare un frame di dati, fare interi da 1 a 3, e poi hanno anche un carattere vettoriale. Così posso indice attraverso ciascuna di queste colonne e poi vado a prendere i valori stessi. E si può anche fare una sorta di operazioni sui frame di dati. E la maggior parte del tempo in cui si è fare l'analisi dei dati o una sorta di pre-elaborazione, sarete lavorare con queste strutture di dati in cui ogni colonna sta essere di tipo diverso. Infine, quindi queste sono essenzialmente solo i quattro oggetti essenziali List R. sarà solo raccogliere qualsiasi altri oggetti che si desidera. Così memorizzerà questo in uno variabile che si può facilmente accedere. Così qui, mi sto prendendo una lista. Sto dicendo cose uguale a 3. Quindi ho intenzione di avere un elemento in la lista, e questo si chiama roba, e sta andando ad avere il valore 3. Posso anche creare una matrice. Quindi questo è da 1 a 4 e riga end 2 è uguale, in modo da 2 a 2 matrice. Anche nella lista e si chiama mat. moreStuff, una stringa di caratteri, e anche un altro elenco di per sé. Quindi questa è una lista che è 5 e orso. Così ha il valore 5 e ha l'orso stringa di caratteri ed è una lista all'interno di una lista. Così si può avere questi cose ricorsive dove avete un another-- digitare all'interno del tipo. Così allo stesso modo, si può avere una matrice dentro un'altra matrice e così via. E l'elenco è solo un buon modo di raccolta e aggregazione tutti questi diversi oggetti. E, infine, ecco è solo aiutare in caso Questo era solo andato molto rapidamente. Così ogni volta che sei confuso su una qualche funzione, si può fare l'aiuto di quella funzione. Così si può fare a matrice aiuto o una matrice punto interrogativo. E l'aiuto e il punto interrogativo sono solo una scorciatoia per la stessa cosa quindi sono alias. lm è una funzione che appena fa un modello lineare. Ma se solo avete idea di come tale opere, si può solo fare l'aiuto di lm e che ti do un po ' tipo di documentazione Sembra un po 'come un pagina di manuale in Unix, dove avete una breve descrizione di ciò che lo fa, anche quali sono i suoi argomenti sono, quello che ritorna, e solo consigli su come usarlo, ed alcuni esempi pure. Così mi permetta di andare avanti e spettacolo alcuni demo di usare R. OK. Così sono andato molto rapidamente solo i dati strutture e una sorta di op-- alcune delle operazioni. Ecco alcune funzioni. Così qui sto solo andando per definire una funzione. Così sto usando anche operatore di assegnazione qui, e poi io sto dicendo dichiareremo come funzione. E ci vuole il valore x. Quindi questo è un valore che si desidera e ho intenzione di tornare x se stesso. Quindi questa è la funzione identità. E ciò che è interessante di questo rispetto ad altre lingue e un altro di basso livello lingue è che x possono essere di qualsiasi tipo per sé e tornerà quel tipo. Così si può imagine-- quindi cerchiamo me solo correre in fretta. Scusi. Così una cosa che vorrei anche ricordare è che questo editor sto usando si chiama rstudio. Questo è ciò che si chiama un IDE. E una cosa che è veramente bella di questo è che incorpora un sacco di cose che vogliono fare in R da solo solo molto intuitivo. Così qui è una console interprete. Così allo stesso modo, è anche possibile ottenere questo prima console solo facendo un R. capitale E questo è esattamente stessa cosa come la console. Quindi posso solo fare la funzione id x, x, x. E then-- e poi che andrà bene se stesso. Così rstudio è grande perché ha la console. Ha anche i documenti vuoi girare su. E poi ha alcune variabili che si può vedere in ambienti. E allora, se avete fare trame, allora può solo vedere qui, a differenza la gestione di tutte queste diverse finestre da soli. Io in realtà personalmente uso Vim, ma io sentire come rstudio è eccellente solo per ottenere una buona idea di come utilizzare R. Solitamente, quando si sta cercando di imparare qualche nuova attività, non si desidera gestire troppe cose in una volta. Quindi R è solo un rstudio very-- è un ottimo modo per imparare R senza dover affrontare tutte queste altre cose. Così qui sto correndo id ciao. Questo restituisce ciao. id 123. Ecco un vettore di numeri interi. Così allo stesso modo, perché si può prendere qualsiasi sorta di valore, si può fare ritorno id x quindi restituisce 1234 e 5. E lasciatemi solo mostrarti che questo è effettivamente un numero intero. E allo stesso modo, se si fa di classe id x, che sta per essere un numero intero. E poi, si può anche confrontare i due ed è vero. Così sto controllando se id di x Uguale uguale x e comunicazione che ti dà due Trues. Quindi questo non sta dicendo sono i due oggetti identici, ma sono ognuna delle voci nei vettori identici. Ecco bounded.compare. Quindi questo è un po 'più complicato dal fatto che presenta una condizione if e else e poi bisogna essere in due argomenti alla volta. Quindi x è di qualsiasi tipo. E dico questo secondo argomento è una. Questo può essere qualsiasi cosa pure. Ma per impostazione predefinita, è andare a prendere 5 se non si specifica nulla. Così qui ho intenzione di dire se x è maggiore di a. Quindi, se non si specifica una, essa dice se x è maggiore di 5, poi ho intenzione di tornare TRUE. altro, ho intenzione di tornare FALSE. Così mi permetta di andare avanti e definire questo. E ora ho intenzione di eseguire bounded.compare 3. Così si dice è 3 meno than-- è 3 superiore a 5. No, non è così FALSE. E bounded.compare 3 e ho intenzione a confrontarlo con un uguale 2. Così ora sto dicendo di sì, ora mi vogliono una di essere qualcos'altro. Quindi ho intenzione di dire, si dovrebbe essere 2. Posso sia fare questo tipo di Notazione o dico una uguale 2. Questo è più leggibile in che quando sei guardando questi davvero funzioni complesse che prendere arguments-- multipla e questo può essere decine oftentimes-- solo dicendo A è uguale a 2 è più leggibile per voi in modo che più avanti nel futuro si sa che cosa si sta facendo. Quindi, in questo caso, sono detto è 3 superiore a 2. Sì. E allo stesso modo, posso solo rimuovere questo e dire, è maggiore di 3 2 dove a è uguale 2. E questo è anche vero. Sì? AUDIENCE: Sei esecuzione riga per riga? DUSTIN TRAN: Sì sono. Quindi quello che sto facendo qui è l'assunzione di questo testo document-- e ciò che è grande circa rstudio è che Posso solo eseguire un short-- un tasto di scelta rapida. Così sto facendo Control-Invio. E poi, io sto prendendo il riga nel documento di testo e poi mettere nella console. Così qui sto dicendo, bounded.compare e sto facendo Control-X. Quindi posso solo fare funzionare anche qui. E allora che prendo la line e poi mettere qui. E poi allo stesso modo, posso fare funzionare qui. E allora sarà solo continuare definizione le linee nella console del genere. E se si nota anche il riccio bretelle ci sono proprio come nella sintassi C. x-- se la se la condizione è anche intenzione di usare le parentesi e poi è possibile utilizzare altro. Un altro è else if. Quindi questo sarà x uguale uguale a, per esempio. E poi ho intenzione di restituire qualcosa qui. Si noti che ci sono due diversi cose qui che sta succedendo. Uno è che qui sto specificando restituire il valore TRUE. Qui sto solo dicendo x. Così R di solito di default prendere l'ultima arguments-- o prendere l'ultima riga del codice, e che sarà quello che è tornato. Ecco questo è lo stesso cosa fare ritorno x. E proprio per mostrarvi. E allora, funzionerà così. Quindi lasciatemi continuare con questo. Quindi else if. E davvero, posso tornare niente mi piacerebbe. Quindi non hanno nemmeno bisogno di ritorno booleani tutto il tempo, Posso solo tornare qualcosa di diverso. Così posso fare ritorno dell'orso. Quindi, se x è uguale uguale a, sta andando a tornare orso. In caso contrario, si sta andando a tornare TRUE. Posso anche fare un vettore o davvero nulla. E normalmente in modo statico lingue digitato, dovresti specificare un tipo qui. E notate che può solo essere qualsiasi cosa. E R è abbastanza intelligente che sarà solo fare questo e funzionerà benissimo. Così mi permetta di definire questo. Unexpected-- oh scusate. Dovrebbe essere una parentesi graffa qui. OK. Freddo. Bene. Così ora confrontiamo 3 e uguale a 3. Così dovrebbe return-- yeah-- il valore orso. Così ora una cosa più generale è come che dire di altre strutture di dati. In modo da avere questa funzione. Si tratta di andare a lavorare su qualsiasi tipo di valore come 3 o numerico, in altre parole, doppio. Ma che dire qualcosa di simile a un vettore. Che cosa succede se si fare-- quindi sono andare per assegnare val, per esempio, da 4 a 6. Quindi, se torno questo, questo è un vettore di 4, 5, 6. Ora vediamo cosa succede se faccio bounded.compare val. Quindi questo sta per darvi 15 1251. In altre parole, è dire se si guarda a questa condizione così si dice x è meno di una o qualcosa. Quindi questo è un po ' confusione perché ora tu non sai cosa sta succedendo. Quindi credo che una cosa che è veramente bene solo cercando di eseguire il debug è che si può solo fare val è maggiore di un e vedere cosa succede lì. Così val-- a è di default 5 così diciamo solo Do Val superiore a 5. Quindi questo è un vettore FALSE FALSE TRUE. Così ora quando stai guardando questo, sta andando a dire se, e poi sta andando a darvi questa è un vettore di FALSE FALSE TRUE. Così, quando si passa questo in R, R non ha idea di quello che stai facendo. Perché aspetta un unico valore, che è un booleano, e ora si sta dando un vettore di valori booleani. Quindi per default, R è solo per dire che diamine, Ho intenzione di assumere che sei andando a prendere il primo elemento qui. Quindi ho intenzione di say-- vado supporre che questo è FALSE. Così sta andando a dire no, questo non è giusto. Allo stesso modo, sta andando a essere val è uguale uguale a. No, mi dispiace 5. Ed è anche andando essere falsa pure. Così sta andando a dire di no, Non è vero e quindi è andando a restituire questo ultimo. Quindi questa è sia una cosa buona o cattiva cosa, a seconda di come lo si visualizza. Perché quando sei la creazione di queste funzioni, in realtà non sa cosa sta succedendo. Così a volte si vorrebbe un errore, o forse si desidera solo un avvertimento. In questo caso, R non lo fa. Quindi è davvero fino a base di fuori di ciò che pensate che la lingua dovrebbe fare in questo caso se si passa in un vettore di valori booleani quando si sta facendo una condizione if. Quindi cerchiamo di dire che hai avuto l'originale uno con se altro ritorno TRUE e sei andando a ritorno FALSE. Quindi un modo di astrazione questo per dire che non hanno nemmeno bisogno di questa cosa condizionale. Un'altra cosa che posso fare è solo restituendo i valori stessi. Quindi, se si nota, se si do val è maggiore di 5, questo sta per restituire un vector FALSE FALSE TRUE. Forse questo è ciò che si desiderare per bounded.compare. Si desidera restituire un vettore di valori booleani dove confronta ciascun valore a se stessi. Così si può solo fare bounded.compare funzione di x, un uguale 5. E poi invece di fare questo se altro stato, Sto solo andando a tornare x è maggiore di 5. Quindi, se è vero, allora sta andando a tornare TRUE. E poi se non lo è, è andando a ritorno FALSE. E questo lavoro per qualsiasi di queste strutture. Così posso bounded.compare c 1 6 o 9 e poi ho intenzione di dire a è uguale 6, per esempio. E poi sta andando a dare il giusto booleano vettore che si sta progettando. Quindi questi sono solo funzioni e ora lasciatemi mostrarvi alcune immagini interattive. Non credo che in realtà sono Wi-Fi qui così lasciatemi andare avanti e saltare questo credo. Ma una cosa che è cool però è che se si voler testare un gruppo di comandi di dati diversi, vi è un gruppo di diverse serie di dati che sono già precaricati in R. Quindi uno di loro è chiamato iris dataset. Questo è uno dei più noti quelli di apprendimento automatico. Potrai solito solo fare una sorta di casi di test per vedere se il codice viene eseguito. Così facciamo solo controllare quello dell'iride è. Quindi questa cosa sta andando essere un frame di dati. Ed è una specie di lungo perché Ho appena stampato fuori iris. E 'stampare l'intera cosa. Così ha tutti questi diversi nomi. Quindi iride è una raccolta di fiori diversi. In questo caso, si sta dicendo si le specie di esso, tutte queste diverse larghezze e lunghezze del sepalo e il petalo. E così normalmente, se si desidera stampare iris, per esempio, non si vuole avere fare tutto questo perché che può subentrare l'intera console. Così una cosa che è veramente bella è la funzione testa. Quindi, se lo farete testa iris, questo vi darà le prime cinque righe, o sei immagino. E allora bene voi, può solo indicare qui. Quindi 20-- questo darà i primi 20 righe. E io in realtà ero tipo di sorpreso che questo mi ha dato sei così mi permetta di andare avanti e verificare iris-- o la testa, mi dispiace. E qui darà la documentazione di ciò che fa il capo valore. Così restituisce la prima o l'ultima di un oggetto. E poi ho intenzione di guardare le impostazioni predefinite. E poi si dice che il default Metodo di testa x e n uguale 6L. Così questa restituisce i primi sei elementi. E allo stesso modo se si nota qui, non ha dovuto specificare n uguale 6. Di default usa sei, immagino. E poi, se voglio specificare un determinato valore, allora posso vedere quello. Quindi è alcuni comandi semplici e eccone un altro che è solo-- bene, I can-- questo è in realtà un po 'più complesso, ma questo sarà solo prendere la classe di ogni colonna del set di dati dell'iride. Quindi questo vi mostrerà che cosa ciascuno di questi colonne sono in termini di tipi. Quindi la lunghezza sepalo è numerico, larghezza sepalo è numerico. Tutti questi valori sono solo numerico perché si può dire da questi dati strutturano queste sono tutti di andare a numerico. E la colonna di Species sta per essere un fattore. Così di solito, si potrebbe pensare che questo è come una stringa di caratteri. Ma se lo farete irisSpecies, e poi ho intenzione di fare capo 5, e questo sta per stampare i primi cinque valori. E poi notare questo livello. Quindi questo è saying-- questo è il modo di R di avere variabili categoriali. Così, invece di avendo stringhe di caratteri, ha livelli specificando che di queste cose sono. Quindi diciamo irisSpecies 1. Quindi, che cosa si vuole fare qui è che sono sottoinsiemi di questa colonna Species. Quindi questo prende il Colonna Specie e poi indici per ottenere il primo elemento. Quindi questo dovrebbe darvi setosa. E ti dà anche i livelli di qui. Così si può confrontare anche questo per la setosa carattere e questo non va per essere vero perché uno è di tipo diverso rispetto agli altri. O Credo che sia vero perché R è più intelligente di quello. E sembra a questo e poi dice, forse questo è ciò che si desidera. Così sta andando a dire il carattere stringa setosa è la stessa di questa. E poi allo stesso modo, è possibile anche solo afferrare questi come così via. In modo che è solo una sorta di comandi rapidi del dataset. Quindi, ecco un po 'di esplorazione dei dati. Quindi questo è un po 'più coinvolto con l'analisi dei dati. E questo è preso da qualche bootcamp in R per a Berkeley. Così biblioteca straniera. Quindi ho intenzione di caricare in un libreria che si chiama straniera. Quindi questo sta per darmi read.dta così supporre che ho questo set di dati. Questo è memorizzato nella corrente directory della mia console lavorare. Così facciamo solo vedere cosa la directory di lavoro è. Quindi, ecco la mia directory di lavoro. E la lettura dei dati di punti, questo cosa, sta dicendo questo file si trova nella cartella dei dati di questa directory di lavoro corrente. E questo non è read.dta un comando predefinito. Credo che ho caricato in già. IEI assunto ho caricato questo già. Ma così read.dta non sta andando ad essere un comando predefinito. Ed è per questo che si sta andando ad avere per caricare in questa biblioteca package-- questo pacchetto chiamato straniera. E se non hai il pacchetto, penso straniero è uno di quelli incorporati. In caso contrario, si può anche fare install.packages e questo installare il pacchetto. E questo vi darà R. Uh, no. E poi io sono solo intenzione di smettere questo perché l'ho già. Ma ciò che è veramente bella di R è che la gestione dei pacchetti sistema è molto elegante. Perché sarà memorizzare tutto davvero ben per voi. Quindi in questo caso, sta andando a memorizzare in, credo, questa biblioteca qui. Così ogni volta che si desidera installare nuovi pacchetti, è altrettanto semplice come facendo install.packages e R gestirà tutto i pacchetti per voi. Quindi non c'è bisogno di fare qualcosa in Python, dove si ha il pacchetto esterni manager come carta Anaconda dove sei doing-- si installa pacchetti al di fuori di Python e poi si tenta di eseguire da soli. Quindi questo è davvero così bello. E install.packages richiede Internet. Si prende da un server e il repository che raccoglie tutto il pacchetti si chiama CRAN. E si può specificare quale tipo di mirror volete scaricare i pacchetti. Così qui sto prendendo questo dataset. Sto leggendo in utilizzare questa funzione. Così mi permetta di andare avanti e farlo. Quindi supponiamo che avete questo dataset e avete assolutamente nessuna idea di cosa sia. E questo in realtà si avvicina abbastanza spesso nell'industria dove avete appena questi tonnellate e tonnellate di cose disordinato e sono incredibilmente senza etichetta. Così qui ho questo dataset e non so che cosa è così io sono solo mostrando di check it out. Quindi ho intenzione di fare a capofitto. Così posso controllare i primi sei colonne di ciò che questo insieme di dati è. Quindi questo è stato, pres04, e poi Tutte queste diverse specie di colonne. E cosa c'è di interessante qui, credo, è che si potrebbe supporre che questo sembra come una sorta di elezione. E credo che proprio da guardando il file chiamare questo è una sorta di collezione dei dati relativi candidati o elettori che hanno votato per i presidenti specifici o candidati alla presidenza per le elezioni del 2004. Così qui è i valori 1, 2 così un modo di memorizzazione i candidati alla presidenza sono i loro nomi. In questo caso, sembra sono valori appena interi. Così 2004 era Bush contro Kerry credo. E ora, diciamo che non sai se 1 corrisponde al Bush o 2 corrisponde a Kerry o e così via e così via, giusto? E questo è, solo a me, un problema abbastanza comune. Che cosa si può fare in questo caso? Quindi cerchiamo di controllare tutte queste altre cose. Stato, sto assumendo questo proviene da diversi stati. PartyId, reddito. Diamo un'occhiata a PartyId. Così forse una cosa che puoi fare è esaminare ciascuna osservazione che hanno un PartyId di repubblicano o democratico o qualcosa. Così facciamo solo un'occhiata a ciò che è PartyId. Quindi ho intenzione di prendere dat e poi vado per fare questo il segno del dollaro operatore che ho fatto in precedenza e questo sta per sottoinsieme di quella colonna. E poi ho intenzione di andare in questo 20, solo per vedere che cosa questo assomiglia. Quindi questo è solo un mucchio di AN. Quindi, in altre parole, si ha dati mancanti di questi ragazzi. Ma si nota anche questo dat PartyId è un fattore quindi questo ti dà diverse categorie. In altre parole, può prendere PartyId Democratico, repubblicano, indipendente, o qualcos'altro. Quindi andiamo avanti e cerchiamo di vedere quale di questi è-- oh, OK. Quindi ho intenzione di sottoinsieme a PartyId e poi guardare quali sono Democratico, per esempio. Questo sta per dare un valore booleano, un enorme booleano di veri e falsi. E ora, diciamo che voglio a sottoinsieme di questi ragazzi. Quindi si tratta di andare a prendere la mia dat e sottoinsieme a qualsiasi osservazioni hanno eguali PartyId uguale democratico. E questo è abbastanza lungo perché ci sono così tanti di loro. Così ora, ho intenzione di andare in questa 20. E come si nota, uguale uguale è interessante in che sei already-- sei anche compreso le AN. Quindi, in questo caso, non è ancora possibile ottenere qualsiasi informazione perché ora avete AN e si desidera solo per vedere quale delle osservazione corrisponde a Democrat e non mancano questi stessi valori. Così come vi sbarazzarsi di questi AN? Così qui sto solo utilizzando il tasto sul mio cursore e poi dire muoversi. E poi qui sto solo andando dire is.na datpartyid. Quindi questo e e prenderà due differenti vettori booleani e dire che sarà TRUE e FALSE per esempio. Così sta andando a fare questo componente-saggio. Così qui sto dicendo take il frame di dati, sottoinsieme a quelli che corrispondono alla carbossimetilazione, e rimuovere qualcuno di loro che non sono NA. Quindi questo dovrebbe will-- dare qualcosa. Vediamo is.na. Proviamo datpartyid is.na. E questo dovrebbe dare you-- sorry-- solo un vettore booleano. E poi, perché è così tanto tempo, Ho intenzione di sottoinsieme di 20. OK. Quindi questo dovrebbe funzionare. E questo sarà anche Trues. Ah, quindi il mio errore è che io io-- usano C ++ e R intercambiabile così faccio questo errore per tutto il tempo. L'e operatore in realtà quello che si desidera. Se non si desidera utilizzare due e commerciali, solo uno solo. OK. Quindi vediamo. Così abbiamo subsetted al PartyId dove sono Democrat e non si perdono i valori. E ora diamo un'occhiata a che quelli che hanno votato per. Così sembra come la maggior parte di essi votato per 1. Quindi ho intenzione di andare avanti e dire che è Kerry. E allo stesso modo, è possibile anche andare a repubblicano e, si spera, questo dovrebbe darvi 2. E 'solo un mucchio di diverse colonne. E in effetti, è 2. Quindi PartyId tutto repubblicano, la maggior parte di loro votano per 2. Così sembra, basta cercando in questo, Repubblicano sarà un very-- o PartyId sta per essere molto grande fattore nel determinare quale candidato sono andare a votare. E questo è ovviamente vero in generale. E questo corrisponde al intuizione, naturalmente. Così sembra come se fossi a corto di tempo così lasciatemi dovrei andare avanti e mostrano alcune immagini veloci. Quindi, ecco qualcosa che sia un po ' più complicata con la visualizzazione. Quindi, in questo caso, ciò è molto semplice analisi di appena controllare quello il presidente del '04 è. Quindi, in questo caso, diciamo che ha voluto rispondere a questa domanda. Quindi supponiamo abbiamo voluto conoscere il voto comportamento nelle elezioni del 2004 presidente e come che varia da gara. Quindi non solo vuoi vedere il comportamento di voto, ma si vuole sottoinsieme di ogni razza e genere di riassumere tale. E si può dire solo da questa notazione complesso che questo è una specie di ottenere confuso. Così uno dei più avanzato R pacchetti che è anche sorta di recente si chiama dplyr. Quindi è questo qui. E ggplot2 ggg-- è solo una bella modo di fare visualizzazioni migliori quello incorporato. Quindi ho intenzione di caricare queste due librerie. E poi, ho intenzione di andare avanti ed eseguire il comando. Si può solo trattare questo come una scatola nera. Quello che sta succedendo è che questo tubo operatore sta passando in questo argomento in questa sede. Così sto dicendo gruppo da dat gara e poi presidente 04. E poi, tutti questi altri comandi filtrando e quindi riassumendo dove sto facendo il conteggio e allora sto tramando qui. OK fresco. Quindi andiamo avanti e vedere che cosa questo assomiglia. Quindi, quello che sta accadendo qui è che io appena tracciati ciascuna delle gare e poi che quelli che hanno votato per. E questi due diversi valori corrispondono a 2 e 1. Se si vuole essere più elegante, è anche possibile Basta specificare che 2 è Kerry-- o 2 è Bush, e poi 1 è Kerry. E si può anche avere che nella vostra leggenda. E si può anche dividere questi grafici a barre. Perché una cosa è che, se si nota, questo non è molto facile da identificare quale di questi due valori sono più grandi. Così una cosa che ci si vuole fare è prendere questa zona blu e basta spostare sopra qui in modo da Possiamo confrontare questi due fianco a fianco. E credo che sia una cosa che non hanno il tempo di fare in questo momento, ma che è anche molto facile da fare. Si può solo guardare in le pagine man di ggplot. Così si può solo fare ggplot come che e leggere in questa pagina man. Quindi lasciatemi rapidamente mostrarvi alcune cose interessanti. Andiamo avanti e andiamo a-- solo un applicazione di machine learning. Quindi diciamo che abbiamo questi tre Pacchetti così ho intenzione di caricare questi in. Quindi questo stampa solo alcuni informazioni dopo ho caricato nella cosa. Quindi io dico read.csv, questo insieme di dati, e ora Ho intenzione di andare avanti e guardare e vedere cosa c'è all'interno di questo insieme di dati. Così i primi 20 osservazioni. Quindi non mi resta che X1, X2, e Y. Quindi sembra un po 'di questi valori sono forse vanno da 20 a 80 o così. E poi in modo simile per X2 e poi Y questo sembra essere etichette 0 e 1. Per verificare questo, posso basta fare X1 dati di riepilogo. E poi in modo simile per tutte queste altre colonne. Quindi sintesi è un modo rapido di solo mostrando valori veloci. Oh, mi dispiace. Questo dovrebbe essere Y. Quindi in questo caso, dà la quantili, mediane, arriva al massimo pure. In questo caso, Dati Y, si può vedere che è solo andare a essere 0 e 1. Anche la media sta dicendo 0.6, significa solo che sembra che ci siano più di 1s 0s. Così mi permetta di andare avanti e spettacolo che cosa questo assomiglia. Così sto solo andando a tracciare questo. Vediamo come per cancellare questo. Oh OK. OK. Quindi questo è quello che sembra. Così sembra gialli I specificato come 0, e poi rosso ho specificato come 1s. Così qui sembra punti di etichette ed è sembra si voleva solo un po ' sorta di clustering su questo. E vorrei solo andare avanti e spettacolo alcune di queste funzioni built-in. Così qui è lm. Quindi questo è solo cercando per adattare una linea di questo. Allora, qual è il modo migliore che io possa andare bene una linea simile che sarà meglio separare questo tipo di clustering. E idealmente, si può solo vedere che ho appena eseguito tutti questi comandi e poi, vado avanti e aggiungere la riga. Quindi questo sembra la migliore ipotesi. E 'prendendo il migliore che minimizza l'errore nel tentativo di soddisfare questa linea. Ovviamente, questo sembra un po ' buono, ma non è il migliore. E modelli lineari, in generale, stanno per essere davvero grande per la teoria e appena sorta dei fondamenti costitutivi della macchina l'apprendimento. Ma in pratica, si sta andando a voglia di fare qualcosa di più generale. Così si può solo provare a lanciare qualcosa chiamato una rete neurale. Queste cose sono sempre più comune. E solo di lavoro fantastico per grandi insiemi di dati. Quindi, in questo caso, abbiamo solo have-- diamo see-- abbiamo nrow. Così nrow sta solo dicendo il numero di righe. Quindi, in questo caso, avere 100 osservazioni. Così mi permetta di andare avanti e fare una rete neurale. Quindi questo è veramente bello perché posso solo dire nnet e poi sto regredendo Y. Quindi la Y è quella colonna. E poi regredire su le altre due variabili. Quindi questo è più breve notazione per X1 e X2. Quindi cerchiamo di andare avanti ed eseguire questo. Oh, mi dispiace. Ho bisogno di correre questa cosa. E questa è solo la stampa notazione per quanto velocemente o meno rapidamente convergente. Così sembra che si convergono. Così mi permetta di andare avanti e di stampa che cosa questo assomiglia. Vedi qui è l'immagine e qui è un profilo che mostra quanto bene si adatta. E questo è solo-- si può vedere ciò che questo è molto, molto bello. Potrebbe anche essere overfitting, ma è anche possibile tenere conto di questo con altri tecniche come la convalida incrociata. E questi sono anche costruiti in R. E lasciatemi solo mostrare sostenere Vector Machine. Questo è un altro molto comune tecnica in apprendimento automatico. È molto simile ai modelli lineari, ma usa quello che è chiamato un metodo kernel. E vediamo quanto bene che fa. Quindi questo è molto simile a come ben una rete neurale esegue, ma è molto più agevole. E questo si basa off di Cosa-- come SVM lavoro. Quindi questo è solo un rapida panoramica di alcuni delle funzioni built-in che si può fare e anche alcuni dell'esplorazione dati. Quindi lasciatemi andare avanti e tornare alle diapositive. Così, ovviamente, questo è Non molto completo. E questo è davvero solo un teaser vi mostra cosa si può davvero fare a R. Quindi, se vi piacerebbe solo per saperne di più, qui sono un sacco di risorse diverse. Quindi, se siete appassionati di libri di testo o sei solo appassionato di lettura cose on-line, allora questo è un fantastico uno per Hadley Wickham, che ha anche creato tutti questi pacchetti davvero cool. Se siete appassionati di video, quindi Berkeley ha un bootcamp impressionante questo è several-- che una specie di lungo. E vi insegnerà quasi tutto ciò vuoi sapere R. E allo stesso modo, c'è Codeacademy e tutte queste altre specie siti web di interattivi. Sono inoltre sempre common-- sempre più comune. Quindi questo è molto simile a Codeacademy. E, infine, se si vogliono Comunità e aiutare, questi sono un gruppo di cose che si può andare a. Ovviamente, abbiamo ancora utilizzare le mailing list, basta come quasi tutti gli altri programmazione comunità linguistica. E #rstats, questo è la nostra comunità Twitter. Che in realtà è abbastanza comune. E allora l'utente! E 'solo la nostra conferenza. E poi, naturalmente, si può utilizzare tutte queste altre cose di Q & A, come Stack Overflow, Google, e quindi GitHub. Poiché la maggior parte di questi pacchetti e un sacco di comunità sarà incentrata in via di sviluppo codice perché è open source. Ed è solo molto bello su GitHub. E, infine, potete contattarmi se basta avete domande veloci. Così mi puoi trovare su Twitter qui, il mio sito web, e solo la mia e-mail. Così si spera, che è stato something-- pochi occhiolino di ciò che R è veramente in grado di fare. E si spera, basta prova anche questi tre collegamenti e vedere cosa si può fare di più. E credo che sia proprio su di esso. Grazie. [Applausi]