Connor HARRIS: Ankoraŭ mi pensas iu ekscita video
produktitaj de profesia consultoría kiu uzas R multon en lia laboro.
>> Rakontanto: Kio estas malantaŭ la statistikojn, la analizo, kaj la visualizaciones
ke hodiaŭa brila datumoj sciencistoj kaj komercaj estroj fidi
fari potencan decidoj?
Vi eble ne ĉiam vidi ĝin.
Sed ĝi estas tie.
Ĝi nomiĝas R, malferma fonto R-- la statistika programlingvo
ke datumoj ekspertoj la mondo super uzo por ĉio
el mapado larĝaj sociaj kaj merkatumanta tendencojn enreta
por disvolvi la financaj kaj klimato modeloj kiuj helpas stiri nian ekonomioj
kaj komunumojn.
>> Sed kio precize estas R kaj de kie R komenci?
Nu origine, R komenciĝis tie kun du profesoroj
kiu volis pli bonan statistikan platformo por iliaj studentoj.
Do ili kreis modelado post la statistika lingvo S.
Ili, kune kun multaj aliaj, multe okupiĝis pri kaj uzante R,
krei ilojn por R kaj trovante novaj aplikoj por R ĉiutage.
>> Danke al ĉi tio estas mondskalaj penon,
R konservis kreskanta kun miloj de uzanto kreita bibliotekoj konstruitaj
plibonigi R funcionalidad kaj amaso-sourced kvalito kontrolada
kaj subteno de la plej rekonitaj industrio gvidantoj ĉiukampe ke
uzas R. Kiu estas granda, ĉar R estas la plej bona ĉe kion ĝi faras.
Burĝona spertuloj rapide kaj facile interpreti, interagi kun,
kaj visualizar datumoj montrante ilian rapide kreskanta komunumo de R uzantoj tutmonde
kaj vidi kiel malferma fonto R daŭre formi
la estonteco de statistika analizo kaj datumoj scienco.
>> Connor HARRIS: OK, granda.
Do mia propra prezento estos iom pli sobra.
Ĝi ne implikas ke multe ekscita fono muziko.
Sed kiel vi vidis en la vídeo, R estas speco de ĝenerala celo programo lingvon.
Sed ĝi estis kreita plejparte por statistikaj laboro.
>> Do ĝi estas desegnita por statistiko, por datuma analizo, por datumoj minado.
Kaj tiel vi povas vidi tiun en multajn la dezajno elektojn ke la farantoj de R
faris.
Ĝi estas desegnita por plejparte, personoj kiuj ne estas
fakuloj en programado, kiu jxus kaptanta programado
sur la flanko tiel ke ili povas fari ilian laboron en socia scienco aŭ en statistiko
aŭ kio ajn.
>> Ĝi havas multajn tre gravaj diferencoj de C.
Sed la sintakso kaj la paradigmoj ke ĝi uzas estas larĝe la sama.
Kaj vi devus senti bela multe hejme dekstra ekstere la batilo.
Estas imperativo lingvo.
>> Ne tro maltrankviliĝu pri tio se vi ne konas la terminon.
Sed estas distingo inter imperativo, enunciativo,
kaj funkcia.
Imperativo nur signifas vin fari deklaroj kiuj estas esence ordonas.
Kaj tiam la interpretisto aŭ la komputilo sekvas ilin unu post unu.
Ĝi estas malforte tajpita, estas neniu tipo deklaroj en R.
>> Kaj tiam la linioj inter malsamaj tipoj
estas iom pli malfiksas ol ili estas en C, ekzemple.
Kaj kiel mi diris estas tre vasta instalaĵoj
por grafikaj, por statistikaj analizo, por datumoj minado.
Tiuj estas ambaŭ konstruita en la lingvo kaj, kiel la video diris,
miloj de triaj bibliotekoj kiuj vi povas elŝuti kaj uzi senpage
kun tre sueltos permesilo kondiĉojn.
>> Do ĝenerale, mi rekomendas ke vi rigardu tiujn du librojn
se vi tuj labori sur R. Unu de ili estas la oficiala R Komencanto
gvidi.
Ĝi estas subtenita de la kernajn laborantojn de R.
Vi povas elŝuti ĝin denove, libera de ŝarĝi kaj jure ĉe ligantaj tie.
Ĉiuj tiuj diapozitivoj tuj iros supren sur la interreto, sur CS50 paĝaro
post ĉi estas farita.
Do ne bezonas kopii aferojn malsupren panike.
>> La alia unu estas lernolibro de Cosma Shalizi,
Kiu estas statistiko profesoro Carnegie Mellon, nomita Altnivela Datumoj
Analizo de la Elementa vidpunkto.
Tio ne ĉefe R libro.
Estas statistikojn libro kaj ĝi estas datumo analitiko libro.
Sed ĝi estas tre atingebla por homoj kiuj havi minimumon de statistiko scio.
>> Mi neniam prenis formalan kurson.
Mi nur scias bitoj kaj pecoj el diversaj aliancitaj temoj
ke mi prenis kursojn en.
Kaj mi povis kompreni ĝi tute bone.
>> Ĉiuj figuroj estas donitaj en R. Ili estas faritaj en R
kaj ili ankaŭ havas kodon listigo sub ĉiu figuro kiu diras al vi
kiel vi faras ĉiu figuro kun R kodon.
Kaj tio estas tre utila se vi provas emular
iu figuro vi vidas en libro.
>> Kaj denove libera deŝuto stat.cmu.edu/cshalizi/ Mizera,
kiuj devus esti oblikvo supersigno cshalizi.
Mi certiĝu korekti tion kiam la oficiala diapozitivoj iru.
/ ADAfaEPoV kiu estas nur la akronimo de la libro titolo.
>> Do ĝenerale caveats-- R havas multajn kapablojn.
Mi nur tuj povos kovri la surfaco de multaj aferoj.
Ankaŭ la unua parto de la seminario tuj esti io de datumoj Escorial.
Mi estas tute bedaŭras pri tio.
Esence, mi tuj klarigi pri multaj aferoj
tuj la batilo, iri kiel rapide kiel ebla.
Kaj tiam ni atingos la amuza parto, kiu estas
la demo kie mi povas montri al vi ĉion ke ni jam parolis pri la ekrano.
Kaj vi povas ludi ĉirkaŭ sur via propra.
Do tie okazas esti multajn teknikajn aferojn alteriĝas ĉe tie.
Ne maltrankviliĝu pri kopiado ĉiuj kiuj suben.
Ĉar, Vi povas akiri ĉiujn havajxoj sur la CS50 retejo poste.
Kaj B, ĝi ne estas vere, ke grava enmemorigi ĉi de la diapozitivoj.
Estas pli grava ke vi akiras iu intuicia facilecon kun ĝi
kaj tio devenas nur ludanta ĉirkaŭ.
>> Do kial uzi la R?
Esence, se vi havas projekton kiu engaĝas ministo grandaj datenaroj, datumoj
vidigo, vi devus uzi R. Se vi estas
faras komplikita statistikaj analizoj, ke estus malfacile en Excel,
ekzemple, estus ankaŭ esti good-- ankaŭ
se vi faras statistikan analizo kiuj estas aŭtomatigitaj.
Diru vi daŭriganta retejo.
Kaj vi volas legi la servilo log ĉiutage kaj kompili iun liston,
nuda landoj viaj uzantoj venas el:
kelkaj resumaj statistikoj pri kiel longe ili pasigas sur via retejo aŭ kio ajn.
Kaj vi volas kuri ĉi ĉiutage.
>> Nun se vi faras tion en Excel, vi devus iri al via servilo log,
importi ke enen Excel datumoj kalkultabelo,
kuri ĉiujn analizo permane.
Kun R, vi povas simple skribi unu skripton.
Plani ĝin kuri ĉiutage de via mastruma sistemo.
Kaj tiam ĉiu nokto ĉe 2:00 AM, aŭ whenever vi planas ĝin kuri,
ĝi aspektos tra via interreto trafiko por tiu tago.
Kaj tiam de la sekva tago, vi devos havas ĉi brila, nova raporto
aŭ cuanta kun ĉiuj de la informo vi petis.
>> Do esence R estas por Cisco Programado kontre Cisco analizo.
Prepara fariĝis.
Ni enir la realaj aĵoj.
Do estas tri reala tipoj en la lingvo.
Ekzistas nombraj tipo.
Tie estas ia diferenco inter entjeroj kaj flosanta punktoj,
sed ne vere.
Ekzistas karaktero tajpi, kiu estas kordoj.
Kaj estas logika tajpi, kiu estas Booleans.
>> Kaj vi povas konverti inter tipoj uzante tiujn funkciojn kiel nombra,
kiel karaktero, kiel logika.
Se vi vokos, ekzemple, kiel numera sur ŝnureto,
provos legi ke kordo kiel nombro, sammaniere
ke a2i kaj scanf fari, kaj C. Se vi nomas kiel numera sur vera aŭ malvera
ĝi igos al 1 aŭ 0.
Se vi nomas kiel karaktero sur io ĝi malebligos
konverti ke en string reprezento.
>> Kaj tiam tie estas vektoroj kaj matricoj.
Do vektoroj estas esence 1 dimensia tabeloj.
Ili estas kion ni nomas arrays en C. Matricoj, 2 dimensia tabeloj.
Kaj tiam pli altaj dimensia arrays vi povas
havas 3, 4, 5 dimensioj aŭ kio ajn de nombraj valoroj, de kordoj,
de logikaj valoroj.
>> Vi ankaŭ havas listojn kiuj estas speco de asocieca tabelo.
Mi ricevos en tiun iom.
Do unu grava afero ke malhelpas homojn en R
estas ke ekzistas neniuj reala, pura atomaj specoj.
Mankas efektiva distingo inter kelkaj, kiel nombra valoro,
kaj listo de nombraj valoroj.
Numeraj valoroj estas fakte la sama kiel la vektoroj de longo 1.
Kaj ĉi havas kelkajn gravaj implicoj.
Unu, ĝi signifas ke vi povas fari aferojn tre facile ke engaĝi
kiel aldoni kelkajn al vektoro.
R estos esence figuro kion vi celas diri per tio.
Kaj mi atingos tion en dua.
Ĝi ankaŭ signifas ke ekzistas neniu maniero por la tipo checker-- al la mezuro
ke io simila Ekzistas en R-- diri
kiam vi pasis en la sola valoro kiam atendas tabelo aŭ inverse.
Kaj kiu povas kaŭzi iun nepara problemoj kiujn mi renkontis kiam
Mi uzis R dum mia somera laborposteno.
Kaj ne estas miksita tipo tabeloj.
Do vi ne povas havi tabelo estis la unuaj eroj estas, mi ne scias,
la ĉeno "John" kaj la dua elemento estas nombro 42.
Se vi provas fari tion, tiam vi ricevos ĉio ĝuste konvertita al ĉeno.
Do ni havas ĉenon John, kordoj 42.
>> Do nekutimaj sintaksaj features-- plej de R sintakso estas tre simila al C.
Ekzistas kelkaj gravaj diferencoj.
Tajpado estas tre malforta.
Do estas neniu variablo deklaroj.
Tasko uzas la stranga eraro operatoro malpli ol streketo.
Komentoj estas kun la hash markon.
Mi supozas nun tagoj ni nomas ĝin hashtag kvankam tio ne estas vere accurate-- ne
la duobla oblikvo.
>> Modulaj restaĵoj estas kun %% signoj.
Entjera divido estas kun% /% kiu estas tre malfacile legi kiam ĝi estas projektita
supre sur la ekrano.
Vi povas akiri rangojn de entjeroj kun la dupunkto.
Do 2.5 donos vin vektoro de ĉiuj numeroj 2 tra 5.
>> Arrays estas unu-indeksita, kiu ŝraŭboj multaj homoj
supren se ili estas de pli tipa programlingvoj,
kiel C, kie plej aferoj estas nulo-indeksitaj.
Denove, tio estas kie R herede kiel lingvo por kiel ne
profesia programistoj envenas.
Se vi estas sociologo aŭ ekonomikisto aŭ io
kaj vi provas uzi R esence kiel kuna
al viaj pli gravaj profesia laboro,
vi tuj trovos unu-indicigo iom pli natura.
Ĉar vi komencas rakonti ĉe 1 en ĉiutaga vivo, ne 0.
>> Por-cikloj, tio estas simila al la foreach konstrui en PHP,
kion vi atingos lernu in-- baldaŭ.
Kiu estas por valoro en vektoro kaj tiam vi povas fari aferojn kun valoro.
Publiko: jen supreniru prelego.
Connor HARRIS: Ho, tio estas supreniru prelego, bonega.
Publiko: La asigno, ĉu supozis atentigi de dekstre maldekstren?
Connor HARRIS: De dekstra al maldekstra, jes.
Vi povas pensi pri tio kiel la valoro sur dekstre enŝovis en la variablo
maldekstre.
Publiko: OK.
>> Connor HARRIS: Kaj fine funkcio sintakso estas iom stranga.
Vi havas la funkcion nomo umo, atribuita al tiu ŝlosilvorto funkcio, sekvis
de ĉiuj argumentoj kaj tiam la korpo de la funkcio post tio.
Denove tio povas ŝajnas iom stranga.
Ili fariĝos dua naturo post vi laboras kun la lingvo por iom.
Do vektoroj, la vojo vi konstrui vektoraj
Estas vi tipo C, kiu estas ŝlosilvorto, tiam ĉiujn numerojn vi volas aŭ ŝnuretoj
aŭ kio ajn.
Argumentoj ankaŭ esti vektoroj.
Sed la rezulta tabelo gets platigitaj.
Do vi ne povas havi arrays kie iuj elementoj estas ununura nombroj
kaj iuj elementoj estas arrays sin.
>> Do se vi provas konstrui tabelo estis la unua elemento estas 4
kaj la dua elemento estas la tabelo 3.5 vi
nur akiri tri elementoj tabelo, 4,3,5.
Ili ne povas esti de miksita tipo.
Se vi provas legi aŭ skribi ekster la saltegoj de vektoro
vi ricevos tiun valoron nomata NA a kiu staras por mankanta valoro.
Kaj tiu estas destinita por kiel statistikistoj kiuj
laboras kun nekompletaj datumoj aroj.
>> Se vi apliki funkcio ke tio devus preni nur unu numeron por tabelo
tiam kion vi ricevos estas, la funkcio estos mapo super la tabelo.
Do se via funkcio diru prenas numero kaj revenas ĝi kvadrato.
Vi apliki tiun al la tabelo 2,3,5 Kion vi akiros estas la tabelo 4,9,25.
>> Kaj tio estas tre utila ĉar ĝi signifas vin
ne devas skribi por bukloj por faras tre simplajn aĵojn kiel aplikanta
funkcio al ĉiuj membroj de datuma aro.
Kiu se vi laboras kun grandaj datenaroj, vi devas fari multe.
Duuma funkcioj estas Aplikata eniro de eniro.
Mi ricevos en tiun.
Vi povas aliri ilin per tabeloj aŭ vektoroj kun kvadrataj krampoj.
Do vektora nomo kvadrataj krampoj 1 donos al vi la unuan elementon.
Vektoraj nomo kvadrataj krampoj 2 donos al vi la duan elementon.
>> Vi povas pasi sur vektora de indeksoj kaj vi
reiri el esence sub faktoro.
Do vi povas fari vektora nomo krampoj C, 2.4 kaj vi ricevos el vektoro enhavanta
la dua kaj kvara elementoj de la tabelo.
Kaj se vi volas nur rapidan resumon statistiko
de vektoro kiel interquartile gamo, meza, maksimuma, kion ajn,
vi povas simple tajpi resumo vektora nomo kaj akiri tion diveni.
Tio ne vere utila en Programado sed se vi ludas
ĉirkaŭ la datenaroj, estas oportuna.
>> Matrices-- esence alta dimensia tabeloj.
Ili havas tiun specialan notacion sintakso.
Matrico kun tabelo kiu alvenas plenigis in-- bedaŭras, matrico kun datumoj,
numeron de vicoj, nombro de kolumnoj.
Kiam vi havas iujn datumojn, ĝi plenigas en la tabelo esence tuj supre sube
unua.
Tiam maldekstre dekstren.
Do, kiel tio.
Kaj R konstruigis en matrico multiplikoj,
spektra malkomponaĵo, diagonaliga, multaj aferoj.
Se vi volas pli altan dimensian arrays, do 3, 4, 5,
aŭ kion ajn dimensioj povas fari tion.
La sintakso estas tabelo nebrila egalas c, la listo de la dimensioj.
Do se vi volas 4 dimensia tabelo kun dimensioj 4, 7, 8, 9, la tabelo,
nebrila egalas c (4,7,8,9).
>> Vi aliras ununuran valoroj kun krampoj unua eniro komo dua eniro.
Vi povas akiri tutan tranĉaĵoj de vicoj aŭ kolumnoj.
Kun ĉi nekompleta sintakso estas nur remi nombro komo aŭ komo kolumno
numeron.
Do listoj estas speco de rilata tabelo.
Ili havas ilian propran sintakson tie.
Denove ne freneze kopii ĉiujn ĉi malsupren.
Tiu estas nur por ke homoj irante tra la diapozitivoj poste
havas ĉi ĉio en belan referenco.
Kaj tiu fariĝos tre natura kiam Mi efektive iradas tra la demonstraĵoj.
Do listigas esence asociita tabeloj.
Vi povas aliri valoroj kun lerta nomo, dolaro signo, ŝlosilo.
Do se via listo estas nomita foo, tiam vi povas aliri ĝin kiel tio.
Vi povas akiri tutan ŝlosilo-valoro paro pasante en la kvadrata krampo indekso.
Se vi legas el neekzistanta klavo, vi ricevos nula.
Ĝi ne eraro.
Afero estas, R obeos multe kun nula kiel ĝi povas.
Kaj tio povas signifi ke se vi estas ne atendis por ricevi nula eksteren
de iu lerta legita, vi ricevos iun neantaŭvidebla eraroj cetere malsupren
la linion.
>> Tio okazis al mi mian somera laborposteno kiam mi uzis R
Kie mi ŝanĝis kiom certa listo difinis en unu loko
sed ne ŝanĝis poste sur la kodo kiu legis valoroj de ĝi.
Kaj sekve kio okazis estis mi legante nulaj valoroj el tiu listo,
pasante ilin en funkcioj, kaj estante tre konfuzita
kiam mi alvenis ĉiaj hazarda multegoj tondadon supren
en tiu funkcio.
Ĉar se vi aplikas certa maksimumo aŭ minimumo funkcioj al nula,
vi ricevos senfinaj valoroj eksteren.
>> Datumoj kadroj, ili estas subklaso de listo.
Ĉiu valoro estas vektoro de la sama longo.
Kaj ili estas uzataj por prezenti, esence, datumoj tabloj.
Estas ĉi inicialización sintakso.
Tio ĉio, denove, multe pli klara kiam vi atingos la demo.
Kaj la bela afero pri datumoj kadroj estas ke vi
povas doni nomojn al ĉiuj kolumnoj kaj nomoj por ĉiuj vicoj.
Kaj tial faras aliranta ilin iom pli amikaj.
Ankaŭ jen kiel plej funkcioj kiuj legi en datumoj de Excel Spreadsheets
aŭ el tekstaj dosieroj, ekzemple, legos en siaj datumoj.
Ili metos ĝin ia datumoj kadro.
Do functions-- la funkcioj sintakso estas iom stranga.
Denove ĝi estas la nomo de la funkcio, asigni, ĉi ŝlosilvorto funkcio kaj tiam
la listo de argumentoj.
Do tie estas kelkaj belaj aferoj pri kiel funkcioj labori tie.
Por unu, vi povas efektive asigni defaŭlta valoroj por certaj argumentoj.
Do vi povas diri R1 equals-- vi povas diri foo
estas funkcio kie R1 egalas ion defaŭlte se la uzanto specifas
sen argumentoj.
Alie, ĝi estas kion li metis en.
Kaj tiu estas tre oportuna ĉar multe de niaj funkcioj
havas ofte dekoj aŭ centojn da argumentoj.
Ekzemple la bonaj por komplotanta grafeoj aŭ komplotanta disjxetu intrigoj
havas argumentojn kiuj kontrolas ĉion de la titolo kaj la akso
etiketojn al la koloro de malprogreso linioj.
Kaj do se vi ne volas fari homojn specifi
ĉiu ununura unu el tiuj centojn da argumentoj
kontrolanta ĉiu unuopa aspekto de komploto aŭ malprogresa aŭ kio ajn,
ĝi estas bela havi ĉi tiujn defaŭlta valoroj.
>> Kaj tiam vi povas reale skribi kiel vi vidis reen tie.
Aŭ trovi pli bonan ekzemplon.
Kiam vi nomas funkcioj vi povas reale nomu ilin uzante la argumenton nomoj.
Do jen ekzemplo de la matrico konstruilo.
Ĝi prenas tri argumentojn.
Kutime vi havas datumojn, kiu estas vektoro.
Vi havas N vico, kiu estas la nombro de vicoj.
Vi havas N cols-- nombron da kolumnoj.
La afero estas se vi tajpas N vico egalas ajn
kaj N col egalas ajn kiam vi vokas tiun funkcion,
vi efektive povas inversigi ilin.
Do vi povas meti N col unua kaj N vico dua kaj gxi ne faros diferencon.
Do jen belan karakterizaĵo.
>> Ĉu importado kaj eksportado.
Tio povas esti farita, esence.
Ekzistas ankaŭ instalaĵoj por skribi eksteren arbitra R celoj al duuma dosiero
kaj tiam legi ilin reen en postaj.
Kiu estas oportuna se vi faras granda interaktiva sesio R
Kaj vi devas savi aferoj tre rapide.
Defaŭlte R havas funkciantan dosierujo ke dosieroj akiri elskribita en
kaj legita reen en de.
Vi povas vidi ke kun getwg, ŝanĝu ĝin per setdw.
Nenio speciale interesa tie
>> Do nun la efektiva statistiko stuff-- plurlineara malprogreso.
Do la kutima sintakso estas iom komplikita.
La modelo estas granda objekto esence.
Gets atribuita al LM, kiu estas funkcio alvokon.
La unua elemento, la y supersigno x1 plus ajn.
Mia sintakso tie estas iom konfuza.
Mi tute bedaŭras, ĉi estas la norma maniero
ke komputiko libroj fari tion.
Sed estas iom stranga.
>> Do resume, estas lm krampoj, unua listero
estas variable-- bedaŭras, dependa ŝanĝiĝema supersigno x1 plus x2 plus
tamen multaj sendependaj variabloj vi havas.
Kaj tiam tiuj povas ĉu esti vektoroj, ĉiuj samlongaj.
Aŭ ili povas esti kolumno titolaj en datumoj kadro
ke vi simple entajpi en la dua argumento datumoj kadro.
>> Vi povas ankaŭ specifi sed kompleksa formulo
tial vi ne devas lineare malprogresas unu dependa variablo,
aŭ unu vektoro sur preexistentes vektoro.
Vi povas fari, ekzemple, vektora komponanto y kvadratoj plus 1
kaj malprogresas ke kontraŭ la log de iu alia vektoro.
Vi povas presi resumoj de la modelo per tiu komando nomis
summary-- nur resumo parens modelo.
Denove io alia mi devus klarigi.
Io alia ke estos get korektitaj kiam la diapozitivoj iros sur la interreto.
Se vi nur volas kalkuli simpla korelacio
vi povas uzi korelacio vektoro 1 vektoro 2 funkcio kerno.
Metodo estas defaŭlte Pearson korelacioj.
Tiuj estas la kutimajn vi povas fari.
Ekzistas ankaŭ Spearman kaj Kendell correlaciones
kiuj estas kelkaj diversaj rango ordon correlación.
Nu ne kalkuli produkto momentoj inter la vektoroj mem,
sed de la vektoraj rangon ordonoj.
Mi klarigos ke poste.
>> Publiko: Rapida demando
>> CONNER HARRIS: Certe.
>> Publiko: Do ​​kiam vi kalkulanta por la simpla correlaciones fari
vi supozas ke estas statistika signifon al la korelacio?
CONNER HARRIS: Vi ne devas.
An lm estas esence nur maŝino.
Ĝi prenos en du aferoj kaj ĝi kraĉis
koeficientoj por la bona adapti linio.
Ĝi ankaŭ informas normo eraroj sur tiuj koeficientoj.
Kaj rakontos al vi, kiel estas la detranĉo statistike signifa
aŭ diferenco de 0.
Estas la deklivo de la plej bona tauxgas linio statistike
malsama de nulo, kaj tiel plu.
Do ĝi supozas nenion, mi pensas estas bona respondo al via demando.
BONE.
>> Plotting-- do la ĉefa kialo vi devus uzi R, kiel plurlineara malprogreso.
Esence ĉiu lingvo havas iujn facilecon por tio.
Kaj honeste R sintakson por malprogreso estas iom arkaikaj.
Sed grafike prezentanta estas kie vere brilas.
>> La laborĉevalo funkcio estas komploto kaj ĝi prenas du vektoroj x kaj y.
Kaj tiam la elipsoj staras por tre Granda nombro de laŭvola argumentoj ke
kontrolas ĉion de titoloj al koloroj de diversaj linioj aŭ diversaj punktoj,
al la tipo de intrigo.
Vi povas havi disjxetu intrigoj aŭ linio intrigoj.
>> [Inaudible] 2 vektoroj de la sama longo.
Vi povas antaŭi ĉi kun alfiksi datumo kadro en via skripto.
Kaj ĉi lasos vin nur uzi kolumno titolaj anstataŭ apartaj vektoroj.
Vi povas aldoni bona adapti linioj kaj lokaj malprogreso kurboj al via grafeo.
>> Tiuj komandoj listigitaj tie, ab linio kaj linioj,
defaŭlte tiujn akiri skribita en popmuziko supren fenestroj
ĉar ĝi supozas ke vi uzas R interage.
Se vi ne estas vi povas skribi du dosieroj
estas en vere ajna formato vi ŝatus.
Pardonu, mi havas tajperaro mi ĵus rimarkis.
Se vi volas malfermi alia grafika aparato
vi povas uzi tiun funkcion nomita PNG JPEG aŭ multajn aliajn formatojn de bildo.
Kaj vi povas skribi al grafikaĵoj ajn dosiernomo vi specifas.
Nuligi ke vi devas use-- Mi ne skribis tion en la slide--
Sed tie estas funkcio nomita dev skalara off kiu prenas neniun argumenton.
>> Tiam estas instalaĵoj por 3D konspiroj
kaj por konturo komplotanta se vi volas fari
grafeoj de du sendependaj variabloj.
Mi ne eniros en tiuj nun.
>> Ekzistas ankaŭ iuj instalaĵoj por kuraĝigo
tiuj estas kutime subtenita de triaj.
Mi faris kuraĝigoj kun R grafeoj, sed mi ne uzis tiujn tria
bibliotekoj.
Do mi ne povas vere atesti al kiom bone ili estas.
Kion mi rekomendas se vi volas fari kuraĝigojn uzante R
estas vi povas skribi ĉiujn el la tabulojn por la kuraĝigoj
kaj tiam vi povas uzi tria program--
tipaj estas nomitaj FFmpeg aŭ ImageMagick-- stebi
ĉiuj viajn kadrojn en unu kuraĝigo.
>> Do tempo por demo.
Do se vi uzas ajnan Unikso kiel sistemo kio estas Linukso BSD sed kiuj uzas BSD.
OS X malfermi fina fenestro kaj tajpu R je la komando prompto.
Se vi havas R studo aŭ simile, kiu ankaŭ funkcias.
Por la uzantoj de Windows vi devas esti kapabla trovi R en via komenca menuo.
Ĝi devus nomi ion kiel R x64 3 punkto ajn.
Malfermu ke tie supre.
>> Do nun mi nur malfermi fina fenestro.
Bone, serĉo.
Publiko: Komando-Spaco
CONNER HARRIS: Komando-Spaco, dankon.
Mi ne ordinare uzas Macs.
Terminalo, montri nova fenestro.
Nova fenestro estas agordojn baza, R. Do vi devus akiri
bonvenan mesaĝon, io tiamaniere.
>> Do mi uzas R interage.
Vi povas ankaŭ skribi R skriptoj kompreneble.
Esence skriptoj kuri la ĝusta sama maniero kiel
se vi sidus ĉe la komputilo tajpado en ĉiu linio unuope.
Do ni komencu per fari vektoro.
A sago C 1, 2.
1, 2, 4.
OK, certas.
Mi povas fari la tiparo grandeco pli granda.
>> Publiko: Komando-Plus
>> CONNER HARRIS: Komando-Plus.
Komando-Plus.
Bone, kiel estas tiu?
Bona?
BONE.
Do ni komencu per deklarante vektora listo.
Fari, sago, C 1,2,4.
Ni povas vidi.
Ne maltrankviliĝu pri la krampo tie.
La krampoj estas do se vi presi tre longaj tabeloj, ni povas tie ĉi.
Unu ekzemplo estus se mi Nur volas gamo 2 al 200.
Se mi presas tre longa tabelo, la krampoj
jxus kaj mi povas resti trako de kio indekso
ni estas sur se Mi serĉas tra ĉi vide.
Do ĉiuokaze, ni havas.
>> Do mi diris antaŭe ke arrays interagi tre bele kun, ekzemple,
unuloka operacioj ŝatas tion.
Do kion vi pensas Mi timige akiri ĉu mi tajpos plus 1?
Yep.
Bone, nun mi faros tiu malsamaj tabelo.
Diru bc 20,40, 80.
Do kion vi pensas tiu komando faros?
Aldoni la elementoj.
Kaj tial esence, tio estas kion ĝi faras.
Do tiu estas sufiĉe oportuna.
Do mi kion pri mi tion faras. c estas, ni diru, 6 fojojn 1 al 10.
Do kion mi volas vidi enhavis, vi pensas?
Do ĉiuj obloj de ses.
Nu, kion vi pensas okazos se mi faras tion?
Mi faros ĉi iom pli klara, c, c.
Do kio okazas, do vi pensas, se mi faras tion?
alpago c.
[Inaudible]
>> Spektantaro: Ajna eraro aŭ ĝi nur aldonas la unuaj tri elementoj.
>> CONNER HARRIS: Ne tute.
Jen kion ni akiris.
Kio okazas estas pli mallonga tabelo, a, got biciklis.
Do ni akiris 124, 124, 124.
Yeah.
Kaj esence tio videblas tiu konduto antaŭe, plus 1,
kiel subklaso de tiu konduto, kie la plej mallonga tabelo estas nur la nombro
1, kiu estas unu elemento tabelo.
Mi nur esti dirante vektora ĉiuj la tempo anstataŭ tabelo,
ĉar tio estas kion la r dokumentado kutime faras.
Ĝi estas ekradikita c kutimon.
>> OK, kaj do nun ni havas ĉi tabelo.
Do ni havas ĉi tabelo, c.
Ni povas ricevi resumo statistikojn pri c, resumon ĉ.
Kaj tio estas bela.
Do nun ni faru iu matrico aferojn.
Diru m estas matrico.
Ni faras ĝin tri por tri unu.
Do nrows egalas 3, kaj ncols egalas 3.
Kaj por datumoj ni do-- do kion vi pensas ĉi tiu tuj faros?
>> Bone, ĝi estas la venonta unu.
Estas nrow kaj ncolumn.
Do kion mi faris estas mi havas deklarita tri por tri matrico
kaj mi pasis en naŭ-era tabelo.
Do la logaritmo de ĉiuj elementoj unu tra naŭ.
Kaj ĉiuj tiuj valoroj plenigi ĝis la tabelo bedaŭras?
Publiko: Tiuj estas bazo 10 protokolojn?
CONNER HARRIS: Ne, trabo naturaj logaritmoj, do bazo e.
Jes, se vi volis bazo 10 Protokolo, mi opinias ke vi devus
ensaluti ajn, dividita per log 10.
Kaj tial la datumoj de la [inaudible] simple plenigita la tabelo, tiel supre sube,
tiam maldekstre dekstren.
Kaj se vi volas fari iuj aliaj tabelo, diru n estas matrico.
Ni faru, mi ne scias, de 2 al 13.
Aŭ mi faros ion pli interesa.
Mi faros 2 al 4.
nrow egalas, ni diru, 3.
ncol egalas 4.
n.
Do ni havas ĉi.
>> Kaj nun se ni volas multipliki tiuj, ni farus n procentoj fojojn procentoj,
ĉar tio estas n.
Kaj ni havas matrico produktoj.
Per ili vojon, ĉu vi vidas, kiel kiam mi deklaris n, la 2 al 4
vektora got biciklis ĝis ĝi plenigis CXiujn n?
Se vi volas preni ajgeno malkomponaĵo,
ĉi estas io ni povas fari tre facile.
Ni povas fari eigen n.
Kaj tiel tio estas nia unua renkontas kun listo.
>> Do eigen n estas listo kun du klavoj.
Valoroj, kiuj estas ĉi tie tabelo.
Kaj vektoroj, kiu estas tiu tabelo tie.
Do se vi volis ĉerpi, diru, tiu tria kolumno
el la ajgenvektoroj matrico, ĉar la ajgenvektoroj estas kolumnaj vektoroj.
Do ni povas fari vec eigen n dolaro signo vektoroj, komo 3, de [inaudible].
Vec.
Estas tio, kiel vi povus atendi.
>> Tiam diru n fojoj procento fojojn vec.
Do la rezulto ĉi tie certe aspektas kiel se ni prenis la trian ajgeno tie,
kiu korespondas kun la tria ajgenvektoro.
Ĝi ĵus multiplikita ĉio en tiu ajgenvektoro, komponento-saĝa,
per la ajgeno.
Kaj tio estas kion ni atendus, ĉar jen kio ajgenoj estas.
Cxu iu tie ne prenita lineara algebro?
Paro homoj, OK.
Nur turni vian cerbon for por iom.
Kaj efektive, se ni prenas eigen n dolara signo valoroj 3 fojojn vec,
bone atingi la samon.
Ĝi estas formatita malsame kiel vico vektora anstataŭ kolumna vektoro,
sed granda interkonsento.
Kaj tial tiuj estas esence la belan kion ni povas fari kun matricoj,
pruvis listoj.
Mi devus pruvi la belan aferojn pri funkcioj ankaŭ.
>> Do ni say-- [inaudible] funkcio, ni nomas
ĝi func kontraŭ funkcio n n squared-- fakte, tio ne vere la plej bona.
a, b, akordita plus b.
Do unu afero pri funkcioj, denove, estas ili
ne bezonas eksplicitan reveno deklaroj.
Do vi povas just-- la lasta komunikaĵo evaluated
Estos la deklaro rehejmigxis aŭ la valoro reveninta.
Do en ĉi tiu kazo, ni nur pritaksanta unu komunikaĵo, akordita plus b.
Tio estos la defaŭlta reveno valoro.
Ĝi neniam doloras meti en reveni valoroj eksplicite,
speciale se vi kontraktanta kun funkcio de tre komplikaj logiko
flui.
Sed vi ne bezonas ilin.
Do nun ni povas fari func 5, 1, kaj tio estas esence kion vi atendus.
Io alia estas farebla, ni povas reale fari func b
egalas 1, a egalas 5.
Do se ni specifas kiun numero ĉi tie, kiu argumento iras al kiu argumento
en funkcio, oni povas klaki ĉirkaŭ tiuj valoroj kie ajn ni volas.
>> Spektantaro: Ĉu ekzistas kialo skribi ĝin kun la b
egalas kontraste al simple uzante la numerojn kaj la komo?
CONNER HARRIS: Jes, kutime fari tion se vi havas funkcioj
kun multaj argumentoj.
Tio povus ofte esti kiel flagoj kiu vi volas nur
volas uzi en maloftaj okazoj.
Kaj tiamaniere vi povas only-- vi povas rilati al la specifa argumentoj
ke vi volas uzi ne-defaŭlta valoroj por,
kaj vi ne devas skribi eksteren faskon de flagoj egalas malvera post ili.
Aŭ mi povas skribi ĉi denove kun defaŭlta valoro kiel b egalas 2.
Kaj tiam mi povus fari f func, Mi faros 4, 1 tiu tempo.
Kaj 17, kiu estas 4 kvadratoj plus 1, kiel vi eble atendus.
>> Sed mi povis ankaŭ nur nomas tiun kun func 4,
kaj mi ricevos 18, ĉar Mi ne specifas b.
Do b ricevas la defaŭlta valoro de 2.
>> Bone, do nun se vi estas sekvante kune kun la demo,
tajpi ĉi linio je via komando suflori kaj vidi kion venas supre.
Efektive, ne faru tion.
Tajpi ĉi.
Vi devus akiri io tiamaniere.
Do mtcars estas enkonstruita en datumoj metita por tiu pruvo
celoj kiuj venas with-- kiu venas en defaŭlte kun via r dissendo.
Jen kompilaĵo de statistikoj de 1974 temo de Motoro Trend revuo
sur nombro de malsamaj aŭto modeloj.
>> Do ekzistas mejloj por galono, cylinders-- Mi forgesos, kion Disp is-- ĉevaloj.
Probable.
Se vi simple Google MT aŭtoj, tiam unu el la unuaj rezultoj
estos el la oficiala r dokumentado
kaj gxi klarigos ĉiuj tiuj datumoj kampoj.
Do pezo is-- WT estas pezo de la aŭto en tunoj.
Q sek estas la kvara de mejlo tempo.
Do nun ni povas fari iuj amuzaj aferoj pri MT aŭtoj estas datumo kampo.
>> Do ni povas fari aferojn kiel vico nomoj, mt aŭtojn.
Kaj tiu estas listo de ĉiuj vicoj en la datuma aro kiu estas nomoj de aŭtoj.
Ni povas fari colnames, mt aŭtojn ĉi.
Se vi faras mt aŭtoj, sub-nombra indekso, kiel 2.
ni preni la duan kolumnon el tiu, kiun estus cilindroj.
>> Publiko: Kion vi faris?
>> CONNER HARRIS: mi tajpis mt aŭtojn, krampoj e,
kiu donis al mi la dua kolumnon el mt aŭtojn.
Aŭ se ni volas vico, mi povas tajpi mtcars komo 2, ekzemple.
Aliaj ronda 2 komo, kiel tiu.
Kaj kiu iras en via vico.
Ĉi tie nur donas vin kolumno, sed kolumno kiel vektora.
Mi nur rimarkis nun mi forgesis pruvi
iu malvarmeta aĵoj pri vektoroj ke vi povas fari kun indeksoj.
Do mi faru tion ĝuste nun.
Do ni faru c gets-- metante tio sur pause-- 2 fojoj 1 al 10.
Do c estas ĝuste tuj estos la vektoro 2 tra 20.
Mi povas preni elementojn tiel, c2.
Mi povas pasi en vektora kiel tiu, c-- lasu min
uzi malsaman nomon ol c, kiel vec c.
Esence, mi faras ĉi tiel vi ne ricevas
konfuzita inter c kiel vektora konstruo funkcio,
kaj tiam c kiel variablo nomo.
Vec krampoj c 4, 5, 7.
Ĉi ricevos min el la kvara, kvina, kaj sep elementoj de la tabelo.
Mi povas fari vec, metu en negativa indekso, kiel negativa 4.
Kiu akiros min el tiu kun la kvara ero forigita.
Se mi volas fari tranĉaĵojn, Mi povas fari vec 2 tra 6.
2 dupunkto 6 estas nur alia vektoro, kiu estas 2, 3, 4, 5, 6.
Kraĉas el tio.
>> Do ĉiuokaze, reen al mt aŭtojn.
Do ni faru iun regresiones.
Diru modelo gets-- ni lineare regress-- Mi ne scias.
Unue ni faru alfiksi mtcars, kompreneble.
Do [inaudible] modelo lm, ni malprogresas mejloj por galono sur supersigno pezo.
Kaj tiam datumoj kadro estas mtcars.
Do resumo modelo.
>> Bone, do tio aspektas iom komplika.
Sed esence, vidante kiel se ni provu esprimi mejloj por galono
kiel lineara funkcio de pezo, tiam ni akiris ĉi tiu linio tie,
kiu interkaptas ĉe 37,28.
37,28 estus la teoria mejloj por galono de aŭto kiu pesas nulo.
Kaj tiam por ĉiu aldona tuno, vi frapi kvin mejloj por galono
for de tio.
Ambaŭ tiuj koeficientoj vi povas vidi, normaj eraroj tie.
Ili estas tre statistike signifa.
>> Do ni povas esti tre certa al 1 e 10 al la negativa 10.
Do 1 fojojn ion al la negativa 10, ke se vi faros pli pezan aŭton,
ĝi havos pli malbona mejloj por galono.
Aŭ ni povas provi alian modelon.
Kiel anstataŭ regressing ĉi sur pezo,
ni malprogresas ĝin sur ŝtipo de pezo, ĉar eble la efektivaj pezo
sur mejlaĵo estas iel ne lineara.
>> Tio donis al ni r akorditaj de 0,7528.
Do ni provu tion.
Ĉi tiu fojo ni fari malsamaj varia ankaŭ.
Model2.
Do resumo, model2.
Bone, do denove, ni havas nian bona adapti linio tie.
Kaj ĉi time-- tiu diras, esence ke ĉiufoje kiam vi
pliigi la pezon de aŭto per faktoro de e
vi perdas ĉi multaj mejloj por galono.
>> Kaj tiel ĉi tiu tempo nia postrestanta normo eraro it-- ke ne gravas, vere.
La postrestanta norma eraro estas esence nur la norma eraro
ke vi lasis post vi forpreni la tendenco linio.
Kaj nia r kvadrato tie estas 0.81, kio estas iom pli bona ol kio
ni havis antaŭe, 0.52.
>> Kaj do nun ni aldonu terminon por ĉi malprogreso.
Do ni malprogresas mejloj por galono ambaŭ sur la ŝtipo de la pezoj
kaj, ni faru, q mejloj, kvaronmejlo tempo.
OK, ĝi devas havi the-- bonege qsec.
Qsec.
Actually-- bedaŭras, kio?
Lasu min nomas ion alia krom model2.
Lasu min nomas tiun model3.
Kaj tial nun ni povas fari resumon model3.
Kaj tial denove, ĉi tiu estas esence kion vi povus atendi.
Vi havas pozitivan detranĉo.
La efika kreskanta pezo estas negativa.
Kaj la efektiva kreskanta kvaronmejlo tempo
estas pozitiva, sed kvankam malpli ol pezo.
Nun intuicie, vi povas fari senton de ĉi de diranta pensas pri sportoj aŭtojn.
Estas tre rapida akcelo, tre mallonga kvaronmejlo fojojn.
Ili ankaŭ uzos pli gaso, dum pli saĝa aŭtoj estas irantaj
havi pli malrapida akcelo, maksimuma kvaronmejlo fojojn,
kaj uzos malpli gason ,, do maksimuma mejloj por galono.
Granda.
Kaj do nun estas tempo komploti io tiamaniere.
Do ni do-- tiel nudaj ostoj ni povas fari plots--
ĉar mi alkroĉita tiu datumo kadro before-- ni povas simple fari intrigoj, WT mpg.
Faru ĉi iom pli granda.
Tie, ni esence havas disjxetu intrigo, sed la punktoj
estas speco de malfacile vidi en ĉi tio.
>> Mi ne memoras parolis improvize kion la sintakso estas por ŝanĝi la intrigon.
Do mi supozas tio estos bona okazo alkondukis,
Tie estas tre bela builtin helpo trajto, helpo citaĵoj funkcii nomo.
Ni elvoku esence ajn vi ŝatus.
Mi pentros reale fari ĉi tipo egalas p por punktoj intrigoj.
Ĉu tio ŝanĝas ion?
Kaj ne, ne vere.
Bone.
>> Ial, kiam mi faris tiun sur mia propra komputilo faras momenton,
ĉiuj disjxetu punktoj estis multe pli klara.
Cxiukaze, estas la disjxetu ia videbla?
Ekzistas unu tie.
Kelkaj tie, kelkaj tie.
Vi povas ordigi de vidi ilin, ĉu ne?
Do se ni volas aldoni bona adapti linio al tiu intrigo tie, kio estas iom nuda
bones-- lasu min fari ĝin iom pli bela.
Ĉefa egalas kontre pezo.
Mejloj por galono.
Denove, vi povas vidi kiel utila laŭvolaj argumentoj estas tie kun ankaŭ
ne devi meti aferojn en certa ordo kun klavaro argumentoj
kiam vi havas intrigojn, ĉar tiuj prenas multajn argumentojn.
>> Xlab egalas pezon, pezon, tunoj.
Bone.
OK, jes, tiu aparato estas esti iom ĝena.
Sed vi povas vidi specon de supre tie, ekzistas grafeo titolo sur la flanko.
Super tie there's-- sur la fundo tie ekzistas akso etiketoj.
Mi ne memoras parolis improvize kion la komandojn ars--
kio la funkcioj estas pliigi la grandeco de tiuj etiketoj kaj titoloj,
sed ili estas tie.
>> Kaj do se ni volas aldonu la bona adapti linio,
ni povus fari ion kiel mi havas la sintakson redaktita tie.
Do memoru ni simple aldonu modelo Estis mpg, pezo, mtcars.
Kaj do, se mi volus aldoni bona adapti linio, mi povus fari, b linio modelo.
Kaj eksplodo, ni havas bona adapti linio.
Estas ia malfacile vidi denove.
Mi estas tute bedaŭras pri la teknologiaj malfacilaĵoj.
Sed ĝi kuras resume supre maldekstre malsupren dekstren.
>> Kaj se la skalo estis pli granda, vi povus vidi
ke la detranĉo estas kion vi povas trovi el la resuma statistiko
se vi tajpas resumo modelo.
Bone, do mi esperas ĉiuj ricevas iom da senso de kio
R estas, kio ĝi estas bona por.
Vi povus fari multe pli agrabla ol intrigoj tion en via propra tempo, se vi volas.
>> Do la eksterlandaj funkcio interfaco.
Tiu estas iu kiu ne estas tipe kovrita en enkondukaj prelegoj
aŭ enkonduka ion por r.
Ĝi ne estas verŝajna vi tuj bezonas ĝin.
Tamen, mi trovis ĝin utila en miaj propraj projektoj en la pasinteco.
Kaj ne estas bona lernilo por gxin rete.
Do mi simple tuj rapidi vi ĉiuj per tiu
kaj tiam vi libere foriri.
Kaj do la fremdajn funkcio interfaco estas kio
vi povas uzi voki vidi funkcioj kun R. Interne,
R estas konstruita sur C. R aritmetiko estas nur C la 64-bita flosanta punkta aritmetiko,
kio tajpu duoblan [inaudible].
Kaj vi volus fari ĉi por aro da kialoj.
Por unu, R estas interpretita, estas Ne kompilita malsupren al maŝino kodo.
Do vi povas reskribi vian ena maŝojn en C kaj tiam akiri
la avantaĝon de uzi R. Kiel ĝi estas iom pli konvena ol C.
Ĝi havas bona grafikaj instaladoj kaj whatnot.
Kaj ŝirmataj povante alveni maksimuma rapido el la interna masxojn,
kio estas kie vi ne bezonas ĝin.
>> Reuzo ekzistanta C bibliotekoj, jen ankaŭ grava.
Se vi havas kelkajn C biblioteko por kiel, Mi ne scias, Fourier transformas,
aŭ iuj tre Archean statistikoj proceduro uzita
en alta energio astrofiziko aŭ ion, mi ne scias.
Alta energio astrofiziko ne eĉ pensas, mi kredas.
Sed vi povas fari tion anstataŭ havi skribi denaska R haveno de ili.
Kaj sur the-- kaj denove, kiel se rigardi en plejparto de R defaŭlta bibliotekoj,
sur la internals, la internals estas tuj uzi la fremdajn funkcio
interagadi tre amplekse.
Oni devos aĵojn kiel Fourier transformas aŭ komputanta korelacio
koeficientoj skribita en C, kaj ili instruos vin nur havi R envolvaĵoj ĉirkaŭ ili.
La interfaco estas iom malfacila. mi pensas
lia malfacilaĵo estas troigita en Multa la instrukciojn vi trovos.
Sed tamen, ĝi estas iom konfuza.
Kaj mi ne povis trovi bonan lernilon por ĝi,
do jen ĝi nun.
Denove, tiu tuta segmento Estas pli por poste referenco.
Ne maltrankviliĝu pri kopiado ĉio malsupren ĝuste nun.
Do la jenaj instrukcioj estas por Unikso-similaj sistemoj,
Linukso, BSD, OS X. Mi ne scias kiel tio funkcias en Windows,
sed bonvolu simple ne faru vian fina projekto sur Vindozo.
Vi vere ne volas.
Unikso estas multe pli bona aro ĉe hazardaj programado.
Do, resume eksterlandaj funkcio interfaco.
Se vi volas skribi C funkcion por uzo kun R,
ĝi devas preni ĉiujn argumentoj kiel punteros.
>> Do por solaj valoroj, tiu signifas ĝi atentigis al la valoro.
Por arrays, tiu estas montrilo al la unua elemento, kiu
estas kion tabelo nomoj fakte signifas.
Denove, tio estas io vi devus havi bela tute malsupren post p starigis kvin.
Array nomoj estas nur montriloj al la unua elemento,
La punkto flotante tipo estas duobla.
Kaj via funkcio havas reveni malplenon.
La sola maniero kiu povas fakte diri R kio okazis
estas modifante la memoro ke R donis al ĝi tra la eksterlandaj funkcio
interfaco.
>> Do mi skribis tiun Ekzemple tie, tio estas
funkcio kiu komputas uzo skalara produto de du vektoroj.
Ĝi prenas du argumentojn, vec1, vec2, kiuj estas la vektoroj mem,
kaj tiam n, kiu estas longo, ĉar denove,
R konstruigis en [inaudible] eltrovi la longo de vektoroj, sed C ne.
En C, vektoroj estas ajna limigita bloko de memoro.
Do kiel vi povas kalkuli skalara produktoj
Estas ĝuste starigis ĉi ekstere parametro al nulo kaj tiam persisti tra
de 1 al stelo n, ĉar n estas puntero al la longo,
nur aldoni ion ĉi ekstere parametro.
Kaj ĝi povas esti bona praktiko se vi tuj faros
ĉi skribi du apartajn C funkcioj.
Unu el ili has-- Unu el ili ĵus prenas la argumentojn kaj la tipoj
ke oni ordinare esti en C.
>> Do ĝi prenas tabelo argumentoj kiel punteros.
Sed unu-valoro argumentoj kiel n, ĝi simple prenas kiel valoroj por kopio,
sen punteros.
Kaj tiam ĝi ne [Inaudible] el puntero.
Kaj tiam vi povas havi malsama, esence,
envoltorio funkcion kiu esence pritraktas la postulojn
de la fremdaj funkcio Interfaco por vi.
>> La vojo vi nomas tion en R estas, fojo vi havos vian funkcion skribita en C,
vi tajpi R cmd shlib, R komando dividitaj biblioteko,
foo punkto c, aŭ kio ajn via dosiernomo estas,
kaj la VIN shell ne en la R terminalo.
Kaj ĉi kreos biblioteko nomita foo pentras tiel.
Kaj tiam vi povas ŝarĝi ĝin en nia skripto aŭ dialoge
kun komando Dyn skalara ŝarĝo.
Tiam tie estas funkcio en R nomita skalara ĉ.
>> Ĉi prenas argumentoj kiuj estas Unue la nomo de la funkcio en C
ke vi volas nomi.
Kaj tiam ĉiuj parametroj al tiu funkcio,
Ili devas esti en la ĝusta ordo.
Vi devas uzi tiuj tipo devigo funkcioj kiel entjero, kiel
duobla, kiel karaktero, kaj kiel logika.
Kaj poste kiam li revenas la listo, kiu denove estas nur
asociita tabelo de la parametro nomoj kaj valoroj
post la funkcio kuris.
>> Do en ĉi tiu kazo, ĉar skalara prod havas argumentoj vec1, vec2 kaj int n, n el.
Al dot c ni havas skalara prod, la nomo de la funkcio
ni vokas, vec1, vec2, tipo devigi.
La longo de ĉiu vektoro, Mi nur elektis vec1 arbitre.
Estus pli fortika diri s entjera min longo de vec1, longeco vec2.
Tiam nur kiel duobla nulo, ĉar ni ne vere
zorgas, kio eniras en la eksteren parametro ĉar ni estas
fiksante ĝin al nulo ĉiuokaze.
>> Kaj tiam rezultoj tuj estos granda asociita tabelo de esence
vec1 estas kio ajn, vec2 estas kio ajn.
Sed ni estas interesita en ekstere, tiel ni povos atingi tion diveni.
Jen denove, tre ludilo ekzemplo de fremda funkcio interfaco.
Sed se vi devi komputi skalara produktoj de amasa vektoroj en cikloj,
aŭ se vi devas fari io alia en buklo,
kaj vi ne volas dependi de R, kion faras havi iom de superkape
konstruita en ĝi, tio povas esti utila.
>> Denove, ĉi tio ne estas kutime enkonduka temo al R.
Ĝi ne estas tre bone dokumentita.
Mi nur inkludante ŝin ĉar Mi trovis ĝin utila en la pasinteco.
Do, malbonaj praktikoj.
Mi menciis ke ekzistas por buklo en la funkcio.
Ĝenerale vi ne devus, en la lingvon, ne uzu ĝin.
Bazita sur kiel R implementa ripeto interne, ĝi povas esti malrapida.
Ili simple ankaŭ aspektas malbele.
>> R manipulas vektoroj tre bele, tiel ofte vi ne bezonas uzi ĝin.
Tiam vi povas kutime anstataŭi vektoron ofte
kun tiuj funkcioj nomas altaj Por funkcioj, Mapo, Redukti,
Trovu aŭ filtrilo.
Mi nur donas kelkajn ekzemploj de kion tiuj faras.
Mapo estas alta ordo funkcio ĉar ĝi uzas alian funkcion kiel argumenton.
Do vi povas doni ĝin funkcio, vi povas doni ĝin tabelo,
kaj ĝi aplikos la funkcio por ĉiu ero de la tabelo
kaj redoni la nova tabelo.
Redukti, esence vi donu ĝi tabelo, vi donos ĝin
funkcio kiu prenas du argumentojn.
Ĝi aplikos la funkcio unue, la unua argumento kun iuj startigilo valoro.
Tiam al tiu rezulto en la dua.
Tiam al tiu rezulto en la tria, tiam al tiu rezulto en la kvara.
Kaj tiam revenu kiam alvenas al la fino.
Do ekzemple, se vi volas komputi la sumon de ĉiuj elementoj
en tabelo, ol vi eble nomu redukti kun [inaudible] redukti aldonojn
funkcio, kiel func a, b, resendas plus b.
Kaj tiam komenci valoro de 0.
>> Kaj cxiuj tiuj, vi povas trovi ilin priskribita en la R dokumentaron,
en iu lernolibro sur funkcia programado.
Ekzistas ankaux tiu klaso de funkcioj nomitaj apliki funkciojn,
kiun mi don't-- ili estas iom malfacile klarigi,
sed se vi rigardas en [inaudible] mendita ke mi citis komence,
Li klarigas ilin sufiĉe bone en lia apendico sur R programado.
Pli pri praktikoj, appending al vektoroj.
Yeah?
Mi kredas ke mi devus korekti tion.
En tiu unua linio, vec sago, ke sago ne devus esti tie.
Vi povas atribui al vektoro, denove, por preni lian longo plus 1
kaj atribuante iun valoron al tio.
Kiu etendos la vektoro, aŭ vi povas fari vec egaluloj c, vec newvalue.
Denove, se vi uzas C kun unu argumento kiel vektora,
la rezulta hierarkio gets platigitaj.
Do vi nur ricevos vektoro kiu estas etendita per 1.
Neniam faru tion.
>> La kialo kial vi ne devus fari tion estas ĉi.
Kiam vi destini vektoro, ĝi donas certan eron de memoro.
Se vi pliigos ke vektora grando, ĝi devas reallocate la vektoro
aliloke.
Kaj tiel reasignación estas sufiĉe multekosta.
Mi ne klarigos nun la detalojn de kiel memoro allocators realigitajn
sur la mastruma sistemo nivelo, sed prenas multan tempon
trovi novan eron de memoro.
Kaj ankaŭ, se vi estas re-atribuo multoj kaj terenoj
de laŭstadie pli grandaj pecoj, vi finos
kun iu nomita memoro fragmentación,
kie la disponebla memoro dividita en multaj malgrandaj blokoj
en la memoro allocators vidpunkto.
Kaj ĝi ricevas pli kaj pli malfacile trovi memoro por aliaj aĵoj.
Do anstataŭ, se vi devas fari tion, se vi bezonas kreski vektoro de unu fino
al la sekva, anstataŭ appending al ĝi konstante, vi devus antaŭ-rezervi ĝin.
Vec sago, vektora longo egalas 1,000, aŭ kion ajn.
>> Kaj tiam vi povas simple asigni al la vektoraj valoroj unu
tempo post vi jam asignitaj iame.
Mi renkontis tiun, denove, mia somera laborposteno kiam mi estis skribanta NRA diferenciala
ekvacio solver.
Ne simbola nombra.
La ideo estas ke unufoje vi havas unu valoro por via solvo,
vi uzas ke komputi la proksima.
Do mia natura naiva deklivo estis diri OK,
tial Mi komencos per vektoro jen substanca valoro.
Komputi el kiuj la sekvanta valoro kiu iras al mia solvo vektora,
kaj append tio.
>> Krei iu alia, append tio.
Ĝi iris tre, tre malrapide.
Kaj iam mi komprenis tiun kaj mi ŝanĝis mian sistemon
el appending al tiu vektoro kiel 10,000 al 100,000 fojojn,
nur pre-atribuo vektoro kaj simple kurante kun tio.
Mi akiris pli ol 1,000 obla rapideco supren.
Do tiu estas tre komuna kaptilon por R programado.
Se vi bezonas konstru vektoro dispecigitan antaŭ- rezervu ĝin.
>> Alia komuna vojaĝo up-- ĉi estas mia lasta glito, ne worry-- estas eraro uzado.
R, esti sincera, ne vere fari tion tre bone.
Ekzistas multe de problemoj kiu povas okazi.
Ekzemple, se vi ricevas tabelo aŭ vektora el funkcio
ke vi atendis sola valoro veni de, aŭ inverse,
kaj vi preterpasonta en funkcio kiu vi skribis atendante ununuran valoron,
kiu povas esti problemo.
>> Certaj funkcioj reveni rifuzis fari, diri,
legado de inexistente ŝlosilo en listo.
Sed nula ne ŝatas C kie se vi provas legi
el malnova montrilo, [inaudible] al nula puntero, ĝi ĵus seg kulpoj
kaj se vi estas en via erarserĉilo ĝi diras vin ĝuste kie vi estas.
Anstataŭe, nula estos do-- funkcioj faros neantaŭvideblaj aferoj
se ili estas lertaj nula.
Kiel se vi enmanigis max nula, ĝi donos al vi negativa malfinio.
Kaj tiel, jes.
Kaj tiel tio okazis al mi, kiam mi havis
ŝanĝis faskon de kampoj en mia listo strukturo
iam sen ŝanĝi ilin aliloke kiam mi legis de ili.
Kaj tiam mi ricevis ĉiaj hazarda malfinio rezultoj tondadon supren
kaj mi ne scias kien ili venis.
Kaj bedaŭrinde, ekzistas neniu reala R strikta reĝimo
Kie vi povas diri se io aspektas kiel ĝi povus esti eraro,
nur haltas tie do mi povas esti disciplinado kaj ripari tion.
Tamen, ekzistas io nomata halto se ne.
Tio estas ekvivalenta al C estas aserti, se vi jam parolis pri tio.
Mi ne kredas C aserti Estas prelego temo,
sed via sekcio ĉefo eble trairos gxin.
Kaj halti se ne esence prenas ajnan predikato, do ajna aserto ke
povas esti vera aŭ malvera.
Kaj se ĝi estas falsa, ĝi ĉesas lian programon.
Ĝi diras vin ĝuste kio vicigas vin estis plu kaj kion kondiĉo malsukcesis.
>> Kaj tiu tre utila, ekzemple, sanity kontrolanta, funkcio enigoj.
Do se vi havas funkcion kaj vi atendas, ekzemple,
se vi donu al mi nun, mi volas la datoj estos nur vektoro de longo 1
kaj ie inter 1 kaj 31.
Kaj se ne, mi scias io fuŝiĝis.
Kaj mi elektas halti tie antaŭ tiu havas hazardaj frapo sur efikoj kun kodo
ke ĝi estas pli malfacila spuri tra.
Do jen unu ebla uzi por halto se ne.
>> Cxiukaze, OK.
Do jen la fino.
Dankon tiom por veni.
Mi estas rangon amatoro ĉe tiu.
Do bedaŭras se vi enuas aŭ konfuza aŭ kion havas vin.
Mi estas feliĉa preni demandoj retpoŝte ĉe connorharris@college.harvard.edu.
Ĉi tio iras ankaŭ por ĉiuj rigardante tiun vivi aŭ poste.
Ankaŭ, kvankam mi ne TF, mi estas ankaŭ tre
volos servi kiel neoficiala konsilisto por iu ajn kiu estas
uzante R en fina projekto.
>> Se vi ŝatus ke, tiam nur paroli kun via TF
kaj tiam skribu al mi retmesaĝon tiel Mi scias kion vi laboras sur
do mi povas starigi kunveno fojojn kun vi se vi volas.
Do denove, multan dankon.
Mi esperas ke vi ĝuis ĝin.
>> Spektantaro: [inaudible].
>> CONNER HARRIS: Kompreneble.
>> Publiko: Kio speco de projekto estus CS studento uzi R por?
CONNER HARRIS: Do se vi ne faras iu kiu estas pure en datuma minado,
ekzemple, kaj tie Estas multaj aferoj
vi povus fari kun tiu kun datumoj ministo kaj maŝina lernado.
Vi eble deziras uzi R por komponanto de io.
Mi altigis, origine, la ekzemplo de se vi skribas retejo
kaj vi volas kuri aŭtomatigita statistika analizo de via servilo
ŝtipoj je certa tempo ĉiutage, ke povus esti io tio
tre facila fari en nur mallonga R skripto kiu povas plani
kuri ĉiunokte, ekzemple.
>> Kaj mi certas, se ekzistas ajna kialo oni kredus
volas statistiko aŭ grafikaj kapabloj kaj havi ĉi run aŭtomate anstataŭe
havi interrilati kun aferoj en Excel,
ekzemple, tio estas io vi eble deziras uzi R por.
Do demandon antaŭ mi lasas?
Neniu?
Bone, bone, pli, dankon dankojn pro veni.