CONNOR HARRIS: Men jag tror vissa spännande video
produceras av en professionell rådgivning som använder R mycket i sitt arbete.
>> BERÄTTARE: Vad ligger bakom statistiken, analytics, och visualiseringar
att dagens smartaste uppgifter forskare och företagsledare lita på
att göra kraftfulla beslut?
Du kanske inte alltid ser det.
Men det är där.
Det kallas R, r-- öppen källa språk statistisk programmering
att dataexperter världen över användning för allt
från kartläggning bred social och marknadsföring trender på nätet
att utveckla den ekonomiska och klimat modeller som hjälper driva våra ekonomier
och samhällen.
>> Men vad exakt är R och där gjorde R börja?
Väl ursprungligen började R här med två professorer
som ville ha en bättre statistisk plattform för sina elever.
Så de skapade en modelleras efter statistikspråket S.
De, tillsammans med många andra, fortsatte att arbeta på och med hjälp av R,
skapa verktyg för R och hitta nya användningsområden för R varje dag.
>> Tack vare detta är världsomspännande gemenskap ansträngning,
R hålls växer med tusentals användarskapade bibliotek byggs
att öka R-funktionalitet och tränger anskaffas kvalitet validering
och stöd från de mest erkända branschledande inom varje område som
använder R. Vilket är bra, eftersom R är bäst på vad den gör.
Knoppande experter snabbt och enkelt tolka, interagera med,
och visualisera data visar deras snabbt växande gemenskap av R användare världen över
och se hur öppen källkod R fortsätter att forma
framtiden för statistisk analys och data vetenskap.
>> CONNOR HARRIS: OK, bra.
Så min egen presentation kommer att vara lite mer nykter.
Det kommer inte att innebära så mycket spännande bakgrundsmusik.
Men som ni såg i videon, är R sort av ett syfte programspråks allmänhet.
Men det skapades mestadels för statistiskt arbete.
>> Så det är utformat för statistik, för dataanalys, för data mining.
Och så du kan se detta i en hel del konstruktions val som skaparna av R
gjord.
Den är utformad för hög grad, personer som inte är
experter inom programmering, som bara plocka upp programmering
på sidan så att de kan utföra sitt arbete i samhällsvetenskap eller statistik
eller vad som helst.
>> Den har en hel del mycket viktiga skillnader från C.
Men syntaxen och paradigm att den använder är i stort sett densamma.
Och du ska känna dig ganska mycket hemma just off the bat.
Det är ett viktigt språk.
>> Oroa dig inte för mycket om det Om du inte känner till begreppet.
Men det finns en skillnad mellan imperativ, deklarativ,
och funktionella.
Imperativ bara innebär att du gör uttalanden som i princip kommandon.
Och sedan tolken eller dator följer dem en efter en.
Det är svagt skrivit, finns inga typdeklarationer i R.
>> Och sedan linjerna mellan olika typer
är lite mer löst än de är i C, t ex.
Och som jag sade att det finns mycket omfattande faciliteter
för grafer, för statistisk analys, för data mining.
Dessa är båda inbyggda i språk och, som video sa,
tusentals bibliotek tredje part som du kan ladda ner och använda gratis
med mycket lösa tillståndsvillkor.
>> Så i allmänhet, skulle jag rekommendera att du tittar på dessa två böcker
om du kommer att arbeta med R. Ett av dem är officiella R nybörjare
guide.
Det upprätthålls av core utvecklare av R.
Du kan ladda ner den igen, fri från ladda och lagligt på som länkar där.
Alla dessa bilderna kommer att gå upp på internet, på CS50 webbplats
när det är gjort.
Så ingen anledning att kopiera ner saker frenetiskt.
>> Den andra är en lärobok av Cosma Shalizi,
som är en statistik professor vid Carnegie Mellon, som kallas Advanced Data
Analys från en Elementär Point of View.
Detta är inte i första hand en R bok.
Det är en statistik bok och Det är en dataanalys bok.
Men det är mycket tillgänglig för människor som har ett minimum av statistik kunskap.
>> Jag har aldrig fattat ett formellt kurs.
Jag vet bara bitar från olika allierade ämnen
att jag har läst kurser i.
Och jag kunde förstå det mycket väl.
>> Alla siffror är givna i R. De är gjorda i R
och de har också kodexempel under varje siffra som berätta
hur du gör varje figur med R-kod.
Och det är mycket användbart om du försöker efterlikna
någon siffra du ser i en bok.
>> Och återigen gratis nedladdning stat.cmu.edu/cshalizi/ Tyvärr,
som bör slash tilde cshalizi.
Jag ska se till att rätta till det när de officiella bilderna går upp.
/ ADAfaEPoV vilket är precis akronym för boktitel.
>> Så allmänt caveats-- R har en hel del funktioner.
Jag kommer bara att kunna täcka ytan av en hel del saker.
Även den första delen av seminariet kommer att bli något av ett data dumpning.
Jag är ganska ledsen för det.
I grund och botten, jag ska introducera dig till en massa saker
just off the bat, gå så fort som möjligt.
Och då får vi den roliga delen, som är
demo där jag kan visa dig allt att vi har talat om på skärmen.
Och du kan spela runt på egen hand.
Så det kommer att bli en hel del tekniska saker kastas upp här.
Oroa dig inte för att kopiera allt ner.
Eftersom A, kan du få all grejer på CS50 hemsida senare.
Och B, det är egentligen inte så viktigt att memorera detta från objektglasen.
Det är viktigare att du får några intuitiv anläggning med det
och som kommer från bara spela runt.
>> Så varför använda R?
I grund och botten, om du har ett projekt som innebär gruv stora datamängder, data
visualisering, du bör använda R. Om du är
gör komplicerade statistiska analyser, som skulle vara svårt att i Excel,
till exempel, skulle det också good-- också
Om du gör statistiska analys som är automatiserad.
Låt oss säga att du underhålla en webbplats.
Och du vill läsa serverloggen varje dag och sammanställa en del listan,
som de bästa länderna att dina användare kommer ifrån,
några sammanfattande statistik om hur lång tid de tillbringar på din webbplats eller vad som helst.
Och du vill köra detta varje dag.
>> Nu om du gör detta i Excel, du skulle behöva gå till din server log,
importera det till en Excel-data kalkylblad,
köra hela analysen manuellt.
Med R, kan du bara skriva ett manus.
Planera att köra varje dag från operativsystemet.
Och sedan varje kväll på 2:00, eller när du planera att köra,
det kommer att se igenom din Internet-trafik för den dagen.
Och sedan nästa dag, kommer du har denna glänsande, ny rapport
eller vad med alla information som du bett om.
>> Så i princip R är för Cisco programmering kontra Cisco analys.
Preliminär görs.
Låt oss komma in i verkliga saker.
Så det finns tre riktiga typer i språket.
Det finns numerisk typ.
Det blir liksom en skillnad mellan heltal och flytande punkter,
men inte riktigt.
Det finns ett tecken typ, vilket är strängar.
Och det finns en logisk typ, vilket är Booleans.
>> Och du kan konvertera mellan olika typer användning av dessa funktioner som numeriska,
karaktär, som logiskt.
Om du ringer, till exempel, som numeriskt på ett snöre,
det kommer att försöka läsa den strängen som ett tal, på samma sätt
att A2I och scanf göra, och C. Om du ringer som numeriskt på sant eller falskt
Det kommer att konvertera till 1 eller 0.
Om du ringer som tecken på något det ska
omvandla den till en strängrepresentation.
>> Och sedan finns det vektorer och matriser.
Så vektorer är i grunden 1 dimensionella arrayer.
De är vad vi kallar arrayer i C. Matriser, 2 dimensionella arrayer.
Och sedan högre dimensionella arrayer DU kan
har 3, 4, 5 dimensioner eller vad av numeriska värden, strängar,
av logiska värden.
>> Du har också listor som är ett slags associativ array.
Jag ska komma in i det lite.
Så en viktig sak som snubblar människor i R
är att det finns ingen verkligt, rena atomtyper.
Det finns ingen verklig skillnad mellan ett nummer, som ett numeriskt värde,
och en lista med numeriska värden.
Numeriska värden är faktiskt samma som vektorer längd 1.
Och detta har ett antal viktiga konsekvenser.
En, betyder det att du kan göra saker mycket lätt som involverar
som att lägga ett nummer till en vektor.
R kommer i princip siffra reda på vad du menar med det.
Och jag ska få till det på en sekund.
Det innebär också att det finns inget sätt för den typ checker-- i den utsträckning
att något sånt existerar i r-- att berätta
när du har passerat på den inre värde när den förväntar sig en array eller vice versa.
Och det kan orsaka vissa udda problem som jag sprang in när
Jag använde R under min sommarjobb.
Och det finns inga blandad typ arrayer.
Så du kan inte ha en matris var första element, jag vet inte,
strängen "John" och andra delen är nummer 42.
Om du försöker göra det, då får du allt bara konverteras till en sträng.
Så vi har sträng John, sträng 42.
>> Så ovanligt syntaktiskt features-- mest R syntax är mycket lik C.
Det finns några viktiga skillnader.
Inskrivning är mycket svag.
Det finns alltså inga variabeldeklarationer.
Uppdrag använder den märkliga fel operatör mindre än bindestreck.
Kommentarer är med hash varumärket.
Jag antar att nu dagar vi kallar det hashtag men det är inte riktigt accurate-- inte
den dubbla snedstreck.
>> Modulära rester är med %% tecken.
Heltalsdivision är med% /% vilket är mycket svårt att läsa när det projiceras
upp på skärmen.
Du kan få serier av heltal med kolon.
Så 2,5 kommer att ge dig en vektor av alla nummer 2 genom 5.
>> Arrayer är en index, vilka skruvar en massa människor
upp om de är från mer typiska programmeringsspråk,
som C, där de flesta saker är noll-indexerade.
Återigen, det är där R arv som ett språk för som inte
professionella programmerare kommer in.
Om du är en sociolog eller en ekonom eller något
och du försöker använda R i princip som ett komplement
till viktigare professionella arbete,
du kommer att hitta en-indexera lite mer naturligt.
Eftersom du börja räkna på en i vardagen, inte 0.
>> För-loopar, är detta liknar den foreach konstruktionen i PHP,
som du får lära in-- ganska snart.
Vilket är för värde i vektor och då kan du göra saker med värde.
PUBLIK: Det har kommit upp i föreläsning.
CONNOR HARRIS: Åh, det är komma upp föreläsning, utmärkt.
PUBLIK: Uppdraget, är det ska peka från höger till vänster?
CONNOR HARRIS: Från höger till vänster, ja.
Du kan tänka på det som värdet på höger stowed i variabeln
till vänster.
PUBLIK: OK.
>> CONNOR HARRIS: Och slutligen Funktionen Syntaxen är lite konstigt.
Du har funktionsnamnet foo, tilldelas där det ordet funktion, följt
av alla argument och sedan kropp av funktionen efter det.
Återigen dessa saker får verkar lite konstigt.
De kommer att bli en andra natur efter du arbetar med språket för lite.
Så vektorer, vägen du konstruera en vektor
är du typ C, som är ett nyckelord, då alla nummer du vill eller strängar
eller vad som helst.
Argument också vara vektorer.
Men den resulterande arrayen blir tillplattad.
Så du kan inte ha arrayer där vissa delar är enstaka nummer
och vissa delar är arrayer själva.
>> Så om du försöker att bygga en array var det första elementet är 4
och det andra elementet är arrayen 3,5 du
bara få en tre element array, 4,3,5.
De kan inte vara av blandad typ.
Om du försöker läsa eller skriva utanför gränserna för en vektor
du får detta värde kallas NA a som står för ett saknat värde.
Och detta är avsett för liknande statistiker som
arbetar med ofullständiga datamängder.
>> Om du använder en funktion som är tänkt ta bara ett nummer till en matris
vad du får är den Funktionen karta över gruppen.
Så om din funktion låt oss säga tar ett nummer och returnerar den fyrkantiga.
Du ansöker det till gruppen 2,3,5 Vad du får är arrayen 4,9,25.
>> Och det är mycket användbar eftersom det innebär att du
behöver inte skriva för öglor för gör mycket enkla saker som att tillämpa
en funktion till alla medlemmar i en datamängd.
Som om du arbetar med stora datamängder, måste du göra en hel del.
Binära funktioner är tillämpad posten genom posten.
Jag ska få in det.
Du kan komma åt dem med arrayer eller vektorer med hakparenteser.
Så vektor namn hakparenteser 1 kommer att ge dig det första elementet.
Vektor namn hakparenteser 2 kommer att ge dig det andra elementet.
>> Du kan vidarebefordra en vektor av index och du kommer
komma tillbaka ut i grunden en sub faktor.
Så du kan göra vektor namn fästen C, 2,4 och du får en vektor innehållande
den andra och den fjärde uppsättningens element.
Och om du bara vill ha en snabb sammanfattning statistik
av en vektor som interquartile intervall, median, max, vad som helst,
Du kan bara skriva sammandrag vektor namn och få ut det.
Det är inte riktigt användbar i programmering men om du spelar
runt datamängder, är det praktiskt.
>> Matrices-- princip högre dimensionella arrayer.
De har denna speciella notation syntax.
Matrix med en array som får fylld in-- ledsen, matris med data,
antal rader, antal kolumner.
När du har några uppgifter, fyller i uppsättningen i princip går uppifrån och ned
först.
Därefter vänster till höger.
Så, så.
Och R har inbyggd matrismultiplikationer,
spektral nedbrytning, diagonalisering, en hel del saker.
Om du vill ha högre dimensionell arrayer, så 3, 4, 5,
eller vad dimensioner kan du göra det.
Syntaxen är array dim lika c, då listan över dimensionerna.
Så om du vill ha en 4 dimensionell array med måtten 4, 7, 8, 9, arrayen,
dim lika c (4,7,8,9).
>> Du kommer åt enskilda värden med konsoler första posten kommatecken andra posten.
Du kan få hela skivor rader eller kolumner.
Med denna ofullständiga syntaxen är det bara rad nummer kommatecken eller komma kolumnen
antal.
Så listor är ett slags associerad array.
De har sin egen syntax här.
Återigen inte frenetiskt kopiera allt detta ner.
Detta är bara så att folk gå igenom bilderna senare
har allt detta i en trevlig referens.
Och detta kommer att bli mycket naturlig gång Jag faktiskt gå igenom demos.
Så visar en princip associerade matriser.
Du kan komma åt värden med listnamn, dollartecken, nyckel.
Så om din lista heter foo, då kan du få tillgång till det så.
Du kan få en hel nyckel-värde-par genom att passera på torget fästet index.
Om du läser från en obefintlig nyckel, får du null.
Det kommer inte att fel.
Saken är R kommer att göra som mycket med null som möjligt.
Och detta kan innebära att om du är inte förväntar sig att få null ut
vissa listan läsa, får du del oförutsägbara fel längre ner
linjen.
>> Detta hände mig min sommarjobb när jag använde R
där jag förändrat hur en viss Listan definierades på ett ställe
men inte ändra senare på kod som läser värden från det.
Och så det som hände var att jag var läsning null-värden av denna lista,
passerar dem i funktioner, och är mycket förvirrad
när jag fick alla sorters slumpmässiga oändlig dyka upp
i denna funktion.
För om du använder viss maximal eller minimi funktioner null,
du får oändliga värden ut.
>> Dataramar, de är en underklass av listan.
Varje värde är en vektor av samma längd.
Och de är vana för att presentera, i grund och botten, datatabeller.
Det är det här initiering syntax.
Detta kommer alla, återigen, vara mycket tydligare när du kommer till demon.
Och det fina dataramar är att du
kan ge namn åt alla kolumner och namnen på alla rader.
Och så det gör åtkomst dem lite vänligare.
Även detta är hur de flesta funktioner som läses data från Excel
eller från textfiler, t.ex. kommer att läsa i sina data.
De kommer att sätta den i någon form av dataramen.
Så functions-- funktionerna Syntaxen är lite konstigt.
Återigen är det namnet på funktionen, tilldela, detta sökord funktion och sedan
listan över argument.
Så det finns några trevliga saker om hur funktioner fungerar här.
För en, kan du faktiskt tilldela standardvärden till vissa argument.
Så du kan säga R1 equals-- du kan säga foo
är en funktion där R1 är lika något som standard om användaren anger
inga argument.
Annars är det vad han satte in.
Och det är mycket praktiskt eftersom en hel del av våra funktioner
har ofta tiotals eller hundratals argument.
Till exempel de för att rita diagram eller konspirera scatter tomter
har argument som styr allt från titeln och axeln
etiketter på färgen på regressionslinjerna.
Och så om du inte vill att få folk att specificera
varenda en av dessa hundratals argument
styra varje enskild aspekt av en tomt eller en regression eller vad som helst,
det är trevligt att ha dessa standardvärden.
>> Och sedan kan du faktiskt skriva så du såg tillbaka hit.
Eller hitta ett bättre exempel.
När du ringer funktioner som du kan faktiskt kalla dem med hjälp av argumentnamn.
Så här är ett exempel på matris konstruktören.
Det tar tre argument.
Vanligtvis du har data, vilket är en vektor.
Du har N rad, vilket är antalet rader.
Du har N cols-- antal kolumner.
Saken är om du skriver N raden är lika oavsett
och N col lika oavsett när du ringer denna funktion
du kan faktiskt vända dem.
Så du kan sätta N col först och N raden andra och det kommer att göra någon skillnad.
Så det är en trevlig liten funktion.
>> Gjorde import och export.
Detta kan göras, i princip.
Det finns också möjligheter att skriva ut godtycklig R invänder mot en binär fil
och sedan läsa dem igen senare.
Vilket är praktiskt om du gör en stor interaktiv session R
och du måste spara saker mycket snabbt.
Som standard R har en arbetskatalog att filer får skrivas ut i
och läsa tillbaka från.
Du kan se att med getwg, ändra det med setdw.
Inget särskilt intressant här
>> Så nu är det faktiska statistiken stuff-- multilinjär regression.
Så den vanliga syntaxen är lite komplicerat.
Modellen är ett stort objekt i grund och botten.
Det blir tilldelad lm, vilket är ett funktionsanrop.
Det första elementet, y tilde x1 plus vad som helst.
Min syntax här är lite förvirrande.
Jag är ganska ledsen, detta är det vanliga sättet
att datavetenskap böcker gör detta.
Men det är lite konstigt.
>> Så i princip är det lm parentes, första punkten
är variable-- ledsen, beroende variabel tilde x1 plus x2 plus
men många oberoende variabler som du har.
Och då dessa kan antingen vara vektorer, alla samma längd.
Eller de kan vara kolonn rubriker i en dataram
att du bara anger i andra argumentet dataram.
>> Du kan även ange en mer komplicerad formel
så du behöver inte linjärt regrediera en beroende variabel,
eller en vektor på en befintlig vektor.
Du kan göra, till exempel en vektorkomponent y kvadrat plus 1
och tillbakagång som mot logga någon annan vektor.
Du kan skriva ut sammanfattningar av modell med det här kommandot kallas
summary-- bara sammanfattningen Parens modell.
Igen något annat jag bör klargöra.
Något annat som kommer att få rättas när bilderna går upp på internet.
Om du bara vill beräkna en enkel korrelation
du kan använda korrelationsvektor En vektor 2 funktion kärna.
Metoden är som standard Pearson korrelationer.
De är de vanliga du kan göra.
Det finns också Spearman och Kendell korrelationer
vilka är några olika rangordningskorrelation.
Väl de inte beräkna produkten stunder mellan vektorerna själva,
men av vektor rang order.
Jag ska förklara det senare.
>> PUBLIK: Snabb fråga
>> CONNER HARRIS: Säker.
>> PUBLIK: Så när du beräknar för enkla korrelationer göra
du antar att det finns ett statistiskt betydelse för sambandet?
CONNER HARRIS: Du behöver inte.
En lm är i princip bara en maskin.
Det kommer att ta i två saker och det kommer att spotta ut
koefficienter för bästa passform linjen.
Den rapporterar också standard fel på dessa koefficienter.
Och det kommer att berätta, som är den avlyssna statistiskt signifikant
eller skillnad från 0.
Är lutningen på det bästa anpassade linjen statist
skild från noll, och så vidare.
Så det förutsätter ingenting, tror jag är bästa svaret på din fråga.
OK.
>> Plotting-- så den främsta anledningen bör du Använd R, som multilinjär regression.
I grund och botten alla språk har någon möjlighet för det.
Och ärligt R syntax för regressions är lite svårbegripliga.
Men plottning är där det verkligen skiner.
>> Arbetshästen Funktionen är tomt och det tar två vektorer, x och y.
Och sedan ellipser står för en mycket stort antal valfria argument som
styra allt från titlar på färger av olika linjer eller olika punkter,
den typ av tomten.
Du kan ha scatter tomter eller linjediagram.
>> [OHÖRBAR] 2-vektorer av samma längd.
Du kan föregå detta med bifoga dataram i ditt manus.
Och detta kommer att låta du bara använder kolumnen rubriker i stället för separata vektorer.
Du kan lägga till bästa passform linjer och lokal regressionskurvor till diagrammet.
>> Dessa kommandon listade Här ab line och linjer,
som standard dessa får skrivs in i pop-up fönster
eftersom det förutsätter att du använder R interaktivt.
Om du inte du kan skriva två filer som
är verkligen alla format du vill.
Tyvärr, jag har ett stavfel jag bara insåg.
Om du vill öppna annan grafisk enhet
Du kan använda den här funktionen kallas PNG eller JPEG eller en massa andra bildformat.
Och du kan skriva grafer till oavsett filnamn du anger.
Om du vill avbryta att du måste use-- Jag skrev inte detta i slide--
men det finns en funktion som kallas dev dot utanför som tar inga argument.
>> Sedan finns det anläggningar för 3D plottning
och kontur rita Om du vill göra
grafer av två oberoende variabler.
Jag kommer inte att komma in i dessa just nu.
>> Det finns också några faciliteter för animering
de är vanligtvis underhålls av tredje part.
Jag har gjort animationer med R grafer, men jag har inte använt dessa tredje part
bibliotek.
Så jag kan inte riktigt intyga hur bra de är.
Vad jag rekommendera om du vill att göra animeringar med hjälp av R
är att du kan skriva ut alla ramarna för animationer
och sedan kan du använda en tredje part program--
typiska sådana kallas FFmpeg eller ImageMagick-- att sy
alla dina bilder till en animation.
>> Så tid för demo.
Så om du använder någon Unix liknande system som är Linux BSD, men som använder BSD.
OS X öppnar ett terminalfönster och typ R vid kommandotolken.
Om du har R studio eller liknande, som också fungerar.
För Windows-användare bör du vara kunna hitta R i Start-menyn.
Det bör kallas något som R x64 tre poäng oavsett.
Öppna upp det där.
>> Så låt mig nu bara Öppna ett terminalfönster.
Okej, sök.
PUBLIK: kommando-mellanslag
CONNER HARRIS: Command-Space, tack.
Jag inte normalt använder Mac.
Terminal visar nytt fönster.
New window är inställningar grundläggande, R. så ska du få
ett välkomstmeddelande, ungefär så här.
>> Så jag använder R interaktivt.
Du kan också skriva R manus naturligtvis.
I grund och botten skript körs på exakt samma sätt som
om du satt vid datorn skriver i varje rad en i taget.
Så låt oss börja med att göra en vektor.
En pil C 1, 2.
1, 2, 4.
OK, visst.
Jag kan göra teckenstorleken större.
>> PUBLIK: Kommando-Plus
>> CONNER HARRIS: Kommando-Plus.
Kommando-Plus.
Okej, hur är det?
Bra?
OK.
Så låt oss börja med förklara en vektorlista.
Gör en, pil, C 1,2,4.
Vi kan se en.
Oroa dig inte fästet där.
Konsolerna är så om du skriver ut mycket långa arrayer, vi kan var du befinner dig.
Ett exempel skulle vara om jag vill bara intervallet 2-200.
Om jag tryckt en mycket långa array, konsolerna
bara så jag kan hålla reda på vilket index
vi är på om jag ser genom denna visuellt.
Så hur som helst, vi har en.
>> Så jag sa innan att arrayer samverkar mycket snyggt med, till exempel,
unära operationer som denna.
Så vad du tycker jag ska få om jag skriver ett plus ett?
Japp.
Rätt, nu ska jag göra denna annorlunda array.
Låt oss säga b c 20,40, 80.
Så vad tycker du detta kommando kommer att göra?
Lägg elementen.
Och så i princip det är vad det gör.
Så det här är ganska bekvämt.
Så jag hur jag gör detta. c är, låt oss säga, 6 gånger 1-10.
Så vad gör jag vill se innehöll tror du?
Så alla multiplar av sex.
Nu, vad tror du kommer att hända om jag gör det?
Jag ska göra detta lite tydligare, c, c.
Så vad händer, gör du tror, ​​om jag gör det?
a plus c.
[OHÖRBAR]
>> PUBLIK: Antingen ett fel eller det bara lägger de första tre delarna.
>> CONNER HARRIS: Inte riktigt.
Detta är vad vi fick.
Vad som händer är en kortare array, en, fick cyklade.
Så vi fick 124, 124, 124.
Ja.
Och i princip kan du visa detta beteende innan, ett plus ett,
som en underklass av detta beteende, där den kortaste arrayen är bara antalet
1, som är en en elementgrupp.
Jag vara bara säga vektor alla tiden i stället för matris,
eftersom det är vad r dokumentation brukar.
Det är en ingrodd c vana.
>> OK, så nu har vi denna uppsättning.
Så vi har denna array, c.
Vi kan få sammandrag statistik om c, sammanfattande c.
Och det är trevligt.
Så nu ska vi göra några matris saker.
Låt oss säga att m är en matris.
Låt oss göra det till en tre och tre en.
Så nrows lika med 3, och ncols lika med 3.
Och för data låt oss do-- så vad tror du kommer att göra?
>> Höger, det är nästa.
Det är nrow och ncolumn.
Så vad jag har gjort är att jag har förklarade en tre gånger tre matris
och jag har klarat i en nio-elementgrupp.
Så logaritmen av alla element en till nio.
Och alla dessa värden fylla upp array-- ledsen?
PUBLIK: De är bas 10 stockar?
CONNER HARRIS: Nej, log naturliga logaritmer, så basen e.
Ja, om du ville bas 10 log, jag tror att du skulle ha
logga vad som helst, dividerat med log 10.
Och så uppgifterna i nätverket [OHÖRBAR] bara fyller upp arrayen, så uppifrån och ned,
sedan från vänster till höger.
Och om du ville göra något annat array, låt oss säga n är matris.
Låt oss göra, jag vet inte, 2-13.
Eller jag ska göra något mer intressant.
Jag gör 2-4.
nrow är lika, låt oss säga, 3.
Ncol är lika 4.
n.
Så vi har fått det här.
>> Och nu om vi vill multiplicera dessa, vi skulle göra n procent tider procent,
eftersom det är n.
Och vi har matrisprodukter.
Genom de sätt, såg du hur när jag förklarade n, den 2-4
vektor fick cyklade tills den fyllde upp alla n?
Om du ville ta egenvärde nedbrytning,
Detta är något som vi kan göra mycket lätt.
Vi kan göra eigen n.
Och så detta är vår första möter med en lista.
>> Så eigen n är en lista med två nycklar.
Värden, som är denna matris här.
Och vektorer, som är denna array här.
Så om du ville att extrahera, säg, denna tredje kolumnen
från egenvektorer matrisen, eftersom egenvektorerna är kolumnvektorer.
Så vi kan göra vec eigen n dollartecken vektorer, kommatecken 3 i [OHÖRBAR].
Vec.
Är det, som du kanske tror.
>> Då säga n gånger procent tider vec.
Så resultatet här verkligen ser ut om vi tog tredje egenvärde här,
vilket överensstämmer med den tredje egenvektor.
Det multiplicerade bara allt denna egenvektor, komponent-wise,
av egenvärdet.
Och det är vad vi skulle förvänta oss, eftersom det är vad egenvärden är.
Har någon här inte tagit linjär algebra?
Ett par personer, OK.
Bara stänga din hjärna av för lite.
Och faktiskt om vi tar eigen n dollar teckenvärden 3 gånger vec,
väl få samma sak.
Det är formaterad annorlunda som en rad vektor i stället för en kolumnvektor,
men big deal.
Och så de är i stort sett trevliga saker som vi kan göra med matriser,
påvisade listor.
Jag ska visa den fina saker om funktioner.
>> Så låt oss säga-- [OHÖRBAR] funktion, låt oss kalla
det funk mot funktion n squared-- faktiskt, det är inte riktigt den bästa.
a, b, en kvadrat plus f.
Så en sak om funktioner, återigen, är de
behöver inte explicita retur uttalanden.
Så du kan bara-- den sista uttalande utvärderas
kommer att vara ett uttalande tillbaka, eller returnerade värdet.
Så i det här fallet, är vi bara utvärdera ett uttalande, en fyrkantig plus b.
Det kommer att vara standardreturvärdet.
Det skadar aldrig att sätta in returvärden explicit,
speciellt om du arbetar med en funktion av mycket komplicerad logik
flöde.
Men du inte behöver dem.
Så nu kan vi göra funk 5, 1, och Detta är i princip vad du kan förvänta dig.
Något annat vi kan göra, vi faktiskt kan göra funk b
är lika med 1, en lika 5.
Så om vi anger vilket nummer här, som argument går till som argument
i funktionen, kan vi vända runt Dessa värden var vi vill.
>> PUBLIK: Finns det en anledning att skriva ut med b
lika i motsats till bara använda siffror och kommatecknet?
CONNER HARRIS: Ja, vanligtvis göra detta om du har funktioner
med en massa argument.
Det kan ofta vara flaggor som du skulle bara
vill använda i sällsynta fall.
Och detta sätt kan du only-- dig kan hänvisa till de specifika argument
som du vill använda icke-standardvärden för,
och du behöver inte skriva ut ett gäng flaggor lika falskt efter dem.
Eller jag kan skriva det igen med ett standardvärde som b är lika med två.
Och då kunde jag göra f funk, Jag ska göra 4, 1 den här gången.
Och 17, vilket är 4 kvadrat plus 1, som du kanske tror.
>> Men jag kunde också bara kallar detta med funk 4,
och jag ska få 18, eftersom Jag inte anger b.
Så b får standardvärdet 2.
>> OK, så nu om du är efter tillsammans med demo,
skriver denna linje på ditt kommando uppmana och se vad som kommer upp.
Egentligen inte göra det.
Skriver detta.
Du bör få något sånt här.
Så mtcars är en inbyggd uppgifter fastställts för denna demonstration
ändamål som kommer with-- som kommer i standard med din r distribution.
Detta är en sammanställning av statistik från en 1974 frågan om Motor Trend magazine
på ett antal olika bilmodeller.
>> Så det finns miles per gallon, cylinders-- Jag har glömt vad disp är-- hästkrafter.
Troligen.
Om du bara Google MT bilar, då en av de första resultaten
kommer att vara från officiell r dokumentation
och det kommer att förklara alla dessa datafält.
Så vikt är-- vikt är vikten på bilen i ton.
Q sek är fjärdedel mil tiden.
Så nu kan vi göra några roliga saker om MT bilar är ett datafält.
>> Så vi kan göra saker som rad namn, mt bilar.
Och detta är en lista över alla rader i datauppsättningen som är namn på bilar.
Vi kan göra colnames, mt bilar här.
Om du gör mt bilar, sub-numeriskt index, som 2.
vi får den andra kolumnen av detta, vilket skulle vara cylindrar.
>> PUBLIK: Vad gjorde du?
>> CONNER HARRIS: jag skrev mt bilar, konsoler e,
som gav mig den andra kolonn av mt bilar.
Eller om vi vill ha en rad, kan jag skriva mtcars Comma 2, till exempel.
Annat v 2 kommatecken, sådär.
Och som går i rad.
Detta här bara ger dig en kolonn, men kolonnen som en vektor.
Jag insåg just nu har jag glömde att demonstrera
några coola saker om vektorer som du kan göra med index.
Så låt mig göra det just nu.
Så låt oss göra c gets-- sätta detta på pause-- 2 gånger 1 till 10.
Så c är bara kommer att bli vektorn 2 genom 20.
Jag kan ta element som denna, C2.
Jag kan passera i en vektor så här, C- låt mig
använda annat namn än c, som vec c.
I grund och botten, jag gör detta så att du inte får
förvirrad mellan c som en vektorkonstruktion funktion,
och sedan c som ett variabelnamn.
VEC konsoler c 4, 5, 7.
Detta får mig den fjärde, femte, och sju element i uppsättningen.
Jag kan göra vec, lägg i en negativ index, liksom negativ 4.
Det kommer att få mig ut detta med det fjärde elementet avlägsnas.
Sen om jag ville göra skivor, Jag kan göra vec 2 till 6.
2 kolon 6 är bara en annan vektor, som är 2, 3, 4, 5, 6.
Spottar ut det.
>> Så hur som helst, tillbaka till mt bilar.
Så låt oss göra några regressioner.
Låt oss säga att modellen gets-- låt oss linjärt regress-- Jag vet inte.
Först ska vi fäster mtcars, naturligtvis.
Så [OHÖRBAR] modell lm, låt oss regrediera miles per gallon på tilde vikt.
Och sedan dataram är mtcars.
Så sammanfattande modell.
>> OK, så det ser lite komplicerat.
Men i grund och botten, ser ut som om vi försöka uttrycka miles per gallon
som en linjär funktion av vikt, sedan fick vi denna linje här,
vilka fångar upp vid 37,28.
37,28 skulle vara de teoretiska miles per gallon en bil som väger noll.
Och sedan för varje ytterligare ton, du slår ungefär fem miles per gallon
bort av detta.
Båda dessa koefficienter du kan se, standardfel där.
Och de är mycket statistiskt signifikant.
>> Så vi kan vara mycket säkert 1 e 10 till -10.
Så 1 gånger något till negativa 10, att om du gör en tyngre bil,
Det kommer att ha sämre miles per gallon.
Eller vi kan testa någon annan modell.
Liksom i stället för regression detta på vikt,
låt oss regrediera det på logg över vikt, eftersom kanske en effektiv vikt
på körsträcka är på något sätt inte är linjär.
>> Detta gav oss en r kvadrat 0,7528.
Så låt oss prova det här.
Den här gången ska vi göra en annan variabel, också.
Model2.
Så Sammanfattningsvis model2.
Okej, så igen, vi fick våra bästa anpassade linjen här.
Och detta time-- detta säger, i princip att varje gång du
öka vikten av en bil med en faktor e
du förlorar så många miles per gallon.
>> Och så denna gång vår resterande standard fel det-- det spelar ingen roll, egentligen.
Den återstående medelfelet är i princip bara standardfelet
att du har kvar efter att du ta bort trendlinjen.
Och vår r kvadrat här är 0,81, som är lite bättre än vad
vi hade tidigare, 0,52.
>> Och så nu ska vi lägga till en sikt för att denna regression.
Så låt oss regrediera miles per gallon både på stocken av vikterna
och låt oss göra, q miles, fjärdedel mil tid.
OK, måste den ha the-- okej, qsec.
Qsec.
Actually-- ledsen, vad?
Låt mig kalla detta något annat än model2.
Låt mig kalla detta model3.
Och så nu kan vi göra sammandrag model3.
Och så igen, detta är i grunden vad man kan förvänta sig.
Du har en positiv skärningspunkt.
Den effektiva ökande vikt är negativ.
Och effektiva ökande fjärdedel mil tid
är positivt, men trots i mindre grad än vikt.
Nu intuitivt, kan du göra känsla av detta genom att säga tänka på sportbilar.
Det finns en mycket snabb acceleration, en mycket kort fjärdedel mil tider.
De kommer även att använda mer gas, medan mer förnuftiga bilar går
att ha långsammare acceleration, högre kvartalet mile gånger,
och använder mindre gas ,, så högre miles per gallon.
Bra.
Och så nu är det dags att rita något sådant.
Så låt oss do-- så nakna ben vi kan göra plots--
eftersom jag har bifogat denna dataram before-- vi kan bara göra tomter, vikt mpg.
Gör detta till en lite större.
Där vi i stort sett har en punktdiagram, men poängen
är ganska svårt att se på detta.
>> Jag minns inte på rak arm vad syntax är för att ändra handlingen.
Så jag antar att detta kommer att vara ett bra tillfälle att ta upp,
Det är en mycket trevlig inbyggd hjälp funktionen hjälp citat funktion namn.
Vi kommer att ta upp i princip vad du vill.
Jag tror jag ska faktiskt göra detta typ lika p för poäng tomter.
Visste att ändra på något?
Och nej, inte riktigt.
Okej.
>> Av någon anledning, när jag gjorde detta på min egen dator för ett tag sedan,
alla scatter punkter var mycket tydligare.
Hur som helst, är scatter typ av synligt?
Det finns en där.
Några där, några där.
Du kan sortera av se dem, eller hur?
Så om vi vill lägga till en bäst anpassade linjen med denna kurva här, vilket är lite nakna
bones-- låt mig göra det lite trevligare.
Huvud lika kontra vikt.
Miles per gallon.
Återigen, kan du se hur användbar valfria argument är här med också
inte behöva sätta saker i en viss ordning med tangentbord argument
när du har tomter, eftersom dessa tar en hel del argument.
>> Xlab lika vikt, vikt, ton.
Okej.
OK, ja, den här enheten är att vara lite irriterande.
Men du kan se slags uppe, det finns en graf titel på sidan.
Här borta there's-- på botten här finns axeletiketter.
Jag minns inte rak arm vad kommandona ars--
vad funktioner är att öka storleken på dessa etiketter och titlar,
men de är där.
>> Och så om vi vill lägg bäst anpassade linjen,
vi kunde göra något like-- jag har syntaxen skrivit upp här.
Så minns vi bara lägga modell var mpg, vikt, mtcars.
Och så om jag ville lägga till en bästa passform line, jag kunde göra a, b linje modell.
Och bom, har vi en bäst anpassad linje.
Det är ganska svårt att se igen.
Jag är ganska ledsen om tekniska svårigheter.
Men det går i princip övre vänstra till nedre högra hörnet.
>> Och om skalan var större kunde man se
att avlyssna är vad du kan hitta från sammanfattande statistik
Om du skriver sammanfattande modell.
OK, så jag hoppas att alla får något av en känsla av vad
R är, vad det är bra för.
Du kan göra mycket trevligare tomter än detta på din egen tid, om du vill.
>> Så den främmande funktionsgränssnittet.
Detta är något som inte är normalt omfattas av introduktionsföreläsningar
eller introduktions något för r.
Det är inte troligt att du kommer att behöva det.
Men hittade jag den användbar i mina egna projekt i det förflutna.
Och det är inte bra handledning för det på nätet.
Så jag ska bara bråttom du hela denna
och då är du fri att lämna.
Och så främmande funktion gränssnitt är vad
du kan använda för att ringa ut för att se funktioner med en R. Internt
R bygger på C. R aritmetik är bara C: s 64-bitars flyttal aritmetik,
som är typ dubbelt [OHÖRBAR].
Och kanske du vill göra detta för ett gäng skäl.
För en, är R tolkas, är det inte samman ner till maskinkod.
Så du kan skriva din inre loopar i C och sedan få
Fördelen med att använda R. Gillar det är lite bekvämare än C.
Den har bättre graf faciliteter och allt.
Och samtidigt som de kan få toppfart av de inre öglorna,
som är där du verkligen behöver det.
>> Återanvändning existerande bibliotek C, det är också viktigt.
Om du har några C-biblioteket för lika, Jag vet inte, Fouriertransformer,
eller några mycket Arkeiska statistik förfarande som används
i högenergiastrofysik eller något, jag vet inte.
Högenergiastrofysik är inte ens en tanke, tror jag.
Men du kan göra det istället för att ha att skriva en infödd R port av dem.
Och på the-- och igen, som om du titta i de flesta av R: s standardbibliotek,
på interna, de interna är kommer att använda utländska funktionen
gränssnitt i mycket stor utsträckning.
De kommer att ha saker som Fourier omvandlar eller computing korrelation
koefficienter skriven i C, och de kommer bara R omslag runt dem.
Gränssnittet är en lite svårt. Jag tror
dess svårigheter är överdriven i en Många av de instruktioner som du hittar.
Men ändå, det är lite förvirrande.
Och jag har inte kunnat hitta en bra handledning för det,
så detta är det just nu.
Återigen, detta hela segment är mer för senare bruk.
Oroa dig inte för kopiering allt ner just nu.
Så följande instruktioner är för Unix-liknande system,
Linux, BSD, OS X. Jag vet inte hur det fungerar på Windows,
men snälla bara inte gör din slutprojekt i Windows.
Du verkligen inte vill.
Unix är mycket bättre uppsättning upp för casual programmering.
Så i princip utländska funktionsgränssnitt.
Om du vill skriva en C funktion för användning med R,
Det måste vidta alla argument som pekare.
>> Så för enskilda värden, detta betyder det också framhållit vikten.
För matriser, är detta en pekare till det första elementet, vilket
är vad array namn egentligen betyder.
Återigen, detta är något du bör ha ganska helt ned efter p set fem.
Array namn är bara pekare till det första elementet,
Flyttalstypen är dubbel.
Och din funktion måste återvända ogiltiga.
Det enda sättet att det kan faktiskt berätta R vad som hände
är genom att ändra det minne som R gav det genom det utländska funktion
gränssnitt.
>> Så jag har skrivit här exempel här, är detta
en funktion som beräknar användning skalärprodukten av två vektorer.
Det tar två argument, vec1, vec2, som är vektorerna själva,
och sedan på n, som är en längd, eftersom igen,
R har inbyggd [OHÖRBAR] för att ta reda på längden av vektorer, men C inte.
I C är en godtycklig vektorer avgränsad del av minnet.
Så sätt kan du beräkna skalärprodukter
är bara ställa denna parameter till noll och sedan iterera genom
från 1 till stjärna n, eftersom n är en pekare till längden,
bara lägga till något till denna ut parametern.
Och det kan vara bra praxis Om du ska göra
detta för att skriva två separata C-funktioner.
En av dem has-- En av dem bara tar de argument och vilka typer
att de normalt skulle vara i C.
>> Så det tar en array argument som pekare.
Men enda värde argument som n, Det tar bara som värden genom att kopiera,
utan pekare.
Och då är det inte [OHÖRBAR] ut pekare.
Och då kan du ha en annan, i princip,
wrapper funktion som i princip hanterar kraven
av utländska funktion gränssnitt för dig.
>> Sättet du kallar detta i R är, en gång du har din funktion skriven i C,
du skriver R cmd shlib, R kommando delat bibliotek,
foo dot c, eller vad filnamnet är,
och OS skal inte i R terminalen.
Och detta kommer att skapa en bibliotek som heter foo prick så.
Och då kan du ladda den i vårt skript eller interaktivt
med kommandot dyn punktbelastning.
Sedan finns det en funktion i R kallas dot c.
>> Detta tar argument som är första namnet på funktionen i C
som du vill ringa.
Och sedan alla parametrar till denna funktion,
de måste vara i rätt ordning.
Du måste använda denna typ tvång fungerar som heltal, såsom
dubbel, karaktär, och som logiskt.
Och sedan när den återgår den listan, som återigen är bara
en tillhörande uppsättning av parameternamn och värden
efter att funktionen har körts.
>> Så i detta fall, eftersom punkt prod har argument vec1, vec2 och int n n ut.
Till prick c vi har dot prod, namnet på funktionen
vi ringer, vec1, vec2, typ coerce.
Längden av endera vektor, Jag valde bara vec1 godtyckligt.
Det skulle vara mer robust för att säga s heltal min längd vec1, längd vec2.
Sedan är det bara som dubbellåga, eftersom vi egentligen inte
bry sig om vad går in i out parameter eftersom vi är
ställer in det till noll i alla fall.
>> Och då resultaten kommer att vara en stora tillhörande uppsättning av grunden
vec1 är vad som helst, är vad vec2.
Men vi är intresserade av ut, så att vi kan få ut det.
Detta är återigen en mycket leksak exempel av en utländsk funktion gränssnitt.
Men om du måste beräkna dot produkter av massiva vektorer i slingor,
eller om du har att göra något annat i en slinga,
och du inte vill förlita sig på R, som har en bit av overhead
inbyggd i den, kan detta vara användbart.
>> Återigen, detta är inte vanligtvis en inledande ämne att R.
Det är inte mycket väl dokumenterat.
Jag bara inklusive det eftersom Jag fann det lämpligt i det förflutna.
Så dåliga metoder.
Jag nämnde att det finns en for-loop i funktionen.
Generellt bör du inte i språket, inte använda den.
Baserat på hur R genomför iteration internt, kan det vara långsam.
De bara också ser ful.
>> R hanterar vektorer mycket snyggt, så Ofta du inte behöver använda den.
Då kan du vanligtvis ersätta en vektor ofta
med dessa funktioner kallas hög ordningens funktioner, karta, Minska,
Hitta eller Filter.
Jag ska bara ge några exempel på vad dessa gör.
Map är en högre ordningens funktion eftersom det tar en funktion som ett argument.
Så du kan ge den en funktion, du kan ge det en array,
och det kommer att tillämpa funktionen till varje element i arrayen
och returnera den nya arrayen.
Minska, i princip du ge det är en array, ger du det
en funktion som tar två argument.
Det kommer att tillämpa funktionen först, första argumentet med viss startvärde.
Sedan till detta resultat i den andra.
Sedan till detta resultat i den tredje, sedan till det resultatet i det fjärde.
Och sedan tillbaka när det kommer till slutet.
Så till exempel, om du vill beräkna summan av alla element
i en grupp, än man kan kalla minska med [OHÖRBAR] minska ett tillägg
funktion, som funk a, b, returnera en plus b.
Och sedan börja ett värde av 0.
>> Och alla dessa, kan du hitta dem beskrivs i R dokumentation,
i någon lärobok på funktionell programmering.
Det finns också denna klass av funktioner som anropas gäller funktioner,
som jag don't-- de är lite svårt att förklara,
men om du tittar i [OHÖRBAR] bokade som jag citerade i början,
förklarar han dem ganska bra i hans appendix på forskning programmering.
Mer om metoder, lägga till vektorer.
Ja?
Jag tror att jag ska rätta till det.
I den första raden, vec pil, att pilen ska inte vara där.
Du kan tilldela en vektor, igen, genom att ta sin längd plus 1
och tilldela något värde till det.
Det kommer att förlänga vektorn, eller så kan göra vec jämlikar c, vec newValue.
Återigen, om du använder C med ett argument som en vektor,
den resulterande hierarkin blir tillplattad.
Så du ska bara få en vektor som är förlängas med ett.
Gör aldrig detta.
>> Anledningen till att du inte bör göra detta är det.
När du allokerar en vektor, det ger det en viss bit av minne.
Om du ökar denna vektor storlek, Det måste omfördela vektorn
någonannanstans.
Och så omfördelning är ganska dyra.
Jag kommer inte att gå in på detaljer om hur minnesFördelningsgenomförs
på operativsystemnivå, men det tar en hel del tid
att hitta en ny bit av minne.
Och även om du är omfördelning av massor
progressivt större bitar, hamnar man
med något som kallas minne fragmentering,
där det tillgängliga minnet är uppdelat i massor av små block
i minnesfördelningssynpunkt.
Och det blir svårare och svårare att hitta minne för annat.
Så istället, om du behöver göra detta, om du behöver för att växa en vektor från den ena änden
till nästa, i stället för att lägga till det hela tiden, bör du förallokera det.
Vec pil, vektorlängden lika 1000, eller något annat.
>> Och då kan du bara tilldela till vektorn värderingar en
en tid efter att du har tilldelats det en gång.
Jag sprang in i detta, igen, mitt sommarjobb när jag skrev NRA differential
ekvationslösaren.
Inte symboliska numeriska.
Tanken är att när du har ett värde för din lösning,
du använda detta för att beräkna nästa en.
Så min naturliga naiv lutning var att säga OK,
så jag ska börja med en vektor det är ett betydande värde.
Beräkna från att nästa värde som går på min lösning vektor,
och bifoga denna.
>> Skapa något annat, bifoga denna.
Det gick mycket, mycket långsamt.
Och när jag insåg detta och jag har ändrat mitt system
från bifogande till denna vektor liknande 10 tusen till 100 tusen gånger,
att bara pre-allokering av en vektor och bara köra med det.
Jag fick mer än 1000 gånger påskynda.
Så det här är en mycket vanlig fälla för R programmering.
Om du behöver för att bygga upp en vektor bit för bit, pre-fördela det.
>> En annan vanlig resa up-- detta är min sista slide, inte worry-- är felhantering.
R, att vara uppriktig, inte verkligen gör detta mycket väl.
Det finns många problem som kan dyka upp.
Till exempel, om du får en array eller en vektor av en funktion
att du väntade en enda värde för att komma från, eller vice versa,
och du passerar det till en funktion som du skrev förväntar ett enda värde,
som kan vara ett problem.
>> Vissa funktioner returnera null som gör, säger,
läsa från en obefintlig nyckel i en lista.
Men null är inte som C där om du försöker läsa
från en gammal pekare, [OHÖRBAR] till null pointer, bara seg det fel
och om du är i din debugger det talar om exakt var du befinner dig.
Istället null kommer do-- funktioner kommer att göra oförutsägbara saker
om de är handed null.
Som om du räckte max null, Det ska ge dig negativ oändlighet.
Och så, ja.
Och så detta hände till mig en gång när jag hade
förändrats en massa områden i min lista struktur
en gång utan att ändra dem någon annanstans när jag läste dem.
Och sedan fick jag alla sorters slump oändlighet resultat dyka upp
och jag ingen aning om var de kom ifrån.
Och tyvärr, det finns ingen riktig R strikt läge
där du kan säga om något ser ut som det skulle vara ett misstag,
bara stanna där så jag kan vara disciplinerade och fixa det.
Men det finns något kallas stopp om inte.
Detta motsvarar C: s hävda, Om du har pratat om det.
Jag tror inte att C hävda är en föreläsning ämne,
men din sektionsledare kan ha gått över den.
Och sluta om inte i grund och botten tar någon predikat, så de uttalanden som
kan vara sant eller falskt.
Och om det är falskt, stannar sitt program.
Den talar om exakt vad linje du var på och vilka villkor misslyckades.
>> Och detta mycket användbart, till exempel, sanity kontroll, funktionsingångar.
Så om du har en funktion och du förväntar dig, säg,
Om du ska ge mig en dag, jag vill datum vara bara en vektor med längden 1
och någonstans mellan 1 och 31.
Och om inte, jag vet något har gått fel.
Och jag väljer att stoppa det innan har slumpmässig dominoeffekter med kod
att det är svårare att spåra igenom.
Så det är en möjlig använda för stopp om inte.
>> Hur som helst, OK.
Så det är slutet.
Tack så mycket för att ni kom.
Jag är en rang amatör på detta.
Så ledsen om du är uttråkad eller förvirrade eller vad har du.
Jag är glad att svara på frågor via e-post vid connorharris@college.harvard.edu.
Detta gäller även för alla titta på detta levande eller senare.
Dessutom, även om jag inte en TF, jag är också mycket
villiga att fungera som en inofficiell rådgivare för alla som är
med hjälp av R i ett slutprojekt.
>> Om du vill det, sedan bara prata med din TF
och sedan skriva mig ett mail så Jag vet vad du arbetar med
och så jag kan ställa in mötet gånger med dig om du vill.
Så återigen, tack så mycket.
Jag hoppas du gillade det.
>> PUBLIK: [OHÖRBAR].
>> CONNER HARRIS: Självklart.
>> PUBLIK: Vilken typ av projekt skulle en CS elev använda R för?
CONNER HARRIS: Så om du inte något som är rent i data mining,
till exempel, och det finns massor av saker
du kan göra med det med data gruv- och maskininlärning.
Du kanske vill använda R för en del av något.
Jag tog upp ursprungligen exemplet av om du skriver en webbplats
och du vill köra automatiserade statistisk analys av din server
stockar vid en viss tid varje dag, som kan vara något som är
mycket lätt att göra på bara en kort R skript som du kan schemalägga
att köra varje natt, till exempel.
>> Och jag är säker, om det finns någon anledning skulle
vill statistik eller graffunktionerna och har denna kör automatiskt i stället
för att behöva interagera med saker i Excel,
till exempel, det är något kanske du vill använda R för.
Så några fler frågor innan jag lämnar?
Nej?
Okej, ja, igen, tack så mycket för att ni kom.