CONNOR Harris: Tog het ek dink 'n paar opwindende video
wat deur 'n professionele advies wat gebruik maak van 'n baie R in sy werk.
>> NARRATOR: Wat is agter die statistieke, die analise en die visualisaties
dat vandag se helderste data wetenskaplikes en sakeleiers staatmaak op
kragtige besluite te neem?
Jy kan nie altyd sien nie.
Maar dit is daar.
Dit is bekend as R, open source R-- die statistiese programmeertaal
dat data kundiges die wêreld oor die gebruik vir alles
van kartering breë sosiale en bemarking tendense aanlyn
tot die ontwikkeling van die finansiële en klimaat modelle wat help ry ons ekonomieë
en gemeenskappe.
>> Maar wat presies is R en waar het R begin?
Wel oorspronklik, R begin hier met twee professore
wat 'n beter statistiese wou platform vir hul studente.
Sodat hulle het een gemodelleer na die statistiese taal S.
Hulle, saam met baie ander, gehou werk en die gebruik van R,
skep gereedskap vir R en vind nuwe aansoeke vir R elke dag.
>> Danksy hierdie is wêreldwye gemeenskap moeite,
R aanhou groei met duisende van die gebruiker geskep biblioteke gebou
R funksionaliteit te verbeter en skare verkry gehalte validering
en ondersteuning van die mees erkende die industrie leiers in elke veld wat
gebruik R. Watter is groot, want R is die beste in wat hy doen nie.
Vinnig ontluikende kundiges en maklik interpreteer, interaksie met,
en vinnig te visualiseer data wat hul groeiende gemeenskap van R gebruikers wêreldwyd
en sien hoe open source R voort te vorm
die toekoms van statistiese analise en data wetenskap.
>> CONNOR Harris: OK, groot.
So my eie aanbieding sal 'n bietjie meer nugter.
Dit sal nie betrek dat baie opwindende agtergrond musiek.
Maar as jy gesien het in die video, R is 'n soort van 'n algemene taal doel program.
Maar dit is meestal geskep vir statistiese werk.
>> So dit is ontwerp vir statistieke, vir data-analise, vir data-ontginning.
En so kan jy sien dit in 'n baie die ontwerp keuses wat die makers van R
gemaak.
Dit is ontwerp vir grootliks, mense wat nie
kundiges in programmering, wat is net optel programmering
aan die kant sodat hulle hul werk doen in die sosiale wetenskap of in statistiek
of wat ook al.
>> Dit het 'n baie baie belangrike verskille uit C.
Maar die sintaksis en die paradigmas dat dit gebruik is oor die algemeen dieselfde.
En jy moet mooi voel veel by die huis van die kolf af.
Dit is 'n noodsaaklik taal.
>> Moenie te veel oor wat bekommerd as jy nie weet wat die term.
Maar daar is 'n onderskeid tussen noodsaaklik, verklarende
en funksionele.
Noodsaaklik beteken net jy state wat beveel basies.
En dan is die tolk of die rekenaar volg hulle een vir een.
Dit is swak getikte, is daar nee-tipe verklarings in R.
>> En dan is die lyne tussen verskillende tipes
is 'n bietjie meer as los hulle is in C, byvoorbeeld.
En soos ek gesê het daar is baie uitgebreide fasiliteite
vir grafiese, vir statistiese analise, vir data-ontginning.
Dit is albei gebou in die taal en, soos die video gesê
duisende derde party biblioteke wat jy kan aflaai en gratis gebruik
met 'n baie los lisensie voorwaardes.
>> So in die algemeen, sou ek aanbeveel dat jy kyk na hierdie twee boeke
as jy gaan om te werk aan R. Een van hulle is die amptelike R beginner se
lei.
Dit is onderhou deur die kern ontwikkelaars van R.
Jy kan dit weer te laai, vry van hef en wettig op daardie skakel daar.
Al hierdie skyfies gaan om te gaan op die internet, op CS50 webwerf
nadat dit gedoen is.
So nie nodig om te kopieer dinge af waansinnig.
>> Die ander een is 'n handboek deur Cosma Shalizi,
wat 'n statistiek professor by Carnegie Mellon, genaamd Advanced Data
Ontleding van 'n Elementêre oogpunt.
Dit is nie 'n hoofsaaklik R boek.
Dit is 'n statistiek en boek dit is 'n data-analise boek.
Maar dit is baie toeganklik vir mense wat 'n mate van statistieke kennis.
>> Ek het nog nooit 'n formele kursus geneem.
Ek weet net stukkies uit verskeie verwante vakke
dat ek kursusse geneem het in.
En ek was in staat om te verstaan dit baie goed.
>> Al die syfers is gegee in R. Hulle is gemaak in R
en hulle het ook kode volledige lys onder elke figuur wat jou vertel
hoe maak jy elke figuur met R-kode.
En dit is baie handig as jy probeer na te boots
sommige figuur wat jy sien in 'n boek.
>> En weer gratis aflaai stat.cmu.edu/cshalizi/ Jammer,
wat moet streep tilde cshalizi.
Ek sal seker maak om reg te wat wanneer die amptelike skyfies optrek.
/ ADAfaEPoV wat net die akroniem van die titel van die boek.
>> So algemene caveats-- R het 'n baie vermoëns.
Ek gaan net in staat wees om te dek die oppervlak van 'n baie van die dinge.
Ook die eerste gedeelte van die seminaar gaan iets van 'n data dump wees.
Ek is redelik jammer daaroor.
Basies, ek gaan jou bekendstel aan 'n baie van die dinge
reg van die kolf af, gaan so vinnig as moontlik.
En dan kry ons die pret deel, wat is
die demo waar ek jou kan wys alles wat ons het gepraat oor wat op die skerm.
En jy kan rondspeel op jou eie.
So daar gaan 'n baie wees tegniese dinge gegooi op hier.
Moenie bekommerd wees oor die kopiëring van alles wat af.
Omdat A, kan jy al die dinge op die CS50 webwerf later.
En B, dit is nie regtig wat belangrik hierdie memoriseer van die skyfies.
Dit is meer belangrik dat jy sommige intuïtief fasiliteit met dit
en wat uit net speel rond.
>> So hoekom R te gebruik?
Basies, as jy 'n projek wat behels die ontginning van groot datastelle, data
visualisering, jy moet R. gebruik As jy
doen ingewikkeld statistiese ontledings, wat moeilik is om in Excel sou wees,
byvoorbeeld, sou dit ook ook good--
As jy doen statistiese analise wat is outomatiese.
Kom ons sê jy die handhawing van 'n webwerf.
En jy wil die bediener log gelees elke dag en stel sommige lys
soos die top lande wat jou gebruikers vandaan kom,
sommige opsomming statistieke oor hoe lank hulle spandeer op jou webwerf of wat ook al.
En jy wil dit elke dag te hardloop.
>> Nou as jy dit doen in Excel, jy wil hê om te gaan na jou bediener log,
invoer wat in 'n Excel spreadsheet data,
hardloop al die ontleding hand.
Met R, kan jy net skryf een script.
Skeduleer dit elke dag te hardloop van jou bedryfstelsel.
En dan elke aand by 02:00, of wanneer jy dit skeduleer om te hardloop,
dit sal lyk deur jou internet verkeer vir daardie dag.
En dan deur die volgende dag, sal jy hierdie blink, nuwe verslag
of wat ook al met al die inligting wat jy gevra het.
>> So basies R is vir Cisco programmering versus Cisco analise.
Voorlopige gedoen word.
Kom ons kry in die werklike dinge.
So is daar drie werklike tipes in die taal.
Daar is numeriese tipe.
Daar is soort van 'n verskil tussen heelgetalle en swaai punte,
maar nie regtig nie.
Daar is 'n karakter tik, wat snare.
En daar is 'n logiese tik, wat Booleans.
>> En jy kan skakel tussen tipes die gebruik van hierdie funksies as numeriese,
as karakter, as logies.
As jy 'n beroep, byvoorbeeld, as numeriese op 'n string,
dit sal probeer om dit te lees string as 'n nommer, op dieselfde manier
dat a2i en scanf te doen, en C. As jy bel as numeriese op waar of vals
dit sal omskep 1 of 0.
As jy bel as karakter op enigiets sal dit
omskep wat in 'n string verteenwoordiging.
>> En dan is daar vektore en matrikse.
So vektore is basies 1 dimensionele skikkings.
Hulle is wat ons noem in skikkings C. Matrikse, 2 dimensionele skikkings.
En dan hoër dimensionele skikkings wat jy kan
het 3, 4, 5 dimensies of wat ook al numeriese waardes van snare,
van logiese waardes.
>> Jy het ook lyste wat 'n soort van assosiatiewe skikking.
Ek sal kry in wat 'n bietjie.
So een belangrike ding dat reise mense in R
is dat daar is geen werklike, suiwer atoom tipes.
Daar is geen werklike onderskeid tussen 'n nommer, soos 'n numeriese waarde,
en 'n lys van waardes numeriese.
Numeriese waardes is eintlik die dieselfde as die draers van lengte 1.
En dit het 'n aantal belangrike implikasies.
Een, beteken dit dat jy kan doen dinge baie maklik wat die volgende behels
soos die toevoeging van 'n aantal van 'n vektor.
R sal basies figuur uit te vind wat jy bedoel met dit.
En ek sal met wat jy in 'n tweede.
Dit beteken ook dat daar geen manier vir die tipe checker-- tot die mate
dat so iets bestaan ​​in R-- te vertel
wanneer jy verby in die enkele waarde wanneer dit verwag 'n skikking of andersom.
En wat kan veroorsaak dat 'n paar vreemde probleme wat ek het in wanneer
Ek is met behulp van R tydens my somer werk.
En daar is geen gemengde-tipe skikkings.
So jy kan nie 'n skikking was die eerste elemente is, weet ek nie,
die string "John" en die tweede element is nommer 42.
As jy probeer om dit te doen, dan sal jy alles net omgeskakel na 'n string.
So ons het string John, string 42.
>> So ongewone sintaktiese features-- mees van R sintaksis is baie soortgelyk aan C.
Daar is 'n paar belangrike verskille.
Tik is baie swak.
So is daar geen veranderlike verklarings.
Opdrag gebruik die vreemde fout operateur minder as koppelteken.
Kommentaar is met die hash merk.
Ek dink nou dae ons noem dit hashtag hoewel dit nie regtig nie accurate--
die dubbele streep.
>> Modulêre oorblyfsels is met %% tekens.
Integer afdeling is met% /% wat baie moeilik is om te lees wanneer dit geprojekteer
op die skerm.
Jy kan wissel van kry heelgetalle met die kolon.
So 2,5 sal jou 'n vektor te gee van al die getalle 2 tot 5.
>> Skikkings is een geïndekseer, wat skroewe 'n klomp mense
up as hulle uit meer tipiese programmeertale,
soos C, waar die meeste dinge is nul-geïndekseerde.
Weereens, dit is waar R se erfenis as 'n taal vir nie soos
professionele programmeerders kom.
As jy 'n sosioloog of 'n ekonoom of iets
en jy probeer om te gebruik R basies as 'n toevoegsel
om jou meer belangrik professionele werk,
jy gaan om uit te vind een-kruip 'n bietjie meer natuurlike.
Omdat jy begin tel op 1 in die alledaagse lewe, nie 0.
>> Vir lusse, dit is soortgelyk aan die foreach bou in PHP,
wat jy kry leer in-- redelik gou.
Dit is vir waarde in vektor en dan kan jy dinge met waarde.
GEHOOR: Dit is kom in lesing.
CONNOR Harris: O, dit is kom lesing, 'n uitstekende.
GEHOOR: Die opdrag is dit veronderstel is om te wys van regs na links?
CONNOR Harris: Van links na regs, ja.
Jy kan dink aan dit as die waarde op die regte skuif na die veranderlike
aan die linkerkant.
GEHOOR: OK.
>> CONNOR Harris: En uiteindelik funksie sintaksis is 'n bietjie vreemd.
Jy het die funksie naam cat, opgedra om hierdie navraag funksie, gevolg
deur al die argumente en dan die liggaam van die funksie na daardie.
Weer hierdie dinge kan lyk 'n bietjie vreemd.
Hulle sal 'n tweede natuur geword nadat jy werk met die taal vir 'n bietjie.
So vektore, die manier jy bou 'n vektor
is jy die tipe C, wat 'n navraag, dan al die nommers wat jy wil hê of snare
of wat ook al.
Argumente ook vektore.
Maar die gevolglike skikking kry platgedruk.
So jy kan nie skikkings waar het sommige elemente is enkele nommers
en sommige elemente is skikkings hulself.
>> So as jy probeer om 'n te bou array was die eerste element is 4
en die tweede element is die skikking 3,5 jy
net 'n drie elemente skikking, 4,3,5.
Hulle kan nie van gemengde tipe.
As jy probeer om lees of skryf buite die grense van 'n vektor
jy sal hierdie waarde genoem NA 'n te kry wat staan ​​vir 'n vermiste waarde.
En dit is bedoel vir soos statistici wat
werk met onvolledige data stelle.
>> As jy 'n funksie wat veronderstel is van toepassing net een getal neem om 'n skikking
dan wat jy kry is, die funksie sal die kaart oor die skikking.
So as jou funksie laat ons sê neem 'n nommer en opbrengste dit vierkant.
Jy aansoek doen dat die skikking 2,3,5 Wat jy kry is die skikking 4,9,25.
>> En dit is baie nuttig want dit beteken jy
hoef nie te skryf vir sirkelroetes vir doen baie eenvoudige dinge soos die toepassing van
'n funksie om al die lede van 'n stel data.
Wat, indien jy werk met 'n groot data-stelle, jy het 'n baie te doen.
Binary funksies Toegepaste inskrywing deur inskrywing.
Ek sal in daardie.
Jy kan toegang tot hulle met skikkings of vektore met vierkantige hakies.
So vektor naam vierkantige hakies 1 sal jy die eerste element gee.
Vektor naam vierkantige hakies 2 sal jy die tweede element gee.
>> Jy kan slaag op 'n vektor indekse en jy sal
terug te kry uit basies 'n sub-faktor.
Sodat jy kan vektor naam hakies C te doen, 2,4 en jy sal kry uit 'n vektor met
die tweede en vierde elemente van die skikking.
En as jy wil net 'n vinnige opsomming statistiek
van 'n vektor soos interkwartielvariasiewydte reeks, mediaan, maksimum, wat ook al,
jy kan net tik opsomming vektor naam en kry wat uit.
Dit is nie regtig nuttig in programmering, maar as jy speel
rondom die data stelle, dit is handig.
>> Matrices-- basies hoër-dimensionele skikkings.
Hulle het hierdie spesiale notasie sintaksis.
Matriks met 'n verskeidenheid wat kry gevul in-- jammer, matriks met data,
aantal rye, aantal kolomme.
Wanneer jy 'n paar data, dit vul in die skikking basies gaan bo na onder
eerste.
Dan links na regs.
So, soos dit.
En R het 'n ingeboude in matriks vermenigvuldiging,
spektrale ontbinding, diagonalisering, 'n baie van die dinge.
As jy wil 'n hoër-dimensionele skikkings, so 3, 4, 5,
of wat ook al dimensies wat jy kan doen.
Die sintaksis is verskeidenheid dowwe gelyk c, dan is die lys van die dimensies.
So as jy wil 'n 4 dimensionele skikking met afmetings 4, 7, 8, 9, die skikking,
dowwe gelyk c (4,7,8,9).
>> Jy toegang tot enkele waardes met hakies eerste inskrywing komma tweede inskrywing.
Jy kan die hele snye kry rye of kolomme.
Met hierdie onvolledig sintaksis dit net rijnummer komma of komma kolom
nommer.
So lyste is 'n soort van verband skikking.
Hulle het hul eie sintaksis hier.
Weer doen nie waansinnig kopieer al hierdie af.
Dit is net so dat mense gaan deur die skyfies later
het dit alles in 'n mooi verwysing.
En dit sal baie natuurlike een keer raak Ek het eintlik loop deur die demos.
So bevat 'n basies verband skikkings.
Jy kan waardes toegang met lys name, dollar teken, sleutel.
So as jou lys is vernoem cat, dan moet jy dit kan oopmaak soos dit.
Jy kan 'n hele sleutel-waarde pair deur verby in die vierkant bracket indeks.
As jy lees van 'n nie-bestaande sleutel, sal jy null.
Dit sal nie fout.
Ding is, R sal doen soos veel met null as wat dit kan.
En dit kan beteken dat as jy nie verwag om uit te kry null
van sommige lys lees, sal jy 'n paar te kry onvoorspelbare foute verder af
die lyn.
>> Dit het met my gebeur my somer werk toe ek die gebruik van R
waar ek verander hoe 'n bepaalde lys is gedefinieer in een plek
maar het nie later verander op die kode wat waardes gelees van dit.
En ja, wat gebeur het, was ek lees nul waardes uit hierdie lys,
verby hulle in funksies, en dat dit baie deurmekaar
toe ek allerhande ewekansige oneindighede opduik
in hierdie funksie.
Want as jy sekere maksimum van toepassing of minimum funksies nul
jy kry oneindige waardes uit.
>> Data rame, hulle is 'n subklas van lys.
Elke waarde is 'n vektor van dieselfde lengte.
En hulle is wat gebruik word vir die aanbieding van, basies, data tabelle.
Daar is hierdie inisialisering sintaksis.
Dit sal al weer, veel duideliker wanneer jy die demo.
En die lekker ding van data rame is dat jy
kan name aan al die kolomme gee en name aan al die rye.
En so wat maak toegang hulle 'n bietjie vriendeliker.
Ook dit is hoe die meeste funksies wat lees data uit Excel-sigblaaie
of van die teks lêers, byvoorbeeld, sal lees in hul data.
Hulle sal dit in te sit 'n soort van data raam.
So functions-- die funksies sintaksis is 'n bietjie vreemd.
Weereens is dit die naam van die funksie, toewys, hierdie navraag funksie en dan
die lys van argumente.
So is daar 'n paar mooi dinge oor hoe funksies werk hier.
Vir een, kan jy eintlik toewys standaard waardes vir sekere argumente.
Sodat jy kan sê R1 equals-- kan jy cat sê
is 'n funksie waar R1 gelyk iets by verstek indien die gebruiker spesifiseer
geen argumente.
Andersins, dit is alles wat hy in.
En dit is baie handig omdat 'n groot deel van ons funksies
dikwels dosyne of honderde argumente.
Byvoorbeeld, die een vir die plot grafieke of plot verspreidingsgrafieke
het argumente wat beheer alles van die titel en die as
etikette om die kleur van regressielyne.
En so as jy nie wil hê om mense te laat spesifiseer
elke enkele een van hierdie honderde argumente
beheer elke enkele aspek van 'n plot of 'n regressie of wat ook al,
dit is lekker om hierdie standaard waardes te hê.
>> En dan kan jy eintlik skryf as jy hier sien rug.
Of 'n beter voorbeeld.
Wanneer jy funksies noem jy kan eintlik noem hulle die gebruik van die argument name.
So hier is 'n voorbeeld van die matriks constructor.
Dit neem drie argumente.
Gewoonlik het jy data, wat is 'n vektor.
Jy het N ry, wat is die aantal rye.
Jy het N cols-- aantal kolomme.
Die ding is as jy tik N ry gelyk ookal
en N Kol gelyk ongeag wanneer jy hierdie funksie te roep,
jy kan eintlik omgekeerde hulle.
Sodat jy kan N Kol eerste en N ry sit tweede en dit sal geen verskil maak nie.
So dit is 'n mooi klein funksie.
>> Het invoer en uitvoer.
Dit kan gedoen word, basies.
Daar is ook fasiliteite om uit te skryf arbitrêre R voorwerpe om 'n binêre lêer
en dan lees hulle terug in later.
Wat is handig as jy doen 'n groot interaktiewe sessie R
en jy moet red dinge baie vinnig.
By verstek het R 'n werk gids wat lêers kry uitgeskryf in
en lees terug in uit.
Jy kan sien dat met getwg, verander dit met setdw.
Niks veral interessant hier
>> So nou is die werklike statistieke spul multilinear regressie.
So die gewone sintaksis is 'n bietjie ingewikkeld.
Die model is 'n groot voorwerp basies.
Dit word toegeskryf aan lm, wat is 'n funksie oproep.
Die eerste element is die y tilde x1 plus wat ook al.
My sintaksis hier is 'n bietjie verwarrend.
Ek is redelik Jammer, hierdie is die standaard manier
dat rekenaarwetenskap boeke doen dit.
Maar dit is 'n bietjie vreemd.
>> So basies, dit is lm hakies, eerste item
is variable-- jammer, afhanklik veranderlike tilde x1 plus x2 plus
egter baie onafhanklike veranderlikes wat jy het.
En dan hierdie kan óf vektore, almal dieselfde lengte.
Of hulle kan kolom headers in 'n data raam
dat jy net spesifiseer in die tweede argument data raam.
>> Jy kan ook spesifiseer 'n meer komplekse formule
sodat jy nie lineêr te agteruitgang 'n een afhanklike veranderlike,
of een vektor op 'n pre-bestaande vektor.
Wat jy kan doen, byvoorbeeld, 'n vektor komponent y kwadraat plus 1
en agteruitgang wat teen die teken van 'n paar ander vektor.
Jy kan opsommings van die druk model met hierdie opdrag genoem
summary-- net opsomming parens model.
Weer iets anders wat ek moet verduidelik.
Iets anders wat kry sal reggestel wanneer die skyfies optrek op die internet.
As jy net wil om te bereken 'n eenvoudige korrelasie
jy kan korrelasie vektor gebruik 1 vektor 2 funksie kern.
Metode is by verstek Pearson korrelasies.
Dit is die standaard wat jy kan doen.
Daar is ook Spearman en Kendell korrelasies
wat is 'n paar verskeidenheid rangorde korrelasie.
Wel hulle nie bereken produk oomblikke tussen die vektore hulself,
maar van die vektor se rang bestellings.
Ek sal dit later verduidelik.
>> GEHOOR: Vinnige vraag
>> CONNER Harris: Natuurlik.
>> GEHOOR: So wanneer jy die berekening van vir die eenvoudige korrelasies doen
jy aanvaar dat daar 'n statistiese betekenis aan die korrelasie?
CONNER Harris: Jy hoef nie te.
'N lm is basies net 'n masjien.
Dit sal in twee dinge en dit sal uitspoeg
koëffisiënte vir die beste passing lyn.
Dit rapporteer ook standaard foute op die koëffisiënte.
En dit sal vir jou sê, soos die afsnit statisties beduidende
of verskil van 0.
Is die helling van die beste fiks lyn statisties
verskillende van nul, ensovoorts.
So is dit veronderstel niks, ek dink is die beste antwoord op jou vraag.
OK.
>> Plotting-- so die belangrikste rede waarom jy moet gebruik R, soos multilinear regressie.
Basies elke taal het 'n paar fasiliteit daarvoor.
En eerlik R se sintaksis vir regressie is 'n bietjie arcane.
Maar plot is waar dit regtig skyn.
>> Die perd funksie is plot en dit neem twee vektore, x en y.
En dan is die ellipse staan ​​vir 'n baie groot aantal opsionele argumente wat
beheer alles van titels kleure van verskeie lyne of verskeie punte,
die tipe plot.
Jy kan strooi het erwe of line erwe.
>> [Onhoorbaar] 2 vektore van dieselfde lengte.
Jy kan eers 'heg data raam in jou script.
En dit sal laat jy net kolom gebruik headers in plaas van afsonderlike vektore.
Jy kan die beste pas lyne en plaaslike voeg regressie krommes om jou grafiek.
>> Hierdie opdragte gelys hier, ab lyn en lyne,
by verstek hierdie kry geskryf in pop up vensters
want dit veronderstel dat jy gebruik R interaktief.
As jy nie jy kan skryf twee lêers wat
is in baie enige formaat wat jy wil.
Jammer, ek het 'n tikfout Ek het net besef.
As jy wil oopmaak 'n ander grafiese toestel
kan jy hierdie funksie genoem PNG of gebruik JPEG of 'n baie ander beeld-formate.
En jy kan grafieke te skryf watter lêer naam wat jy spesifiseer.
Om te kanselleer wat jy het om use-- Ek het dit nie skryf in die slide--
maar daar is 'n funksie genoem dev dot af dat neem geen argumente.
>> Dan is daar fasiliteite vir 3D plot
en kontoer plot As jy wil maak
grafieke van twee onafhanklike veranderlikes.
Ek sal nie in hierdie oomblik.
>> Daar is ook 'n paar fasiliteite vir animasie
dit is gewoonlik onderhou word deur derde partye.
Ek het animasies met R grafieke gedoen, maar ek het nie gebruik hierdie derde party
biblioteke.
So ek kan nie regtig getuig hoe goed hulle is.
Wat ek beveel as jy wil om animasies met behulp van R te maak
is jy kan uit te skryf al die rame vir die animasies
en dan kan jy 'n gebruik derde party program--
tipiese kinders is FFmpeg genoem of ImageMagick-- om steek
al jou rame in een animasie.
>> So tyd vir demo.
So as jy die gebruik van enige Unix agtige stelsel wat is Linux BSD maar BSD gebruik.
OS X maak 'n terminaal venster en tik R by die opdrag prompt.
As jy R studio of die wil, wat ook werk.
Vir Windows gebruikers moet jy wees in staat wees om R te vind in jou menu Start.
Dit moet iets genoem soos R x64 3 punt wat ook al.
Oop te maak daar.
>> So nou laat my net Maak 'n terminale venster.
Alle reg, soek.
GEHOOR: Command-ruimte
CONNER Harris: Command-ruimte, dankie.
Ek het nie gewoonlik gebruik Macs.
Terminale, wys 'n nuwe venster.
Nuwe venster is instellings basiese, R. So jy moet kry
'n welkome boodskap iets soos hierdie.
>> So ek gebruik R interaktief.
Jy kan ook skryf R skrifte van die kursus.
Basies skrifte loop presies dieselfde manier as
as jy sit by die rekenaar tik in elke lyn een op 'n tyd.
So laat ons begin deur die maak van 'n vektor.
A pyl C 1, 2.
1, 2, 4.
OK, seker nie.
Ek kan die lettergrootte groter te maak.
>> GEHOOR: Command-Plus
>> CONNER Harris: Command-Plus.
Opdrag-Plus.
Alle reg, hoe is dit?
Goed?
OK.
So laat ons begin deur waarby 'n vektor lys.
Doen 'n pyl, C 1,2,4.
Ons kan nie 'n te sien.
Moenie bekommerd wees oor die bracket daar.
Die hakies is, so as jy druk baie lang skikkings, ons kan waar jy is.
Een voorbeeld sou wees as ek wil net reeks 2-200.
As ek 'n baie gedruk lang skikking, die hakies
is net so kan ek hou spoor van wat indeks
ons is op as ek soek deur middel van hierdie visueel.
So in elk geval, ons het 'n.
>> So ek sê voor daardie skikkings interaksie baie mooi met, byvoorbeeld,
unêre bedrywighede soos hierdie.
So wat jy dink ek sal kry as ek tik 'n plus 1?
Yep.
Reg, nou sal ek maak hierdie verskillende skikking.
Kom ons sê b c 20,40, 80.
So wat dink jy hierdie opdrag sal doen?
Voeg die elemente.
En so basies dit is wat dit doen nie.
So dit is redelik gerieflik.
So ek hoe oor ek dit doen. c is, kom ons sê, 6 keer 1-10.
So, wat doen wat ek wil sien vervat, dink jy?
So al veelvoude van ses.
Nou, wat dink jy sal gebeur as ek dit doen?
Ek sal dit 'n bietjie duideliker, c, c te maak.
So wat gebeur, het jy dink, as ek dit doen?
'n plus c.
[Onhoorbaar]
>> GEHOOR: Óf 'n fout of dit net voeg die eerste drie elemente.
>> CONNER Harris: Nie heeltemal.
Dit is wat ons het.
Wat gebeur is 'n korter skikking, a, het gery.
So het ons 124, 124, 124.
Ja.
En basies, kan jy sien hierdie gedrag voor, 'n plus 1,
as 'n subklas van hierdie gedrag, waar die kortste skikking is net die aantal
1, wat is 'n een element skikking.
Ek het net nie sê al vektor die tyd in plaas van skikking,
want dit is wat die r dokumentasie doen gewoonlik.
Dit is 'n ingeburgerde c gewoonte.
>> OK, en so nou het ons hierdie skikking.
So ons het hierdie skikking, c.
Ons kan opsomming te kry statistieke oor c, opsomming c.
En dit is mooi.
So nou, laat ons doen 'n paar dinge matriks.
Kom ons sê m is 'n matriks.
Kom ons maak dit 'n drie deur drie een.
So nrows gelyk 3 en ncols gelyk 3.
En data laat do-- so wat dink jy dit gaan doen?
>> Reg, dit is die volgende een.
Dit is nrow en ncolumn.
So, wat ek gedoen het is ek het verklaar 'n drie deur drie matriks
en ek het geslaag in 'n nege-element skikking.
So die logaritme van al die elemente een deur nege.
En al die waardes vul die array-- jammer?
GEHOOR: Dit is die basis 10 logs?
CONNER Harris: Nee, log is natuurlike logaritmes, so basis e.
Ja, as jy wou base 10 log, ek dink wat jy wil hê
om aan te meld ook al, gedeel deur log 10.
En so het die data van die [onhoorbaar] net vul die skikking, so bo na onder,
dan links na regs.
En as jy wil 'n ander te doen skikking, kom ons sê N is matriks.
Kom ons doen, weet ek nie, 2-13.
Of ek sal iets meer interessant te doen.
Ek sal doen 2-4.
nrow gelykes, kom ons sê, 3.
ncol gelyk 4.
n.
So het ons dit gekry het.
>> En nou, as ons wil hê dat hierdie vermeerder sou ons n persent keer persent nie,
want dit is n.
En ons het matriks produkte.
Deur hulle manier, het jy sien hoe wanneer ek verklaar n, die 2-4
vektor het gery tot dit gevul al n?
As jy wou neem eiewaarde-ontbinding,
dit is iets wat ons kan baie maklik te doen.
Ons kan eie N doen.
En so is dit ons eerste ontmoeting met 'n lys.
>> So eie N is 'n lys met twee sleutels.
Waardes, wat is hierdie verskeidenheid hier.
En vektore, wat is hierdie verskeidenheid hier.
So as jy wou onttrek, sê, die derde kolom
uit die eievektore matriks, want die eievektore is kolomvektore.
So kan ons PAC eie N dollar teken doen vektore, komma 3, van [onhoorbaar].
PAC.
Is dat, as jy kan verwag.
>> Dan sê N tye persent keer PAC.
So die gevolg hier lyk beslis soos as ons het die derde eiewaarde hier
wat ooreenstem met die derde eievektor.
Dit vermenigvuldig net alles in hierdie eievektor, komponent-wys,
deur die eiewaarde.
En dit is wat ons sou verwag, want dit is wat eiewaardes is.
Het hier iemand nie geneem lineêre algebra?
'N Paar mense, OK.
Net draai jou brein af vir 'n bietjie.
En inderdaad as ons eie N dollar teken waardes 3 keer PAC,
goed kry dieselfde ding.
Dit is anders as 'n ry geformateer vektor plaas van 'n kolom vektor,
maar groot deal.
En so dit is basies die mooi dinge wat ons kan doen met matrikse,
gedemonstreer lyste.
Ek moet die mooi demonstreer dinge oor funksies as well.
>> So laat say-- [onhoorbaar] funksie oproep laat se
dit funk teen funksie N squared-- Eintlik is dit nie regtig die beste.
a, b, 'n kwadraat plus b.
So een ding oor funksies, weer, is hulle
moenie eksplisiete terugkeer state nodig het nie.
So kan jy die just-- laaste stelling geëvalueer
sal die verklaring teruggekeer wees, of die waarde teruggekeer.
So in hierdie geval, is ons net die evaluering een stelling, 'n kwadraat plus b.
Dit sal die standaard terugkeer waarde wees nie.
Dit maak seer om nooit in te sit uitdruklik terugkeer waardes,
veral as jy met 'n funksie van baie ingewikkelde logika
vloei.
Maar jy dit nie benodig nie.
So nou kan ons funk 5, 1 doen nie, en dit is basies wat jy sou verwag.
Iets anders wat ons kan doen, kan ons werklik doen funk b
gelyk 1, 'n gelyk 5.
So as ons spesifiseer hier watter nommer, wat argument gaan wat argument
in die funksie, kan ons rondom flip hierdie waardes waar ons wil.
>> GEHOOR: Is daar 'n rede om dit uit te skryf met die b
gelyk in teenstelling met net die gebruik van die nommers en die komma?
CONNER Harris: Ja, gewoonlik doen dit as jy het funksies
met 'n baie argumente.
Dit kan dikwels soos vlae wat jy wil net
wil gebruik in seldsame geleenthede.
En op hierdie manier kan jy jou only-- kan verwys na die spesifieke argumente
wat jy wil gebruik nie-standaard waardes vir,
en jy hoef nie 'n uit te skryf n klomp van die vlae gelyk valse agter hulle.
Of ek kan dit weer te skryf met 'n standaard waarde soos b is gelyk aan 2.
En dan kan ek f funk te doen, Ek sal doen 4, 1 hierdie tyd.
En 17, wat is 4 kwadraat plus 1, soos jy kan verwag.
>> Maar ek kan ook net noem dit met funk 4,
en ek kry 18, want Ek het nie spesifiseer b.
So b kry die verstek waarde van 2.
>> OK, so nou as jy volgende saam met die demo,
tik hierdie lyn op jou bevel gevra en kyk wat kom.
Eintlik, dit nie doen nie.
Tik hierdie.
Jy moet iets soos hierdie te kry.
So mtcars is 'n ingeboude in die data wat vir hierdie demonstrasie
doeleindes wat kom with-- wat kom in by verstek met jou r verspreiding.
Dit is 'n samestelling van statistieke van 'n 1974-uitgawe van die tydskrif Motor Trend se
op 'n aantal van die verskillende motor modelle.
>> So is daar myl per gelling, cylinders-- Ek vergeet wat disp is-- perdekrag.
Waarskynlik.
As jy net Google MT motors, dan een van die eerste resultate
sal wees van die amptelike r dokumentasie
en dit sal verduidelik al hierdie data velde.
So gewig is-- wt is gewig van die motor in ton.
Q sek is die kwart myl tyd.
So nou kan ons 'n paar lekker dinge te doen oor MT motors is 'n data veld.
>> So kan ons dinge doen soos ry name, mt motors.
En dit is 'n lys van al die rye in die stel data wat name van die motors is.
Ons kan colnames, mt motors doen.
As jy dit doen mt motors, sub-numeriese indeks soos 2.
kry ons die tweede kolom uit hierdie, wat sou silinders wees.
>> GEHOOR: Wat het jy gedoen?
>> CONNER Harris: Ek getik mt motors, hakies e,
wat my die tweede het kolom uit mt motors.
Of as ons wil 'n ry, kan ek tik mtcars komma 2, byvoorbeeld.
Ander ronde 2 komma, soos dit.
En wat gaan in jou ry.
Dit is hier net gee jou 'n kolom, maar kolom as 'n vektor.
Ek besef nou net ek vergeet om te demonstreer
paar cool dinge oor vektore wat jy kan doen met indekse.
So laat my dit doen nou.
So kom ons doen c gets-- om hierdie op pause-- 2 keer 1 tot 10.
So c is net gaan om te wees die vektor 2 deur middel van 20.
Ek kan elemente te neem soos hierdie, c2.
Ek kan slaag in 'n vektor soos hierdie, c-- my laat
gebruik verskillende name as c, soos PAC c.
Basies, ek doen dit so kry jy nie
verwar tussen c as 'n vektor konstruksie funksie,
en dan c as 'n veranderlike naam.
PAC hakies c 4, 5, 7.
Dit sal my uit die vierde, vyfde, en sewe elemente van die skikking.
Ek kan PAC doen, sit in 'n negatiewe indeks, soos negatiewe 4.
Dit sal my uit hierdie kom met die vierde element verwyder.
Dan as ek wou snye te doen, Ek kan PAC 2 doen deur middel van 6.
2 kolon 6 is net nog ' vektor, wat is 2, 3, 4, 5, 6.
Spoeg dit.
>> So in elk geval, terug na mt motors.
So laat doen 'n paar regressies.
Kom ons sê model gets-- laat lineêr regress-- Ek weet nie.
Eerste laat se wil heg mtcars, natuurlik.
So [onhoorbaar] model lm, laat agteruitgang myl per gelling op tilde gewig.
En dan data raam is mtcars.
So opsomming model.
>> OK, so dit lyk 'n bietjie ingewikkeld.
Maar basies, aangesien as ons probeer om myl per gelling druk
as 'n lineêre funksie van die gewig, dan het ons hierdie lyn hier,
wat afsnitte op 37,28.
37,28 sou wees om die teoretiese myl per liter van 'n motor wat nul weeg.
En dan vir elke addisionele ton, jy klop ongeveer vyf myl per gelling
af van daardie.
Beide van hierdie koëffisiënte jy kan daar standaard foute te sien.
En hulle is baie statisties beduidend nie.
>> So kan ons baie seker wees 1 e 10 om die negatiewe 10.
So 1 keer iets doen om die negatiewe 10, dat as jy 'n swaarder motor te maak,
dit sal hê erger myl per gelling.
Of ons kan 'n paar ander model te toets.
Soos in plaas van agteruit hierdie gewig,
laat se agteruitgang dit op log gewig, want miskien die effektiewe gewig
op een of ander manier nie kilometers is lineêr.
>> Dit het vir ons 'n r kwadraat van 0,7528.
So kom ons probeer hierdie.
Hierdie keer kom ons doen 'n verskillende veranderlike ook.
Model2.
So opsomming, model2.
Alle reg, dit weer, het ons hier het ons die beste pas lyn.
En dit time-- dit sê, basies dat elke keer as jy
verhoog die gewig van 'n motor met 'n faktor van e
jy verloor hierdie baie myl per gelling.
>> En so hierdie tyd ons oorblywende standaard fout it-- dit maak nie saak, regtig.
Die oorblywende standaard fout is basies net die standaard fout
wat jy verlaat het nadat jy neem die tendens lyn weg.
En ons r hier kwadraat is 0,81, wat is 'n bietjie beter as wat
ons voorheen gehad het, 0,52.
>> En so nou laat ons voeg 'n term om hierdie regressie.
So laat agteruitgang myl per gelling beide op die puntelys van die gewigte
en laat ons dit doen, q myl, kwart myl tyd.
OK, moet dit the-- alles reg, qsec het.
Qsec.
Actually-- jammer, wat?
Laat my dit iets noem anders behalwe model2.
Laat my model3 noem.
En so nou kan ons opsomming model3 doen.
En dit weer, dit is basies wat jy kan verwag.
Jy het positiewe onderskep.
Die effektiewe verhoging gewig is negatief.
En die effektiewe toenemende kwart myl tyd
positief is, maar al minder as gewig.
Nou intuïtief, kan jy sin te maak deur te sê dink oor sportmotors.
Daar is 'n baie vinnige versnelling, 'n baie kort kwart myl tye.
Hulle gaan ook meer gas te gebruik, terwyl meer sinvolle motors gaan
stadiger versnelling het, hoër kwart myl tye,
en gebruik minder gas ,, sodat hoër myl per gelling.
Groot.
En so is dit nou tyd om plot iets soos hierdie.
So laat do-- so kaal bene kan ons plots-- doen
omdat ek dit data raam het aangeheg before-- ons kan net nie erwe, wt mpg.
Maak dit 'n bietjie groter.
Daar het ons basies 'n spreidiagram, maar die punte
is soort van moeilik om te sien op hierdie.
>> Ek het nie onvoorbereid wat die onthou sintaksis is vir die verandering van die plot.
So ek dink dit sal wees 'n goeie tyd om te bring,
daar is 'n baie mooi ingeboude hulp funksie, help aanhalings funksioneer naam.
Ons sal tot basies bring enigiets wat jy wil.
Ek dink ek sal dit werklik te doen tipe gelyk p vir punte erwe.
Het dit iets te verander?
En nee, nie regtig nie.
Alles reg.
>> Vir een of ander rede, wanneer ek dit gedoen het op my eie rekenaar 'n ruk gelede,
al die strooi punte was baie duideliker.
Anyhow, is die strooi soort sigbare?
Daar is een daar.
'N Paar daar 'n paar daar.
Jy kan hulle soort van sien nie, reg?
So as ons wil 'n beste passing lyn voeg hierdie plot hier, wat is 'n bietjie kaal
bones-- laat my maak dit 'n bietjie mooier.
Main gelyk versus gewig.
Myl per gelling.
Weereens, kan jy sien hoe nuttig opsionele argumente is hier met ook
nie met dinge in 'n sit bepaalde orde met argumente sleutelbord
wanneer jy erwe nie, omdat hierdie neem 'n baie van die argumente.
>> XLab gelyk gewig, gewig, ton.
Alles reg.
OK, ja, hierdie toestel is 'n bietjie lastig.
Maar jy kan soort van daar te sien, daar is 'n grafiek titel op die kant.
Hier there's-- op die onderste hier is daar as etikette.
Ek kan nie onthou onvoorbereid wat die opdragte ars--
wat die funksies is om te verhoog die grootte van die etikette en titels,
maar hulle is daar.
>> En so as ons wil voeg die beste passing lyn,
ons kon iets te doen like-- ek het die sintaksis hier geskryf het.
So onthou ons voeg net model was mpg, gewig, mtcars.
En so as ek wou die beste passing te voeg lyn, ek kan 'n, b line model te doen.
En boom, ons het 'n beste passing lyn.
Dit is soort van moeilik om weer te sien.
Ek is redelik jammer oor die tegnologiese probleme.
Maar dit loop basies links bo na regs onder.
>> En as die skaal was groter, kan jy sien
dat die afsnit is wat jy kan vind uit die opsommingstatistiek
as jy tik opsomming model.
OK, so ek hoop almal kry iets van 'n gevoel van wat
R is, wat dit is goed vir.
Jy kan baie mooier erwe as om hierdie op jou eie tyd, as jy wil.
>> So het die buitelandse funksie koppelvlak.
Dit is iets wat nie tipies gedek in inleidende lesings
of inleidende enigiets vir r.
Dit is waarskynlik nie jy gaan dit nodig.
Ek het egter gevind dat dit nuttig in my eie projekte in die verlede.
En daar is nie 'n goeie Handleiding vir dit aanlyn.
So ek is net gaan om te jaag julle almal deur hierdie
en dan is jy vry om te gaan.
En so het die buitelandse funksie koppelvlak is wat
jy kan gebruik om uit te roep om te sien funksies met 'n R. Intern
R is gebou op C. R se rekenkundige is net C se 64-bit floating point rekenkunde,
wat is tik dubbel [onhoorbaar].
En jy kan wil doen dit vir 'n klomp van die redes.
Vir een, is R geïnterpreteer, dit is nie saamgestel tot masjienkode.
Sodat jy kan herskryf jou innerlike loops in C en dan kry
die voordeel van die gebruik R. Soos dit is 'n bietjie meer gerieflik as C.
Dit het 'n beter grafiese fasiliteite en noem maar op.
En terwyl hulle nog in staat is om te kry topspoed uit die binneste loops,
wat is waar jy dit regtig nodig het.
>> Hergebruik bestaande C biblioteke, dit is ook belangrik.
As jy 'n paar C-biblioteek vir die wil, Ek weet nie, Fourier transforms
of 'n paar baie Archeaan statistieke prosedure wat gebruik word
in 'n hoë-energie astrofisika of iets, ek weet nie.
Hoë-energie astrofisika is nie eens 'n think, dink ek.
Maar jy kan dit doen in plaas van om om 'n inheemse R hawe van hulle skryf.
En op the-- en weer soos as jy kyk in die meeste van R se verstek biblioteke,
op die internals, die internals is gaan na die buitelandse funksie
koppelvlak baie omvattend.
Hulle sal dinge soos Fourier het verander of rekenaar korrelasie
koëffisiënte geskryf in C, en hulle sal net R omhulsels rondom hulle.
Die koppelvlak is 'n bietjie moeilik. ek dink
sy probleme is oordrewe in 'n Baie van die instruksies wat jy sal vind.
Maar tog is dit 'n bietjie verwarrend.
En ek het nie in staat was om vind 'n goeie handleiding vir dit,
so dit is dit nou.
Weereens, hierdie hele segment is meer vir latere verwysing.
Moenie bekommerd wees oor die kopiëring alles neer op die oomblik.
So die volgende instruksies is vir Unix-agtige stelsels,
Linux, BSD, OS X. Ek weet nie hoe dit werk op Windows,
maar asseblief net nie doen jou finale projek op Windows.
Jy wil regtig nie om.
Unix is ​​baie beter stel up vir gemaklik programmering.
So, basies buitelandse funksie koppelvlak.
As jy wil 'n C skryf funksie vir gebruik met R,
dit het al die neem argumente wenke.
>> So vir 'n enkele waardes, hierdie beteken dit wys na die waarde.
Vir skikkings, dit is 'n muis om die eerste element wat
is wat verskeidenheid name eintlik beteken.
Weereens, dit is iets wat jy moet hê mooi heeltemal af na p stel vyf.
Verskeidenheid name is net wenke om die eerste element,
Die tipe swaai-punt is dubbel.
En jou funksie het nietig terugkeer.
Die enigste manier waarop dit kan eintlik vertel wat gebeur het R
is deur die wysiging van die geheue wat R het om dit deur middel van die buitelandse funksie
koppelvlak.
>> So ek het hierdie geskryf byvoorbeeld hier, dit is
'n funksie wat gebruik bere dot produk van twee vektore.
Dit neem twee argumente, vek1, vek2, wat die vektore hulself,
en dan N, wat 'n lengte, want weer,
R het 'n ingeboude in [onhoorbaar] om uit te vind die lengte van vektore, maar C nie.
In C, vektore is 'n arbitrêre afgebaken stuk van die geheue.
So die manier wat jy kan bereken dot produkte
is net hierdie uiteengesit parameter nul en dan Itereer deur
van 1 tot ster N, want N is 'n verwysing na die lengte,
net iets byvoeg by dit uit parameter.
En dit kan 'n goeie praktyk wees as jy gaan om dit te doen
hierdie twee afsonderlike C funksies te skryf.
Een van hulle has-- een van hulle net neem die argumente en die tipes
dat hulle gewoonlik sou wees in C.
>> So Dit neem 'n verskeidenheid argumente wenke.
Maar argumente enkel-waarde soos n, dit neem net soos waardes kopie,
sonder wenke.
En dan is dit nie [Onhoorbaar] uit wyser.
En dan kan jy 'n ander, basies,
wrapper funksie wat basies hanteer die vereistes
van die buitelandse funksie koppelvlak vir jou.
>> Die manier waarop jy noem dit in R is, sodra jy het jou funksie geskryf in C,
jy R cmd shlib, R tik opdrag gedeelde biblioteek,
cat dot c, of wat ook al jou lêer naam is,
en die OS dop nie in die R terminale.
En dit sal 'n te skep biblioteek genoem cat dot so.
En dan kan jy dit in laai ons script of interaktief
met opdrag dyn dot las.
Dan is daar 'n funksie in R genoem dot c.
>> Dit neem argumente wat eers die naam van die funksie in C
wat jy wil om te bel.
En dan sal al die parameters om daardie funksie,
hulle het om te wees in die korrekte volgorde.
Jy het om hierdie tipe gebruik dwang funksies as heelgetal, as
dubbel, soos karakter, en as logies.
En dan wanneer dit terugkeer die lys, wat weer is net
'n verskeidenheid van die verband parameter name en die waardes
na die funksie het hardloop.
>> So in hierdie geval, want dot prod het argumente vek1, vek2 en int n, n het.
Dot c ons het dot prod, die naam van die funksie
Ons noem, vek1, vek2, tipe dwing.
Die lengte van die een of vektor, Ek het gekies om net vek1 arbitrêr.
Dit sou meer robuuste om s te sê heelgetal min lengte van vek1, lengte vek2.
Dan net as dubbel nul, want ons het nie regtig
omgee wat gaan in die uit parameter, want ons is
opstel dit in elk geval nul.
>> En dan die resultate gaan 'n wees groot verskeidenheid van basies verband hou
vek1 is wat ook al, vek2 is wat ook al.
Maar ons is geïnteresseerd in uit, sodat ons kan kry dat uit.
Dit is weer 'n baie speelgoed byvoorbeeld van 'n buitelandse funksie koppelvlak.
Maar as jy moet dot bereken produkte van massiewe vektore in lissies
of indien jy hoef te doen iets anders in 'n lus,
en jy nie wil hê om te vertrou op R, wat wel 'n bietjie van oorhoofse
gebou in dit, kan dit nuttig wees.
>> Weereens, dit is gewoonlik nie 'n inleidende onderwerp R.
Dit is nie baie goed gedokumenteer.
Ek is net insluitend dit omdat Ek het gevind dat dit nuttig in die verlede.
So, slegte praktyke.
Ek het genoem dat daar 'n lus in die funksie.
Algemeen moet jy nie, in die taal, nie gebruik nie.
Op grond van hoe R implemente iterasie intern, kan dit stadig wees.
Hulle het net ook kyk lelik.
>> R hanteer vektore baie mooi, so dikwels het jy nie nodig om dit te gebruik.
Dan kan jy gewoonlik vervang dikwels 'n vektor
met hierdie funksies genoem hoë Om funksies, Kaart, Verminder,
Vind of filter.
Ek sal net 'n paar te gee voorbeelde van wat hierdie dinge te doen.
Kaart is 'n hoër orde funksie omdat dit neem 'n funksie as 'n argument.
Sodat jy dit 'n funksie kan gee, jy kan dit gee 'n skikking,
en dit sal die funksie van toepassing elke element van die skikking
en die standaard van die nuwe skikking.
Verminder, basies gee dit 'n skikking, dit gee jou
'n funksie wat twee argumente neem.
Dit sal die funksie eerste, die toepassing eerste argument met 'n paar voorgereg waarde.
Dan wat die resultaat in die tweede.
Dan wat die resultaat in die derde, dan wat die resultaat in die vierde.
En dan terug wanneer dit tot die einde.
So byvoorbeeld, as jy wil bereken die som van al die elemente
in 'n skikking, as wat jy kan noem verminder met [onhoorbaar] verminder 'n toevoeging
funksie, soos funk a, b, terugkeer 'n plus b.
En dan begin 'n waarde van 0.
>> En al hierdie, kan jy hulle vind in die R dokumentasie beskryf,
in enige handboek oor funksionele programmering.
Daar is ook hierdie klas van funksies genoem toepassing funksies,
wat ek don't-- hulle is 'n bietjie moeilik om te verduidelik,
maar as jy kyk in [onhoorbaar] bespreek dat ek aangehaal aan die begin,
Hy het hulle verduidelik baie goed in sy blindederm op R programmering.
Meer oor praktyke, aanbring om vektore.
Ja?
Ek dink ek moet regstel nie.
In daardie eerste lyn, vektore pyl, dat pyl moet nie daar wees.
Jy kan toewys aan 'n vektor, weer deur neem sy lengte plus 1
en die toeken bietjie waarde aan daardie.
Dit sal die vektor brei, of jy kan doen PAC gelykes c, PAC newvalue.
Weereens, as jy C gebruik met een argument as 'n vektor,
die gevolglike hiërargie kry platgedruk.
So jy sal net 'n vektor dit is uitgebrei deur 1.
Dit te doen nie.
>> Die rede waarom jy moet dit nie doen nie is dit.
Wanneer jy 'n vektor te ken, is dit gee dit 'n sekere deel van die geheue.
As jy verhoog dat vektor grootte, dit het om die vektor hertoeken
iewers anders.
En so hertoewysing is baie duur.
Ek sal nie in die besonderhede van hoe gaan geheue toewysers geïmplementeer
op die bedryfstelsel vlak, maar dit neem 'n baie van die tyd
om 'n nuwe stuk van die geheue te vind.
En ook, as jy re-toekenning baie, baie
van progressief groter stukke, beland jy
met iets genoem geheue fragmentasie,
waar die beskikbare geheue is verdeel in baie klein blokkies
in die geheue toewysers oogpunt.
En dit moeiliker en moeiliker raak geheue vir ander dinge te vind.
So in plaas, as jy nodig het om dit te doen indien wat jy nodig het om 'n vektor groei van die een einde
na die volgende, in plaas van die aanbring om dit voortdurend, moet jy vooraf ken nie.
PAC pyl, vektor lengte gelyk 1000, of wat ook al.
>> En dan kan jy net toewys die vektor se waardes een
'n tyd nadat jy dit een keer het toegeken.
Ek het in hierdie weer, my somer werk toe ek skryf NRA ewenaar
vergelyking oplosser.
Nie simbolies numeriese.
Die idee is dat wanneer jy een waarde vir jou oplossing,
julle wat gebruik om die volgende een te bereken.
So my natuurlike naïef neiging was om te sê OK,
so ek sal begin met 'n vektor dit is 'n aansienlike waarde.
Bereken vanaf die volgende waarde wat gaan op my oplossing vektor,
en voeg dit.
>> Iets anders te skep, voeg dit.
Dit het baie, baie stadig.
En sodra ek dit besef en ek het my stelsel
van die aanbring van hierdie vektor soos 10,000 tot 100,000 tye,
net pre-toekenning 'n vektor en net loop met dit.
Ek het meer as 1000 vou spoed.
So, dit is 'n baie algemene lokval vir R programmering.
As jy nodig het om op te bou 'n vektor stuk vir stuk, pre-ken nie.
>> Nog 'n algemene trip up-- dit is my laaste skyfie, nie worry-- is fout hantering.
R, om eerlik te wees, is dit nie dit regtig baie goed.
Daar is 'n baie probleme wat kan opduik.
Byvoorbeeld, as jy 'n verskeidenheid te kry of 'n vektor van 'n funksie
dat jy verwag 'n enkele was waarde om te kom uit, of andersom,
en julle wat slaag in 'n funksie wat Jy het verwag 'n enkele waarde,
wat 'n probleem kan wees.
>> Sekere funksies terugkeer null as doen, sê,
lees van 'n bestaande sleutel in 'n lys.
Maar null is nie soos C waar as jy probeer om te lees
uit 'n ou pointer, [onhoorbaar] om wyser null, is dit net seg foute
en as jy in jou debugger dit vertel jou presies waar jy is.
In plaas daarvan, sal nul funksies do-- sal onvoorspelbare dinge te doen
as hulle oorhandig null.
Soos as jy oorhandig maksimum nul, dit sal jy negatiewe oneindigheid gee.
En so, ja.
En so dit gebeur my een keer toe ek
verander 'n klomp van velde in my lys struktuur
keer sonder die verandering van hulle elders toe ek lees van hulle.
En dan het ek allerhande random oneindigheid resultate opduik
en ek het geen idee waar hulle vandaan kom.
En ongelukkig is daar geen werklike R streng af
waar jy kan sê as iets lyk soos dit 'n fout kan wees,
net daar stop sodat ek kan wees gedissiplineerde en los dit.
Maar daar is iets genoem stop indien nie.
Dit is gelykstaande aan C se geld, as jy het gepraat oor dat.
Ek dink nie C beweer is 'n lesing onderwerp
maar jou artikel leier daaroor gegaan het.
En stop as dit nie neem basies enige gesegde, so 'n verklaring wat
kan waar of vals is.
En as dit vals is, dit tot stilstand kom sy program.
Dit vertel jou presies wat jy in lyn was op en watter toestand misluk.
>> En dit baie nuttig, byvoorbeeld, gesonde verstand nagaan, funksie insette.
So as jy 'n funksie en jy verwag, sê,
as jy my 'n datum moet gee, ek wil die datums net 'n vektor van lengte 1
en iewers tussen 1 en 31.
En indien nie, ek weet iets is verkeerd geloop het.
En ek kies om daar te stop voordat dit het ewekansige klop aan effekte met 'n kode
dat dit moeiliker om deur te spoor.
So dit is 'n moontlike gebruik vir stop indien nie.
>> Anyhow, OK.
So dit is die einde.
Baie dankie vir die komende.
Ek is 'n amateur rang op hierdie.
So jammer as jy verveeld is of verward of wat jy het.
Ek is bly om vrae per e-pos te neem op connorharris@college.harvard.edu.
Dit geld ook vir almal kyk na hierdie lewe of later.
Ook, maar ek is nie 'n TF, Ek is ook baie
bereid is om te dien as 'n nie-amptelike adviseur vir enigiemand wat
die gebruik van R in 'n finale projek.
>> As jy wil om dit te, dan net praat met jou TF
en skryf dan vir my 'n e-pos sodat Ek weet wat jy werk op
en so kan ek 'n vergadering keer met jou as jy wil.
So weer, baie dankie.
Ek hoop jy geniet dit.
>> GEHOOR: [onhoorbaar].
>> CONNER Harris: Natuurlik.
>> GEHOOR: Watter soort van 'n projek sou 'n student CS gebruik R vir?
CONNER Harris: So as jy dit nie doen nie iets wat suiwer in data-ontginning,
byvoorbeeld, en daar is baie van die dinge
wat jy kan doen met dit met die data mynbou en masjien leer.
Jy mag dalk wil om R te gebruik vir 'n komponent van iets.
Ek laat optrek, oorspronklik, die voorbeeld van as jy skryf 'n webwerf
en jy wil outomatiese hardloop statistiese ontleding van jou bediener
logs op 'n sekere tyd elke dag, wat dalk iets wat wees
baie maklik om te doen in net 'n kort R script wat jy kan skeduleer
elke nag loop, byvoorbeeld.
>> En ek is seker, as daar is enige rede wat jy wil
wil statistieke of grafiese vermoëns en hierdie run outomaties plaas
van om te kommunikeer met dinge in Excel,
byvoorbeeld, dit is iets wat wil jy dalk R te gebruik vir.
So enige vrae meer voor ek vertrek?
Geen?
Alle reg, goed, weer, dankie baie dankie vir die komende.