CONNOR HARRIS: Still ko tingin ng ilang kapana-panabik na video nagawa sa pamamagitan ng isang propesyonal na pagkonsulta na gumagamit ng R ng maraming sa kanyang trabaho. Tagapagsalaysay: Ano ang nasa likod ng mga istatistika, ang analytics, at ang mga visualization pinakamaliwanag siyentipiko data na ngayon at mga lider ng negosyo ay umaasa sa upang gumawa ng malakas na desisyon? Ikaw ay maaaring hindi laging makita ito. Ngunit ito ay may. Ito ay tinatawag na R, open source R-- ang statistical programming language na ang mga eksperto ng data sa mundo higit sa paggamit para sa lahat ng bagay mula sa paggawa ng mga mapa ng malawak na lipunan at mga uso sa online na pagmemerkado sa pag-unlad ng pananalapi at klima modelo na makakatulong sa drive ang aming mga ekonomiya at mga komunidad. Ngunit ano ang eksaktong ay R at saan R magsisimula? Well orihinal, nagsimula R dito sa dalawang propesor na nais ng isang mas mahusay na statistical platform para sa kanilang mga mag-aaral. Kaya sila na nilikha ng isang modelo pagkatapos ng statistical wika S. Sila, kasama ang marami pang iba, iningatan nagtatrabaho sa at paggamit ng R, paglikha ng mga kasangkapan para sa R ​​at paghahanap bagong aplikasyon para sa R ​​araw-araw. Salamat sa mga ito ay sa buong mundo na pagsisikap ng komunidad, R iningatan lumalaki sa libo-libong ng mga aklatan na nilikha ng gumagamit na binuo upang mapahusay ang pag-andar R at karamihan ng tao-inaning pagpapatunay ng kalidad at suporta mula sa mga pinaka-kinikilalang mga lider ng industriya sa bawat field na ay gumagamit R. Aling ay mahusay, dahil R ay ang pinakamahusay sa kung ano ang ginagawa nito. Namumuko eksperto sa mabilis at madaling bigyang-kahulugan, makipag-ugnayan sa, at mailarawan ang data na nagpapakita ng kanilang mabilis lumalaking komunidad ng mga gumagamit sa buong mundo R at makita kung paano open source R patuloy na hugis ang hinaharap ng statistical analysis at agham data. CONNOR HARRIS: OK, malaki. Kaya ang aking sariling mga pagtatanghal ay magiging mas matino ng kaunti. Hindi na ito ay kabilang na marami kapana-panabik na background music. Ngunit tulad ng nakita mo sa video, R ay uri ng isang pangkalahatang programa wika layunin. Ngunit ito ay nilikha na ang karamihan para sa statistical trabaho. Kaya ito ay dinisenyo para sa mga statistics, para sa pagsusuri ng data, para sa data mining. At kaya maaari mong makita ito sa isang pulutong ng ang disenyo ng mga pagpipilian na mga gumagawa ng R ginawa. Ito ay dinisenyo para sa kalakhan, mga tao na hindi eksperto sa programming, na ay tumatawag lang programming sa gilid upang maaari nilang gawin ang kanilang trabaho sa social science o sa mga istatistika o kahit ano. Ito ay may isang pulutong ng mga tunay mahalagang pagkakaiba mula sa C. Ngunit ang syntax at ang paradigms na ito ay gumagamit ay malawak ang parehong. At dapat mong huwag mag-medyo marami sa bahay karapatan off ang bat. Ito ay isang kinakailangan na wika. Huwag mag-alala masyadong maraming tungkol sa na kung hindi mo alam ang term. Subalit mayroong isang pagkakaiba pagitan ng makapangyarihan, paturol, at functional. Hindi maiwasan lamang ay nangangahulugan na gagawin mo pahayag na karaniwang command. At pagkatapos ay ang interpreter o ang sumusunod sa computer ang mga ito ng isa-isa. Mahina Ito ay nag-type, may mga walang pagdeklara type sa R. At pagkatapos ay ang linya pagitan ng iba't-ibang uri ay medyo mas maluwag kaysa sa ang mga ito ay sa C, halimbawa. At tulad ng sinabi ko may mga napaka malawak na mga kagamitan para sa graphing, para sa statistical pagtatasa, para sa data mining. Ang mga ito ay parehong binuo sa wika at, tulad ng sinabi sa video, libu-libong mga third party na aklatan na Maaari mong i-download at gamitin ng libre may tunay maluwag kasunduan sa lisensiya. Kaya sa pangkalahatan, Gusto pinapayo na pagtingin mo sa mga ito ng dalawang mga libro kung ikaw ay pagpunta sa trabaho sa R. Isa ng mga ito ay ang opisyal na R baguhan gabayan. Ito ay pinananatili sa pamamagitan ng core developer ng R. Maaari mong i-download itong muli, walang singilin at legal sa link na iyon doon. Lahat ng mga slide ay pagpunta sa pumunta up sa internet, sa CS50 website matapos na ito ay tapos na. Kaya hindi na kailangan upang kopyahin pababa frantically bagay. Ang iba pang isa ay isang aklat-aralin sa pamamagitan ng Cosma Shalizi, na propesor istatistika sa Carnegie Mellon, na tinatawag na Advanced Data Pagsusuri mula sa isang Elementary Point of View. Ito ay hindi lalung-lalo na ng R book. Ito ay isang libro na mga istatistika at mga ito ay isang aklat na pagsusuri ng data. Ngunit ito ay napaka-access sa mga tao na Mayroon isang maliit ng kaalaman ng mga istatistika. Hindi ko na kinuha ng isang pormal na kurso. Alam ko lang bits at piraso mula sa iba't ibang magkakatulad paksa na kinuha ko na kurso sa. At ako ay maaaring maunawaan ito ganap na ganap na rin. Ang lahat ng mga numero ay ibinigay sa R. Sila ay ginawa sa R at sila rin ay may mga listahan ng code sa ibaba ng bawat figure na sabihin sa iyo paano gumawa ka ng bawat figure na may R code. At iyan ay lubhang kapaki-pakinabang kung ikaw ay sinusubukan upang tularan ilang figure na nakikita mo sa isang libro. At muli libreng pag-download stat.cmu.edu/cshalizi/ Paumanhin, na dapat ay slash tilde cshalizi. Kukunin ko siguraduhin na tama na kapag ang opisyal na mga slide pumunta up. / ADAfaEPoV na lang ang acronym ng pamagat ng libro. Kaya pangkalahatang caveats-- R may isang pulutong ng mga kakayahan. Lamang ako ng pagpunta sa ma-cover sa ibabaw ng isang pulutong ng mga bagay-bagay. Gayundin sa unang bahagi ng seminar ay magiging isang bagay ng isang dump data. Ako ay lubos na paumanhin tungkol sa na. Karaniwang, pupuntahan ko kitang ipakilala sa isang pulutong ng mga bagay-bagay karapatan off ang bat, pagpunta sa lalong madaling panahon. At pagkatapos makuha namin sa ang masayang bahagi, na kung saan ay ang demo kung saan maaari kong ipakita sa iyo ang lahat ng bagay na namin ang uusapang tungkol sa screen. At maaari mong i-play sa paligid sa iyong sarili. Kaya may pagpunta sa maging isang pulutong ng teknikal na mga bagay-bagay na itinapon up sa dito. Huwag mag-alala tungkol sa pagkopya ng lahat na pababa. Dahil A, maaari kang makakuha ng lahat ng mga bagay-bagay sa CS50 website mamaya. At B, ito ay hindi tunay na mahalaga kabisaduhin ito mula sa mga slide. Ito ay mas mahalaga na makakuha ka ilang intuitive pasilidad sa mga ito at na nanggagaling sa pag-play lamang sa paligid. Kaya bakit gamitin R? Talaga, kung mayroon kang isang proyekto na nagsasangkot pagmimina malaking hanay ng data, ang data visualization, ikaw ay dapat gumamit R. Kung ikaw ay ginagawa kumplikado statistical pinag-aaralan, na magiging mahirap na sa Excel, halimbawa, ay ito ding good-- din kung ikaw ay gumagawa statistical analysis na automated. Sabihin nating ikaw ay pagpapanatili ng isang website. At gusto mong basahin ang mga log ng server araw-araw at ilista ang ilang mga listahan, tulad ng mga nangungunang bansa na ang iyong mga user ay nagmumula, ng ilang mga istatistika ng buod sa kung gaano katagal gastusin nila sa iyong website o anuman. At gusto mong patakbuhin ang mga ito araw-araw. Ngayon kung ikaw ay gumagawa ng ito sa Excel, gusto mo na kailangang pumunta sa mga mag-log ng iyong server, import na sa isang Excel spreadsheet data, tumakbo ang lahat ng analysis ng mano-mano. Sa R, maaari mo lamang na magsulat ng isa script. Schedule ito na tumakbo sa bawat araw mula sa iyong operating system. At pagkatapos ay sa bawat gabi at 2:00 AM, o kailan mo i-schedule ito na tumakbo, ito ay tumingin sa pamamagitan ng iyong internet trapiko para sa araw na iyon. At pagkatapos ay sa pamamagitan ng susunod na araw, makikita mo magkaroon ng ganitong makintab, bagong ulat o ano pa man sa lahat ng mga impormasyon na iyong hiniling para sa. Kaya talaga R ay para sa Cisco programming kumpara analysis Cisco. Paunang ay tapos na. Sabihin makakuha sa ang tunay na bagay. Kaya may tatlong real uri sa wika. May type numeric. May mga uri ng isang pagkakaiba sa pagitan ng integer at lumulutang na puntos, ngunit hindi talaga. May isang character type, na kung saan ay mga string. At mayroong isang lohikal type, na kung saan ay Booleans. At maaari mong i-convert sa pagitan ng mga uri paggamit ng mga function bilang numero, bilang ng character, tulad ng lohikal. Kung tumawag ka, halimbawa, bilang numero sa isang string, ito ay subukan na basahin na string bilang isang numero, sa parehong paraan na a2i at scanf gawin, at C. Kung tumawag ka bilang numero sa totoo o hindi Iko-convert ito sa 1 o 0. Kung tumawag ka ng karakter sa anumang bagay na ito makikita convert na sa isang string na representasyon. At pagkatapos ay may mga vectors at matrices. Kaya vectors talaga 1 dimensional array. Ang mga ito ay kung ano ang tawag namin sa mga array in C. Matrices, 2 dimensional array. At pagkatapos ay mas mataas dimensional array maaari mong may 3, 4, 5 dimensyon o kahit na ano ng numerong halaga, ng mga string, ng mga lohikal na mga halaga. Mayroon ka ring mga listahan kung saan ay isang uri ng nag-uugnay array. Magagawa ko sa na ng kaunti. Kaya ang isang mahalagang bagay na biyahe up ang mga tao sa R ay na may mga walang real, purong atomic uri. Walang aktwal na pagkakaiba sa pagitan ng isang numero, tulad ng isang numerong halaga, at isang listahan ng mga numerong halaga. Numerong halaga ay aktwal na ang parehong bilang ng mga vectors ng haba 1. At ito ay isang bilang ng mahalagang epekto. One, ito ay nangangahulugan na maaari mong gawin mga bagay-bagay na tunay madali na kasangkot tulad ng pagdadagdag ng isang numero sa isang vector. R ay isa lamang figure kung ano ang ibig mong sabihin sa pamamagitan ng na. At makikita ko na sa na sa isang segundo. Ito rin ay nangangahulugan na walang paraan para sa uri checker-- sa lawak na ang isang bagay tulad na umiiral sa R-- upang sabihin sa kapag ikaw na ang pumasa sa isang halaga kapag ito inaasahan isang array o vice versa. At na maaaring maging sanhi ng ilang mga gansal problema na ako ang bumangga sa kapag Ako ay gumagamit ng R sa panahon ng aking trabaho tag-init. At walang mga array mixed-type. Kaya hindi ka maaaring magkaroon ng isang array ay ang unang elemento ay, hindi ko alam, ang string "John" at ang pangalawang elemento ay number 42. Kung susubukan mong gawin iyon, pagkatapos ay makukuha mo lahat ng bagay lamang-convert sa isang string. Kaya mayroon kaming string John, string 42. Kaya hindi pangkaraniwang syntactic Mga Tampok ng karamihan ng R syntax ay halos katulad sa C. May ilang mahalagang pagkakaiba. Typing ay masyadong mahina. Kaya walang mga variable declarations. Pagtatalaga ay gumagamit ng mga kakaibang error operator mas mababa sa gitling. Ang mga komento ay may marka hash. Hulaan ko ngayon araw tinatawag namin itong hashtag kahit na hindi talaga accurate-- hindi ang double slash. Modular residues ay may %% palatandaan. Integer division ay may% /% na kung saan ay lubhang mahirap na basahin kapag ito ay inaasahang up sa screen. Maaari kang makakuha ng mga saklaw ng integer sa colon. Kaya 2,5 ay magbibigay sa iyo ng isang vector ng lahat ng mga numero 2 hanggang 5. Ang mga array ay one-index, na screws ng isang pulutong ng mga tao up kung ang mga ito mula sa mas tipikal na mga programming languages, tulad ng C, kung saan karamihan bagay na ito ay zero-index. Muli, ito ay kung saan heritage R bilang isang wika para sa mga tulad ng hindi propesyonal na programmer ay sa. Kung ikaw ay isang sociologist o isang ekonomista o isang bagay at sinusubukan mong gamitin ang R talaga bilang pandagdag sa iyong mas mahalaga propesyonal na trabaho, ikaw ay pagpunta upang mahanap one-index ng mas natural ng kaunti. Dahil simulan mo bilangin sa 1 sa araw-araw na buhay, hindi 0. Para-loop, ito ay katulad ng ang foreach bumuo sa PHP, na kung saan makakakuha ka ng upang matuto in-- pretty sa lalong madaling panahon. Alin ang para sa mga halaga sa vector at pagkatapos ay maaari mong gawin ang mga bagay na may halaga. Madla: Iyan ay lumapit sa panayam. CONNOR HARRIS: Oh, na ang magkaroon ng panayam, excellent. Madla: assignment Ang, ito ay dapat na ituro mula kanan pakaliwa? CONNOR HARRIS: Mula sa kanan pakaliwa, yes. Maaari mong isipin na ito bilang ang mga halaga sa kanan shoved sa variable sa kaliwa. Madla: OK. CONNOR HARRIS: At sa wakas function na syntax ay isang medyo kakaiba. Mayroon kang ang pangalan ng function foo, itinalaga to function keyword na ito, na sinusundan sa pamamagitan ng lahat ng mga argumento at pagkatapos ay ang katawan ng function matapos na. Muli ang mga bagay na maaaring tila medyo kakaiba. Makikita nila ang naging pangalawang kalikasan matapos trabaho sa inyo ang wika para sa isang bit. Kaya vectors, ang mga paraan kang bumuo ng isang vector ay ikaw type C, na kung saan ay ang isang keyword, at pagkatapos ay lahat ng mga numero na nais mong o mga string o kahit ano. Pangangatwiran din vectors. Ngunit ang mga resulta na array ay makakakuha ng pipi. Kaya hindi ka maaaring magkaroon ng mga array kung saan ang ilang mga elemento ay solong numero at ang ilang mga elemento ay array sa kanilang sarili. Kaya kung susubukan mo upang bumuo ng isang array ay ang unang elemento ay 4 at ang pangalawang elemento ay ang array 3,5 makikita mo lamang makakuha ng isang array tatlong mga sangkap, 4,3,5. Hindi sila maaaring maging ng halo-halong uri. Kung susubukan mong basahin o sumulat sa labas ng hangganan ng isang vector makakakuha ka ng ganitong halaga na tinatawag NA isang na ang ibig sabihin para sa isang nawawalang halaga. At ito ay inilaan para sa tulad statisticians na ay nagtatrabaho sa mga hindi kumpletong hanay ng data. Kung mag-apply ka ng isang function na ay dapat upang kumuha lamang ng isang numero sa isang array pagkatapos ay kung ano ang makukuha mo ay, ang function na ay mapa sa ibabaw ng array. Kaya kung hayaan ang iyong mga pag-andar natin tumatagal isang numero at babalik ito square. Mag-apply ka na sa array 2,3,5 Ano ang makukuha mo ay ang array 4,9,25. At iyan ay lubhang kapaki-pakinabang dahil ito ay nangangahulugan sa iyo Hindi mo na kailangang isulat para sa mga loop para sa paggawa ng napaka-simpleng bagay tulad ng pag-aaplay isang function sa lahat ng mga miyembro ng isang set ng data. Aling kung ikaw ay nagtatrabaho sa mga malalaking set ng data, kailangan mong gawin ng maraming. Binary function ay applied entry sa pamamagitan ng entry. Magagawa ko na sa na. Maaari mong ma-access ang mga ito gamit ang mga array o vectors na may mga square bracket. Kaya pangalan vector square bracket 1 ay magbibigay sa iyo ang unang elemento. Pangalan ng Vector square bracket 2 ay magbibigay sa iyo ang pangalawang elemento. Maaari mong pumasa sa isang vector ng indeks at bibigyan ka makabalik out talaga ng isang sub factor. Kaya maaari mong gawin vector name bracket C, 2,4 at makakakuha ka ng isang vector na naglalaman ng ang pangalawa at ika-apat na elemento ng array. At kung gusto mo lamang ng isang mabilis na buod istatistika ng isang vector tulad interquartile hanay, panggitna, maximum, ano man, maaari mong i-type lamang ang buod Pangalan ng vector at makakuha ng na-out. Iyan ay hindi tunay na kapaki-pakinabang sa programming ngunit kung ikaw ay naglalaro sa paligid ng mga hanay ng data, ito ay magaling. Matrices-- talaga mas mataas dimensional array. Ang mga ito ay ang mga espesyal na notasyon syntax. Matrix sa isang array na nakukuha ng puno in-- Paumanhin, matrix na may data, bilang ng mga hilera, ang bilang ng mga haligi. Kapag mayroon kang ilang data, punan ang mga ito sa array talaga pagpunta sa itaas sa ibaba unang. Pagkatapos kaliwa papuntang kanan. Kaya, tulad ng. At R ay may built in multiplications matrix, parang multo agnas, Diagonalization, ng maraming mga bagay-bagay. Kung nais mong mas mataas na sukat array, kaya 3, 4, 5, o kahit na ano na sukat na maaari mong gawin iyon. Ang syntax ay array dim katumbas c, pagkatapos ay ang listahan ng mga sukat. Kaya kung nais mong ang isang 4 dimensional array may sukat 4, 7, 8, 9, array, dim katumbas c (4,7,8,9). Ma-access mo single mga halaga sa loob ng mga braket unang entry comma pangalawang entry. Maaari kang makakuha ng buong mga hiwa ng mga hilera o haligi. Gamit ang hindi kumpletong syntax ito ay hilera lamang bilang kuwit o comma column number. Kaya listahan ay isang uri ng nauugnay array. Sila ay may kanilang sariling mga syntax dito. Muli hindi frantically kopyahin ang lahat ng down na ito. Ito ay upang lamang na ang mga tao pagpunta sa pamamagitan ng mga slide sa ibang pagkakataon Mayroon ito ng lahat sa isang magandang reference. At ito ay naging napaka-natural-sabay Ako tunay na paglalakad sa pamamagitan ng demo. Kaya mga listahan ng isang karaniwang nauugnay array. Maaari mong ma-access ang mga halaga sa Pangalan ng listahan, dollar sign, key. Kaya kung ang iyong listahan ay pinangalanan foo, pagkatapos ay maaari mong ma-access ito tulad na. Maaari kang makakuha ng isang buong pair ng key-value sa pamamagitan ng pagpasa sa mga square bracket index. Kung nabasa mo mula sa isang di-umiiral na key, makakakuha ka ng null. Hindi ito ay error. Bagay ay, R ang gaya ng magkano na may null gaya ito maaari. At ito ay maaaring nangangahulugan na kung ikaw ay hindi umaasa upang makakuha null out ng ilang mga listahan read, makakakuha ka ng ilang mahuhulaan error sa mas ibaba pa Ang linya. Nangyari ito sa akin ng aking kapag summer job ako ay gumagamit ng R kung saan ako ay nagbago kung paano ang isang tiyak na list ay tinukoy sa isang lugar ngunit hindi baguhin sa ibang pagkakataon sa code na basahin ang mga halaga mula sa mga ito. At kaya kung ano ang nangyari noon ay ako ay pagbabasa null values ​​labas ng listahan na ito, pagdaan ng mga ito sa pag-andar, at sa pagiging napaka-lito kapag ang nakuha ko ang lahat ng uri ng random infinities pagtatabas up sa function na ito. Dahil kung mag-apply ka ng ilang mga maximum o minimum function na null, makakakuha ka ng mga walang katapusan na mga halaga out. Frames Data, ang mga ito ay isang subclass ng listahan. Bawat halaga ay isang vector ng parehong haba. At sila ay ginagamit para sa pagtatanghal, talaga, mga talahanayan ng data. Mayroong ito Pinasimulan syntax. Ito ay ang lahat, muli, maaaring marami mas malinaw kapag nakarating ka na sa mga demo. At ang magandang bagay tungkol sa frames data ay na kayo ay maaaring magbigay ng pangalan sa lahat ng mga haligi at mga pangalan sa lahat ng mga hilera. At kaya na gumagawa ng pag-access mga ito ng kaunti sa pakikipagkaibigan. Gayundin ito ay kung paano karamihan sa mga function na basahin sa data mula sa mga spreadsheet sa Excel o mula sa mga file ng teksto, halimbawa, ay basahin sa kanilang data. Makikita nila ilagay ito sa ilang uri ng mga frame data. Kaya functions-- ang mga function syntax ay isang medyo kakaiba. Muli ito ay ang pangalan ng function, magtalaga, function na keyword at pagkatapos ay ang listahan ng mga argumento. Kaya may ilang mga bagay na maganda tungkol sa kung paano pag-andar magtrabaho dito. Para sa isa, maaari mong aktwal na magtalaga mga default na halaga sa ilang mga argumento. Kaya maaari mong sabihin R1 equals-- maaari mong sabihin foo ay isang function na kung saan ay katumbas ng R1 bagay sa pamamagitan ng default kung gumagamit ang tinutukoy walang argumento. Kung hindi man, ito ay ang anumang siya ilagay sa. At ito ay tunay magaling dahil ang isang pulutong ng aming mga function Mayroon madalas dose-dosenang o daan-daang mga argumento. Halimbawa ng mga para sa paglalagay sa graphs o paglalagay sa scatter plots may argumento na kontrol lahat ng bagay mula sa mga pamagat at ang axis label sa kulay ng pagbabalik ng mga linya. At kaya kung hindi mo nais na upang gumawa tukuyin tao lahat ng isa sa mga daan-daang mga argumento pagkontrol ng bawat solong aspeto ng isang lagay ng lupa o ng isang pagbabalik o ano man, ito ay magaling na magkaroon ang mga default na halaga. At pagkatapos ay maaari mong tunay isulat ang bilang na nakita mo bumalik dito. O maghanap ng isang mas mahusay na halimbawa. Kapag tumawag ka pag-andar maaari mong talagang tawagan ang mga ito gamit ang mga pangalan ng argument. Kaya narito ang isang halimbawa ng tagapagbuo matrix. Ito ay tumatagal ng tatlong argumento. Karaniwan ikaw ay may data, kung saan ay isang vector. Mayroon kang N hilera, na ay ang bilang ng mga hilera. Mayroon kang N cols-- bilang ng mga haligi. Ang bagay ay kung type mo N hilera ay katumbas ng anuman at N col katumbas anuman kapag ikaw ay pagtawag sa function na ito, Maaari mong aktwal na ito baligtarin. Kaya maaari mong una at N row ilagay N col ikalawang at ito ay gumawa ng walang pagkakaiba. Kaya na ang isang magandang maliit na tampok na ito. Nakatulong ba import at export. Ito ay maaaring gawin, talaga. May mga pasilidad na magsulat out din arbitrary R bagay sa isang binary file at pagkatapos ay basahin ang mga ito pabalik sa ibang pagkakataon. Alin ang madaling-magamit na kung ikaw ay gumagawa isang malaking interactive session R at kailangan mo upang i-save ang mga bagay na masyadong mabilis. Sa pamamagitan ng default R ay may isang nagtatrabaho direktoryo na file na makakuha ng nakasulat na lumabas sa at basahin pabalik sa mula sa. Maaari mong makita na may getwg, baguhin ito sa setdw. Walang lalo na interesante dito Kaya ngayon ang aktwal na mga istatistika stuff-- multilinear pagbabalik. Kaya ang karaniwang syntax ay isang bit kumplikado. Ang modelo ay karaniwang isang malaking bagay. Ito ay makakakuha itinalaga sa LM, kung saan ay isang function na tawag. Ang unang elemento, ang y tilde x1 plus kahit anong. Aking syntax dito ay isang bit nakalilito. Ako ay lubos Paumanhin, ito ay ang karaniwang paraan na computer science libro gawin ito. Ngunit ito ay isang medyo kakaiba. Kaya talaga, ito ay lm panaklong, unang item ay variable-- Paumanhin, umaasa variable tilde x1 plus x2 plus subalit maraming mga independiyenteng variable na mayroon ka. At pagkatapos ay ang mga maaaring maging alinman sa vectors, ang lahat ng mga parehong haba. O maaari silang maging haligi mga header sa isang frame data na tinukoy mo lang sa pangalawang argumento data frame. Maaari mo ring tukuyin isang mas kumplikadong formula kaya hindi mo na kailangang mag linearly urong ng isa umaasa variable, o isa vector sa isang pre-umiiral na mga vector. Maaari mong gawin, halimbawa, isang vector component y nakalapat plus 1 at pagbalik na laban sa mag-log ng ilang iba pang mga vector. Maaari mong i-print ang mga buod ng mga modelo na ito command na tinatawag na summary-- parens buod lamang na modelo. Muli isang bagay pa ang dapat kong linawin. May ibang tao na makakuha ng naitama kapag ang mga slide pumunta up sa internet. Kung gusto mo lamang upang makalkula isang simpleng ugnayan maaari mong gamitin ang ugnayan vector 1 vector 2 function core. Pamamaraan ay sa pamamagitan ng default Pearson correlations. Iyon ang mga standard na mga maaari mong gawin. Mayroong din Spearman at Kendell correlations na kung saan ang ilang mga pagkakaiba-iba ng ranggo ugnayan order. Well hindi sila kalkulahin produkto sandali sa pagitan ng mga vectors sa kanilang sarili, ngunit ng ranggo ang mga order ng vector ni. Ipapaliwanag ko na mamaya. Madla: Mabilis na tanong CONNER HARRIS: Oo naman. Madla: Kaya kapag kayo ay pagkalkula para sa mga simpleng correlations gawin akala mo na may isang statistical kabuluhan sa ugnayan? CONNER HARRIS: Hindi mo na kailangang. Isang lm ay karaniwang isang makina lamang. Aabutin sa dalawang bagay at ito ay sabihin ang coefficients para sa pinakamahusay na akma linya. Ito din ang mga ulat standard error sa mga coefficients. At ito ay magsasabi sa iyo, tulad ay ang maharang makabuluhan sa istatistika o pagkakaiba mula sa 0. Ay ang slope sa mga pinakamahusay na fit line istatistika naiiba mula sa zero, at iba pa. Kaya ito Ipinagpapalagay wala, sa palagay ko ay pinakamahusay na sagot sa iyong katanungan. SIGE. Plotting-- kaya ang pangunahing dahilan dapat sa iyo gamitin R, tulad multilinear pagbabalik. Talaga lahat ng wika ay may ilang mga pasilidad para sa na. At syntax matapat R para sa pagbabalik ay isang bit arcane. Ngunit paglalagay ay kung saan ito ay talagang kumikinang. Ang workhorse function ay plot at ito ay tumatagal ng dalawang vectors, x at y. At pagkatapos ay ang ellipses ibig sabihin para sa isang napaka malaking bilang ng mga opsyonal na mga argumento na kontrolin ang lahat ng bagay mula sa mga pamagat sa mga kulay ng iba't-ibang linya o iba't-ibang mga puntos, sa mga uri ng balangkas. Maaari kang magkaroon ng scatter plots o linya plots. [Hindi marinig] 2 vectors ng parehong haba. Maaari mong pangunahan sa ilakip data frame sa iyong script. At ito ay nagpapahintulot sa inyo na gamitin mo lamang column mga header sa halip ng hiwalay na vectors. Maaari kang magdagdag ng pinakamahusay na angkop na mga linya at mga lokal na pagbabalik kurva sa iyong graph. Ang mga utos na nakalista dito, AB line at linya, sa pamamagitan ng default ang mga makakuha ng nakasulat sa mga bintana pop up dahil ito Ipinapalagay na gumagamit ka ng R interactive. Kung ikaw ay hindi maaari mong magsulat ng dalawang mga file na ay nasa tunay anumang format na gusto mo. Paumanhin, mayroon akong isang typo ko lamang natanto. Kung nais mong buksan isa pang graphical device maaari mong gamitin ang function na tinatawag na PNG o JPEG o ng maraming iba pang mga format ng imahe. At maaari mong isulat ang mga graph sa kahit anong file name na tinukoy mo. Upang kanselahin na mayroon ka na use-- Hindi ko isulat ito sa slide-- ngunit may isang function na tinatawag na dev dot off na tumatagal ng walang argumento. Pagkatapos ay may mga pasilidad para sa 3D na paglalagay at para sa tabas paglalagay kung nais mong gumawa ng graph ng dalawang independiyenteng mga variable. Hindi ako makakuha ng sa mga ngayon. Mayroon ding ilang mga pasilidad para sa animation ang mga ito ay karaniwang pinapanatili ng mga third party. Ang ginawa ko animation na may R graphs, ngunit hindi ko ginagamit ang mga third party aklatan. Kaya hindi ko talaga maaaring ibunyag sa kung paano mahusay ang mga ito. Ano ang pinapayo ko kung gusto mong upang gumawa ng mga animation gamit R ay maaari mong isulat ang lahat ng ang mga frame para sa mga animation at pagkatapos ay maaari mong gamitin ang isang third party program-- tipikal na iyan ay tinatawag FFmpeg o ImageMagick-- tahiin ang lahat ng iyong mga frame sa isa animation. Kaya oras na para sa demo. Kaya't kung ikaw ay gumagamit ng anumang Unix tulad ng sistema na kung saan ay Linux BSD ngunit na gumagamit ng BSD. OS X buksan ang isang terminal na window at type R sa command prompt. Kung ikaw ay may R studio o ang gusto, na gumagana din. Para sa mga gumagamit ng Windows ay dapat ikaw ay maaaring makahanap ng R sa iyong Start menu. Dapat ito ay tinatawag na isang bagay tulad ng R x64 3 point anuman. Buksan na up doon. Kaya ngayon hayaan mo akong lamang buksan ang isang terminal na window. Lahat ng karapatan, paghahanap. Madla: Command-Space CONNER HARRIS: Command-Space, salamat. Hindi ko kalimitan gamitin Mac. Terminal, ipakita bagong window. Bagong window ay settings basic, R. Kaya dapat kang makakuha ng isang pambungad na mensahe, ang isang bagay tulad nito. Kaya gumagamit ako ng R interactive. Maaari ka ring sumulat R script ng kurso. Talaga script tumakbo ang eksaktong parehong paraan tulad ng kung ikaw ay upo sa computer pag-type sa bawat linya nang paisa-isa. Kaya simulan sa pamamagitan ng paggawa ng isang vector ipaalam. Isang arrow C 1, 2. 1, 2, 4. Ok sige. Maaari ba akong gumawa ng mas malaki ang laki ng font. Madla: Command-Plus CONNER HARRIS: Command-Plus. Command-Plus. Lahat ng mga karapatan, kung paano iyon? Good? SIGE. Kaya natin simulan sa pamamagitan ng ipaalam deklarasyon ng isang listahan vector. Mayroon ng isang, arrow, C 1,2,4. Maaari naming makita a. Huwag mag-alala tungkol sa mga bracket doon. Ang mga bracket ay kaya kung mag-print out ka masyadong mahaba ang mga array, maaari na kung saan namin kayo. Ang isang halimbawa ay kung ako gusto lang na hanay 2-200. Kung naka-print na ako ng isang napaka mahabang array, ang mga bracket ay lamang kaya maaari kong panatilihin subaybayan ng index kami ay sa kung ako naghahanap sa pamamagitan na ito biswal. Kaya kahit papaano, kami ay may isang. Kaya sinabi ko bago makipag-ugnayan na array lalong mabuti sa, halimbawa, unary operations tulad nito. Kaya kung ano ang sa tingin mo makikita ko makakuha ng kung nagta-type ako ng plus 1? Yep. Right, ngayon kukunin ko na gumawa ito naiiba array. Sabihin natin na b c 20,40, 80. Kaya kung ano ang tingin ninyo utos na ito ay gawin? Idagdag sa mga elemento. At kaya talaga na kung ano ang ginagawa nito. Kaya ito ay medyo madali. Kaya ako kung paano tungkol sa gagawin ko ito. c ay, sabihin nating, ng 6 na beses sa 1 hanggang 10. Kaya kung ano ang gusto kong makita nilalaman, ang iyong palagay? Kaya lahat ng mga multiple ng anim. Ngayon, kung ano ang iyong palagay ang mangyayari kung gagawin ko ito? Magtatagal ako gumawa ito ng kaunti mas malinaw, c, c. Kaya kung ano ang mangyayari, gawin mo mag-isip, kung gagawin ko ito? ng plus c. [Hindi marinig] Madla: Alinman sa isang error o ito nagdadagdag lang ang unang tatlong mga sangkap. CONNER HARRIS: Hindi lubos. Ito ay kung ano ang aming nakuha. Ano ang mangyayari ay isang mas maikling array, isang, got cycled. Kaya namin nakuha 124, 124, 124. Oo. At isa lamang, maaari mong tingnan bago ang pag-uugali, ang isang plus 1, bilang subclass ng pag-uugali, kung saan pinakamaikling array ay lamang ang bilang 1, kung saan ay isang array isang elemento. Ako ay magiging lamang sinasabi vector lahat ang oras sa halip ng array, ano dahil iyon ang r Karaniwang ginagawa babasahin. Ito ay isang nakatanim c ugali. OK, at kaya ngayon kami ay may array na ito. Kaya mayroon kaming ito array, c. Maaari naming makakuha ng buod istatistika sa c, buod c. At iyan ay nice. Kaya sabihin gawin ang ilang mga bagay na matrix ngayon hayaan. Ipagpalagay natin na m ay isang matrix. Gawin itong isang tatlong sa pamamagitan ng tatlong ng isa. Kaya nrows katumbas ng 3, at ncols katumbas ng 3. Ni do-- At para sa data ipaalam kung ano ang kaya sa tingin mo ito ay pagpunta sa gawin? Right, ito ang susunod na isa. Ito ay nrow at ncolumn. Kaya kung ano ang nagawa ko ay hindi ko na ipinahayag ng isang tatlong sa pamamagitan ng tatlong matrix at ako ang pumasa sa isang array siyam na elemento. Kaya ang logarithm ng lahat ng mga elemento ng isa sa pamamagitan ng siyam. At ang lahat ng mga halaga punan up ang array-- sorry? Madla: Ang mga ay base 10 logs? CONNER HARRIS: Hindi, mag-log ay natural logarithms, kaya base e. Oo, kung nais mo ang batayang 10 log, tingin ko gusto mong magkaroon ng mag ano man, na hinati sa pamamagitan log 10. At upang ang mga data ng [hindi marinig] lamang pinunan ang array, kaya itaas hanggang sa ibaba, pagkatapos ay kaliwa papuntang kanan. At kung gusto mong gawin ang ilang mga iba pang array, sabihin natin n ay matrix. Hindi ko alam, 2 hanggang 13 ay gawin Ipaalam,. O kailangan kong gawin ang isang bagay na mas kawili-wili. Kailangan kong gawin ang 2 sa 4 na. nrow katumbas, sabihin nating, 3. ncol katumbas ng 4. n. Kaya namin ang nakuha ko na ito. At ngayon kung gusto naming i-multiply ang mga ito, Gusto naming gawin n percent beses porsyento, dahil iyon ang n. At kami ay may mga produkto ng matrix. Sa pamamagitan ng mga ito ay paraan, nakita mo kung paano nang ipahayag ko n, ang 2 sa 4 vector got cycled hanggang pinuno up ang lahat ng n? Kung nais mong kumuha ng eigenvalue agnas, ito ay isang bagay na maaari naming gawin sa lalong madaling. Maaari naming gawin eigen n. At kaya ito ay ang aming unang nakatagpo ng isang listahan. Kaya eigen n ay isang listahan na may dalawang mga pindutan. Halaga, na kung saan ay ang array na ito dito. At vectors, na kung saan ay ang array na ito dito. Kaya kung nais mong kunin, sabihin nating, ikatlong hanay na ito mula sa eigenvectors matrix, dahil ang eigenvectors ay vectors column. Kaya maaari naming gawin vec eigen n dollar sign vectors, comma 3, of [hindi marinig]. Vec. Ay na, tulad ng maaari mong asahan. Pagkatapos sabihin n beses porsiyento beses vec. Kaya dito ay tiyak na hitsura ang resulta tulad ng kung kinuha namin ang mga third eigenvalue dito, na tumutugma sa ang ikatlong eigenvector. Multiply lang nito ang lahat sa ito eigenvector, component-pera, sa pamamagitan ng eigenvalue. At na kung ano ang aasahan naming, dahil iyon ang eigenvalues ​​ay. Ay kahit sino dito hindi kinuha linear algebra? Ang ilang mga tao, OK. I lamang ang iyong mga talino off para sa isang bit. At sa katunayan kung lubos naming eigen n mga halaga ng dollar sign sa 3 beses vec, rin makuha ang parehong bagay. Ito ay na-format nang iba bilang isang hilera vector sa halip ng isang haligi vector, ngunit sang-ayon. At kaya ang mga ito ay karaniwang ang ganda bagay-bagay na maaari naming gawin sa matrices, nagpakita list. Dapat kong ipakita ang ganda mga bagay-bagay tungkol sa mga function na rin. Kaya ni say-- ipaalam [hindi marinig] function, tawag ay hahayaan ito func laban andar n n squared-- talaga, na hindi talaga ang pinakamahusay na. a, b, a squared plus b. Kaya isang bagay tungkol sa function, muli, ay sila hindi na kailangan ng tahasang pahayag return. Kaya maaari mong just-- ang huling pahayag sinusuri ay ang statement ibinalik, o ang halaga ay bumalik. Kaya sa kasong ito, kami lamang ay pagsusuri isang pahayag, isang squared plus b. Iyon ay ang halaga ng default return. Ito ay hindi kailanman Masakit upang ilagay sa bumalik halaga tahasan, lalo na kung ikaw ay pagharap sa isang function ng napaka-komplikadong lohika dumaloy. Ngunit hindi mo na kailangan ang mga ito. Kaya ngayon maaari naming gawin func 5, 1, at ito ay isa lamang kung ano ang gusto mong asahan. Isang bagay pa ang maaari naming gawin, maaari naming talagang gawin func b ay katumbas ng 1, ang isang katumbas ng 5. Kaya kung kami tukuyin kung aling mga numero dito, na argument ang papunta sa kung saan argument sa pag-andar, maaari naming i-flip sa paligid ang mga halagang ito kung saan man namin gusto. Madla: Mayroon bang isang dahilan upang isulat ang mga ito gamit ang b ay katumbas ng bilang laban sa lamang gamit ang mga numero at ang kuwit? CONNER HARRIS: Oo, karaniwang gawin ito kung ikaw ay may mga pag-andar na may maraming mga argumento. Iyon ay maaaring madalas na maging katulad flags na Gusto mo lamang gusto mong gamitin sa mga bihirang okasyon. At sa ganitong paraan maaari kang only-- mo maaaring sumangguni sa mga tiyak na argumento na gusto mong gamitin di-default na halaga para sa, at hindi mo na kailangang isulat ang isang grupo ng mga flag ay katumbas ng false matapos ang mga ito. O maaari kong isulat ito muli gamit isang default na halaga tulad ng b ay katumbas ng 2. At pagkatapos ay maaari kong gawin f func, Makikita ko ang 4, 1 oras na ito. At 17, na kung saan ay 4 nakalapat plus 1, tulad ng maaari mong asahan. Ngunit maaari din ko lang tumawag sa func 4, at magagawa ko na 18, dahil Hindi ko tukuyin b. Kaya b nakukuha ang mga default na halaga ng 2. OK, kaya ngayon kung ikaw ay sumusunod na kasama ang demo, type ang linyang ito sa iyong mga utos prompt at makita kung ano ang dumating up. Sa totoo lang, huwag gawin iyon. I-type ito. Dapat kang makakuha ng isang bagay na katulad nito. Kaya mtcars ay isang itinayo sa data itinakda para sa pagtatanghal na ito mga layunin na nanggagaling with-- na nanggagaling sa pamamagitan ng default sa iyong pamamahagi r. Ito ay isang kalipunan ng mga istatistika mula sa isang 1974 isyu ng magazine Motor Trend ni sa isang bilang ng iba't ibang mga modelo ng kotse. Kaya may mga milya kada galon, cylinders-- Nakalimutan ko kung ano disp is-- lakas-kabayo. Marahil. Kung kamakailan mo lamang Google MT cars, pagkatapos ay isa sa mga unang mga resulta ay mula sa mga opisyal na dokumentasyon r at ito ay ipaliwanag ang lahat ng mga patlang ng data. Kaya timbang is-- wt ay bigat ng kotse sa tonelada. Q sec na ang oras quarter mile. Kaya ngayon maaari naming gawin ang ilang mga bagay na masaya tungkol MT cars ay isang patlang ng data. Kaya maaari naming gawin ang mga bagay tulad ng mga pangalan hilera, Mt cars. At ito ay isang listahan ng lahat ng mga hilera sa ang data set na kung saan ay mga pangalan ng mga sasakyan. Maaari naming gawin colnames, Mt cars na ito. Kung gagawin mo Mt cars, sub-numerical index, tulad ng 2. makuha namin ang pangalawang haligi ng na ito, kung saan ay magiging cylinders. Madla: Ano ang ginawa mo? CONNER HARRIS: I-type Mt cars, bracket e, na ibinigay sa akin ang pangalawang haligi ng Mt cars. O kung gusto naming ng isang hilera, maaari kong i-type mtcars kuwit 2, halimbawa. Iba pang mga round 2 kuwit, tulad na. At na napupunta sa iyong hilera. Ito dito lamang ay nagbibigay sa iyo ng isang haligi, ngunit column bilang vector. Ko lamang natanto ko ngayon nakalimutan upang ipakita ang ilang mga cool na bagay tungkol sa vectors na maaari mong gawin sa mga indeks. Kaya hayaan mo akong gawin iyon ngayon. Kaya sabihin gawin c gets-- paglagay ito sa pause-- 2 beses sa 1 hanggang 10. Kaya c ay lamang ang pagpunta sa maging ang vector 2 hanggang 20. Maaari bang kumuha ng mga sangkap na ito, ang C2. Maaari ko bang ipasa sa isang vector tulad nito, c-- ipaalam sa akin gumamit ng ibang pangalan kaysa c, tulad ng vec c. Talaga, ako ng paggawa ito upang hindi mo na makakuha ng nalilito sa pagitan c bilang vector konstruksiyon function, at pagkatapos ay c bilang isang pangalan ng variable. Vec bracket c 4, 5, 7. Makikita ito makakuha ako out sa ika-apat, ikalima, at pitong elemento ng array. Ang maaari kong gawin vec, ilagay sa isang negatibong index, tulad ng mga negatibong 4. Iyon ay makakakuha ng sa akin mula sa dahil ang ika-apat na elemento. Pagkatapos kung Nais kong gawin hiwa, Ang maaari kong gawin vec 2 hanggang 6. 2 colon 6 ay lamang ng isa pang vector, kung saan ay 2, 3, 4, 5, 6. Spits out na. Kaya kahit papaano, bumalik sa Mt cars. Kaya sabihin gawin ang ilang mga regressions. Ipagpalagay natin na model gets-- sabihin linearly regress-- hindi ko alam. Ni huwag ilakip mtcars, siyempre unang hayaan mo. Kaya [hindi marinig] lm modelo, ni-urong ipaalam milya kada galon sa tilde timbang. At pagkatapos frame data ay mtcars. Kaya model buod. OK, kaya ito ang hitsura ng isang bit kumplikado. Ngunit talaga, nakikita bilang kung namin subukan upang ipahayag milya kada galon bilang linear function ng timbang, pagkatapos ay nakuha namin ang linyang ito dito, saan intercepts sa 37.28. 37.28 ay ang panteorya milya bawat galon ng isang kotse na may bigat na zero. At pagkatapos ay para sa bawat karagdagang tonelada, mong magpatumba tungkol sa limang milya kada galon off na. Pareho sa mga coefficients mo maaaring makita, karaniwang mga error doon. At sila ay lubhang makabuluhan sa istatistika. Kaya maaari naming maging napaka tiyak na 1 e 10 na ang mga negatibong 10. Kaya 1 beses isang bagay upang ang mga negatibong 10, na kung gumawa ka ng isang mas mabibigat na sasakyan, ito ay magkakaroon ng mas masahol milya kada galon. O maaari naming subukan ang ilang iba pang mga modelo. Tulad ng sa halip ng regressing ito sa timbang, urong ng ito sa pag-log ng timbang ipaalam, dahil siguro sa mabisang pagbaba on mileage sa anuman ay hindi linear. Ito ay nagbigay sa amin ng isang r nakalapat ng 0.7528. Kaya sabihin subukan ito. Ang oras na ito ay hahayaan gawin ang isang iba't-ibang mga variable, masyadong. Model2. Kaya buod, model2. Lahat ng karapatan, kaya muli, kami ay nakuha ang aming pinakamahusay na akma linya dito. At ito time-- ito ay nagsasabi, talaga na ang bawat panahon na kayo dagdagan ang bigat ng isang kotse sa pamamagitan ng isang kadahilanan ng e nawala mo ito sa maraming mga milya kada galon. At kaya oras na ito ang aming mga tira standard error it-- na hindi bagay, talaga. Ang tira standard error ay talaga lang ang standard na error na iyong iniwan pagkatapos mong mag-alis ng linya ng trend. At ang aming r nakalapat dito ay 0.81, kung saan ay isang bit mas mahusay kaysa sa kung ano ang kami ay nagkaroon ng bago, 0.52. At kaya ngayon sabihin magdagdag ng isang kataga na ito pagbabalik. Kaya sabihin urong milya kada galon ang pareho sa mga log ng mga weights at, sabihin gawin, q miles ipaalam, quarter time na milya. OK, ito ay dapat magkaroon the-- lahat ng karapatan, qsec. Qsec. Actually-- sorry, ano? Ipaalam sa akin ang tawag na ito sa isang bagay ibang tao bukod sa model2. Hayaan akong itawag sa model3. At kaya ngayon maaari naming gawin buod model3. At kaya muli, ito ay isa lamang kung ano ang maaari mong asahan. Mayroon kang positibong maharang. Ang epektibong pagtaas timbang ay negatibo. At ang epektibong pagtaas quarter milya oras ay positibo, ngunit kahit mas mababa ito kaysa sa timbang. Ngayon intuitively, maaari mong magkaroon ng kahulugan ng ito sa pamamagitan ng pagsasabi sa tingin tungkol sa sports cars. May isang napakabilis na acceleration, isang napaka-ikling oras quarter mile. Sila ay pagpunta rin na gumamit ng mas maraming gas, samantalang mas kapansin-pansin ang mga kotse ay pagpunta upang magkaroon ng mas mabagal na bilis, mas mataas beses kapat na milya, at gumamit ng mas kaunting gas ,, kaya mas mataas milya kada galon. Great. At kaya ngayon ay ang panahon para I-plot ang isang bagay tulad nito. Kaya sabihin do-- kaya hubad buto ang maaari naming gawin plots-- dahil naka-attach ko ang data frame na ito before-- maaari naming lamang gawin plots, wt mpg. Gawin itong isang bit mas malaki. Doon, talaga kami ay may isang scatter plot, ngunit ang mga puntos mga uri ng matapang na upang makita na ito. Hindi ko matandaan biglaan kung ano ang syntax ay para sa pagpapalit ng mga balangkas. Kaya ako hulaan ito ay magiging isang magandang panahon upang ilabas, may isang napakabuti builtin tulong tampok na ito, sa tulong quotes gumana name. Susubukan naming ilabas ang talaga anumang gusto mo. Isip ko na talagang gawin ito type katumbas p para sa mga puntos plots. Ba na baguhin ang anumang bagay? At hindi, hindi talaga. Lahat tama. Para sa ilang mga dahilan, kapag ginawa ko ito sa aking sariling computer kanina, lahat ng mga scatter puntos ay mas malinaw. Sa papaano mang paraan, ay ang mga scatter uri ng nakikita? May isa doon. Ang ilang doon, ilang doon. Maaari mong uri ng makita ang mga ito, i-right? Kaya kung nais namin na magdagdag ng isang pinakamahusay na angkop na linya sa balangkas na ito dito, kung saan ay isang bit hubad bones-- hayaan mo akong gawin itong isang bit nicer. Main katumbas kumpara timbang. Milya bawat galon. Muli, maaari mong makita kung paano ang mga kapaki-pakinabang opsyonal na argumento ay dito sa din hindi pagkakaroon upang ilagay ang mga bagay sa isang tiyak na order ng mga pangangatuwiran keyboard kapag ikaw ay may plots, dahil mga kumuha ng isang pulutong ng mga argumento. Xlab katumbas na timbang, timbang, tonelada. Lahat tama. OK, oo, ang aparato na ito ay ang pagiging isang bit nakakainis. Ngunit maaari mong makita ang uri ng mga up doon, mayroong isang pamagat graph sa gilid. Higit dito there's-- sa ibaba dito may mga label axis. Hindi ko matandaan biglaan kung ano ang mga utos ars-- ano ang mga function ay upang madagdagan ang laki ng mga etiketa at mga pamagat, ngunit ang mga ito doon. At kaya kung gusto naming idagdag ang pinakamahusay na akma line, maaari naming gawin isang bagay tulad ng ko may syntax na nakasulat dito. Kaya tandaan idagdag lamang namin model ay mpg, timbang, mtcars. At kaya kung gusto ko upang magdagdag ng isang pinakamahusay na akma line, maaari kong gawin a, model b linya. And boom, kami ay may isang pinakamahusay na akma linya. Ito ay uri ng husto upang makita muli. Ako ay lubos na paumanhin tungkol sa paghihirap teknolohikal. Ngunit ito ay tumatakbo talaga itaas na kaliwang sa ilalim kanan. At kung ang laki ay mas malaki, maaari mong makita ang na ang punto ng pagtawid ay kung ano ang maaari mong hanapin mula sa mga istatistika ng buod kung nag-type ka ng mga modelo ng buod. OK, kaya Umaasa ako makakakuha ng lahat ng tao isang bagay ng isang katinuan kung ano R ay, kung ano ito ay mabuti para sa. Maaari kang gumawa ng malayo nicer plots sa ito sa iyong sariling oras, kung gusto mo. Kaya ang mga banyagang function na interface. Ito ang isang bagay na hindi karaniwan sakop sa pambungad na mga aralin o pambungad na kahit ano para sa r. Ito ay malamang na ikaw ay pagpunta sa kailangan ito hindi. Gayunpaman, natagpuan ko ito kapaki-pakinabang sa aking sariling mga proyekto sa nakaraan. At walang mabuting tutorial para sa mga ito online. Kaya ako lamang ang pagpunta sa sumugod ka sa lahat ng ito sa pamamagitan ng at pagkatapos ikaw ay libre upang mag-iwan. At upang ang mga banyagang function na interface ay kung ano ang maaari mong gamitin upang tumawag out upang makita ang mga function na may isang R. Sa loob, R ay binuo sa arithmetic C. R ay lamang C 64-bit lumulutang point arithmetic, na kung saan ay i-type double [hindi marinig]. At baka gusto mong gawin na ito para sa isang grupo ng mga kadahilanan. Para sa isa, R ay kahulugan, ito ay hindi naipon pababa sa machine code. Kaya maaari mong muling isulat ang iyong inner loop sa C at pagkatapos ay kumuha ang bentahe ng paggamit R. Tulad ito ay isang bit mas maginhawa kaysa sa C. Ito ay may mas mahusay na graphing pasilidad at watnat. At habang pa rin ng kakayahang makakuha ng pinakamataas na tulin sa labas ng inner loop, na kung saan ay kung saan talagang kailangan mo ito. Reusing umiiral C aklatan, na mahalaga din. Kung mayroon kang ilang C library para sa tulad ng, Hindi ko alam, Fourier transform, o ilang mga napaka Arkien procedure istatistika na ginagamit sa mataas na enerhiya astrophysics o isang bagay, hindi ko alam. Mataas na enerhiya astrophysics ay hindi kahit isang tingin, tingin ko. Ngunit maaari mong gawin iyon sa halip ng pagkakaroon sumulat ng isang katutubong R port ng mga ito. At sa the-- at muli, tulad ng kung ikaw Tumingin sa karamihan ng default aklatan R, sa internals, ang internals ay pupunta sa paggamit ng function na foreign interface napaka malawakan. Makikita nila ang mga bagay tulad Fourier transform o computing ugnayan coefficients nakasulat sa C, at ang mga ito lamang magkaroon ng R wrappers sa kanilang paligid. Ang interface ay isang mahirap bit. Sa tingin ko kahirapan nito ay pinalaking sa isang pulutong ng mga tagubilin na makikita ninyo. Ngunit gayon pa man, ito ay isang bit nakalilito. At hindi ko pa magawang makahanap ng isang mahusay na tutorial para dito, kaya ito ay ito ngayon. Muli, ito buong segment ay higit pa para sa mamaya reference. Huwag mag-alala tungkol sa pagkopya lahat ng bagay down ngayon. Kaya ang mga sumusunod na mga tagubilin ay para sa Unix-tulad ng sistema, Linux, BSD, OS X. Hindi ko alam kung paano ito gumagana sa Windows, ngunit huwag gawin lamang ang iyong huling proyekto sa Windows. Ikaw ay talagang hindi nais na. Unix ay lubhang mas mahusay na set up para sa mga kaswal na programming. Kaya, karaniwang mga banyagang function na interface. Kung nais mong magsulat ng isang C pag-andar para sa paggamit na may R, ito ay upang gawin ang lahat ng argumento bilang payo. Kaya para sa mga isahang mga halaga, ito ang ibig sabihin nito ay itinuturo sa mga halaga. Para sa mga array, ito ay isang pointer sa unang elemento, na kung saan ay kung ano ang tunay na ibig sabihin ng mga pangalan array. Muli, ito ay isang bagay na dapat mong magkaroon ng pretty ganap down pagkatapos p set lima. Pangalan Array ay lamang payo sa unang elemento, Ang uri ng lumulutang-point ay double. At ang iyong mga function ay may upang bumalik walang bisa. Ang tanging paraan na maaari ito talagang sabihin sa R ​​kung ano ang nangyari ay sa pamamagitan ng pagbabago ng memory na ibinigay R na ito sa pamamagitan ng function na foreign interface. Kaya ako ng nakasulat na ito halimbawa dito, ito ay isang function na computes paggamit tuldok produkto ng dalawang vectors. Ito ay tumatagal ng dalawang argumento, vec1, vec2, na kung saan ay ang mga vectors sa kanilang sarili, at pagkatapos n, kung saan ay isang haba, dahil muli, R ay itinayo sa [hindi marinig] upang malaman kung ang haba ng vectors, ngunit C ay hindi. Sa C, vectors ay isang arbitrary delimited tipak ng memory. Kaya ang paraan na kaya mo kalkulahin produkto dot ay naka-set na lang this out parameter sa zero at pagkatapos ay ulitin sa pamamagitan ng mula sa 1 upang lagyan ng star n, dahil n ay isang pointer sa ang haba, idagdag lamang ang isang bagay na this out parameter. At maaari itong maging mahusay na kasanayan kung ikaw ay pagpunta sa gawin na ito upang magsulat ng dalawang magkahiwalay C function. Isa sa mga ito has-- Isa sa mga ito lamang tumatagal ng mga argumento at ang mga uri na kalimitan sila ay sa C. Kaya ito ay tumatagal ng isang array argumento bilang payo. Ngunit arguments single-halaga tulad n, ito lamang ay tumatagal ng mga halaga sa pamamagitan ng kopya, walang mga payo. At pagkatapos ay ito ay hindi [Hindi marinig] out pointer. At pagkatapos ay maaari kang magkaroon ng ibang, karaniwang, wrapper ng function na talaga humahawak ng mga kinakailangan ng pag-andar foreign interface para sa iyo. Ang paraan mo tawag na ito sa R ​​ay, sa sandaling mayroon ka sa iyong function na nakasulat sa C, nagta-type ka R cmd shlib, R utos shared library, foo dot c, o kahit anong iyong pangalan ng file ay, at ang OS shell wala sa R ​​terminal. At ito ay lumikha ng isang library na tinatawag na foo tuldok ito. At pagkatapos ay maaari mong i-load ito sa aming script o interactive may load utos dyn dot. Pagkatapos doon ay isang function sa R tinatawag dot c. Ito ay tumatagal ng mga argumento na muna ang pangalan ng function sa C na nais mong tawagan. At pagkatapos ang lahat ng mga parameter sa na function, mayroon sila upang maging sa tamang pagkakasunod-sunod. Kailangan mong gamitin ang mga uri pamimilit pag-andar bilang integer, tulad ng double, tulad ng mga karakter, at ang lohikal. At pagkatapos ay kapag ito ay nagbabalik ng mga list, na muli ay isa lamang isang kaugnay na hanay ng mga parameter pangalan at ang mga halaga pagkatapos na tumakbo ang function. Kaya sa kasong ito, dahil dot udyok ay argumento vec1, vec2, at int n, n out. Upang dot c kami ay may tuldok na mag-udyok, ang pangalan ng function kami ay pagtawag, vec1, vec2, uri pumilit. Ang haba ng mag vector, Ako lang ang pinili vec1 nagkataon. Ito ay magiging mas matatag na sabihin s integer haba min ng vec1, haba vec2. Pagkatapos lamang bilang double zero, dahil hindi namin talagang aalaga kung ano ang napupunta sa out parameter dahil kami setting na ito sa zero pa rin. At pagkatapos ang mga resulta ay magiging isang malaking kaugnay na hanay ng mga karaniwang vec1 ay kahit na ano, vec2 ay anumang. Ngunit kami ay interesado sa out, upang maaari naming makakuha ng na out. Ito ay muli, isang napaka halimbawa toy ng isang dayuhang function na interface. Ngunit kung mayroon kang mag-compute dot mga produkto ng napakalaking vectors sa loop, o kung kailangan mong gawin ibang bagay sa isang loop, at hindi mo nais na umaasa sa R, na kung saan ay mayroon ng isang piraso ng overhead binuo sa mga ito, ito ay maaaring maging kapaki-pakinabang. Muli, ito ay hindi karaniwan ng isang pambungad na topic na R. Ito ay hindi masyadong mahusay na dokumentado. Tingin lang ako sa kabilang ang mga ito dahil Natagpuan ko itong kapaki-pakinabang sa nakaraan. Kaya, masamang gawi. Nabanggit ko na mayroong isang para sa loop sa function. Sa pangkalahatan ay hindi mo dapat, sa ang wika, hindi ito ginagamit. Batay sa kung paano ipinapatupad R-ulit sa loob, ito ay maaaring maging mabagal. Sila lamang din tumingin pangit. R humahawak vectors napaka mabuti, sa gayon malimit na hindi mo kailangang gamitin ito. Pagkatapos ay maaari mong karaniwang palitan ang isang vector madalas na may mga pag-andar na tinatawag na mataas function order, Map, Bawasan, Maghanap, o Filter. Kukunin ko na lang magbigay ng ilang mga halimbawa ng kung ano ang mga dapat gawin. Mapa ay isang mas mataas na pag-andar ng order dahil ito ay tumatagal ng isang pag-andar bilang isang argument. Kaya maaari mong bigyan ito ng isang function, maaari mong bigyan ito ng isang array, at ito ay nalalapat sa mga function sa bawat elemento ng array at bumalik sa bagong array. Bawasan, talaga kang magbigay ng ito ay isang array, bigyan mo ito isang function na tumatagal ng dalawang argumento. Ito ay una, ang mga mag-aplay ang mga function unang argumento sa ilang mga halaga ng starter. Pagkatapos sa na resulta sa pangalawang. Pagkatapos sa resultang iyon sa ikatlong, pagkatapos ay sa na resulta sa ika-apat. At pagkatapos ay bumalik kapag ito ay makakakuha ng hanggang sa dulo. Kaya halimbawa, kung nais mong compute ang kabuuan ng lahat ng mga elemento sa isang array, kaysa sa maaari mong tawagan mabawasan gamit ang [hindi marinig] mabawasan isang karagdagan function, tulad ng func a, b, magbalik ng plus b. At pagkatapos ay simulan ang isang halaga ng 0. At lahat ng ito, maaari mong mahanap ang mga ito inilarawan sa dokumentasyon R, sa anumang aklat-aralin sa functional programming. Mayroon din ng ganitong klase ng mga function na tinatawag na mag-apply pag-andar, kung saan ako do not na ang mga ito medyo mahirap ipaliwanag, ngunit kung titingnan mo sa [hindi marinig] naka-book na nabanggit ko sa simula, Ipinaliliwanag niya ang mga ito nang mahusay sa kanyang apendiks sa R ​​programming. Higit pa tungkol sa mga kasanayan, pagdagdag sa vectors. Oo? Isip ko ay tama na. Sa unang linya, vec arrow, arrow na hindi dapat doon. Maaari mong italaga sa isang vector, muli, sa pamamagitan tumagal ang haba nito plus 1 at pagtatalaga ng ilang mga halaga na iyon. Iyon ay pahabain ang vector, o mo maaaring gawin vec equals c, vec newvalue. Muli, kung ikaw ay gumagamit ng C sa isang argument bilang vector, ang resultang hierarchy makakakuha pipi. Kaya makikita lamang kang makakuha ng isang vector na palugit sa pamamagitan ng 1. Huwag kailanman gawin ito. Ang dahilan kung bakit mo hindi dapat gawin ito ay na ito. Kapag maglaan ka ng isang vector, ito ito ay nagbibigay ng isang tiyak na tipak ng memory. Kung tataasan mo na sukat vector, ito ay upang reallocate ang vector sa ibang lugar. At kaya muling paglalaan ay medyo mahal. Hindi ko ay pumunta sa mga detalye ng kung paano memory allocators ay ipinatupad sa antas ng operating system, ngunit ito ay tumatagal ng maraming oras upang mahanap ang isang bagong tipak ng memory. At din, kung ikaw ay re-paglaan ng maraming at maraming ng progressively mas malaking chunks, tapusin mo up na may isang bagay na tinatawag na memory piraso, kung saan ang mga magagamit na memory ay nahahati sa maraming maliit na mga bloke sa memory allocators punto ng view. At ito ay makakakuha ng mas mahirap at mas mahirap upang maghanap ng memory para sa iba pang mga bagay. Kaya sa halip, kung kailangan mong gawin ito, kung ang kailangan mo upang maging isang vector mula sa isang dulo sa susunod na, sa halip ng pagdagdag sa mga ito Patuloy, dapat mong i-pre-allocate ito. Vec arrow, haba vector ay katumbas ng 1000, o ano pa man. At pagkatapos ay maaari mo lamang magtalaga sa mga halaga ng isa sa mga vector ni isang oras matapos mong inilalaan ito nang isang beses. Ako ang bumangga sa mga ito, muli, ang aking trabaho summer kapag ako ay sumusulat NRA kaugalian equation Solver. Hindi symbolic numerical. Ang ideya ay na sa sandaling ikaw ay isang halaga para sa iyong mga solusyon, gamitin mo na mag-compute ang kasunod. Kaya natural ang aking walang muwang pagyuko ay sabihin OK, kaya ko na magsimula sa isang vector na ang isang malaking halaga. Compute mula sa na ang susunod na halaga na napupunta papunta sa aking solusyon vector, at ikakabit na. Lumikha ng isang bagay pa, isama na. Ito napaka, napakabagal nagpunta. At minsan napagtanto ko na ito at binago ko ang aking sistema mula sa pagdagdag sa ang vector tulad ng 10,000 sa 100,000 beses, na lang pre-paglaan ng isang vector at tumatakbo lamang sa mga iyon. Nakatanggap ako ng higit sa 1,000 fold speed up. Kaya ito ay isang napaka-pangkaraniwan bitag para sa R ​​programming. Kung kailangan mo upang bumuo ng isang vector piraso ng piraso, pre-allocate ito. Isa pang mga karaniwang trip up-- ito ay ang aking huling slide, hindi worry-- ay paghawak ng error. R, upang maging lantad, ay hindi talagang gawin ito nang mahusay. Mayroong maraming mga problema na maaaring i-crop up. Halimbawa, kung ikaw ay makakuha ng isang array o isang vector sa labas ng isang function na kayo ay umaasa sa isang solong halaga na dumating mula sa, o vice versa, at pumasa ka na sa isang function na ikaw ay nagsulat umaasa sa isang solong halaga, na maaaring maging isang problema. Ang ilang function bumalik null tulad ng ginagawa ng, sabihin nating, pagbabasa mula sa isang nonexistent key sa isang listahan. Ngunit null ay hindi tulad ng C kung saan kung subukan mong basahin mula sa isang lumang pointer, [hindi marinig] na null pointer, ito seg lamang pagkakamali at kung ikaw ay nasa iyong debugger ito ay nagsasabi sa iyo nang eksakto kung nasaan ka. Sa halip, null ay do-- function ay gawin mahuhulaan bagay kung ang mga ito dala null. Tulad ng kung ikaw ay ipinasa max null, ito ay magbibigay sa iyo ng mga negatibong infinity. At ito, oo. At kaya ito nangyari sa akin isang beses kapag ako ay nagbago ng grupo ng mga patlang sa aking listahan ng istraktura sabay na walang pagbabago ng mga ito sa ibang lugar kapag ako ay pagbabasa mula sa kanila. At pagkatapos ay nakuha ko ang lahat ng uri ng mga random resulta infinity pagtatabas up at ako ay walang ideya kung saan sila nanggaling. At sa kasamaang palad, may walang tunay R mahigpit na mode kung saan maaari mong sabihin kung ang isang bagay Mukhang maaaring ito ay isang error, ihinto lamang doon upang maaari kong maging disiplinahin at ayusin na. Gayunpaman, mayroong isang bagay tinatawag na stop kung hindi. Ito ay katumbas ng igiit C, kung na-uusapang tungkol sa na. Hindi sa tingin ko C igiit ay isang panayam topic, ngunit ang iyong mga lider ng seksyon maaaring wala na sa ibabaw nito. At itigil kung hindi talaga tumatagal ng anumang tambalan, kaya ang anumang mga pahayag na ay maaaring maging totoo o hindi. At kung ito ay hindi totoo, ito hihinto programa nito. Ito ay nagsasabi sa iyo kung ano mismo ka linya ay sa at kung ano ang kalagayan ay hindi nagtagumpay. At ito lubhang kapaki-pakinabang, halimbawa, kaliwanagan ng isip checking, function input. Kaya kung mayroon kang isang function at asahan mo, sabihin nating, kung ikaw ay dapat magbigay sa akin ng isang petsa, gusto ko ang petsa ay lamang ng isang vector ng haba 1 at saanman sa pagitan ng 1 at 31. At kung hindi, alam ko isang bagay ay nawala maling. At pinili kong tumigil doon bago ito may random kumatok sa epekto sa code na ito ay mas mahirap na bakas sa pamamagitan ng. Kaya na ang isa sa mga posibleng gamitin para sa stop kung hindi. Sa papaano mang paraan, OK. Kaya iyon ang katapusan. Salamat sa iyo kaya magkano para sa pagdating. Ako ay ranggo amateur na ito. Kaya paumanhin kung ikaw ay nababato o naguguluhan o kung ano ang mayroon ka. Ikinagagalak kong kumuha ng mga katanungan sa pamamagitan ng email ko sa connorharris@college.harvard.edu. Dumadaan ang din para sa lahat ng tao nanonood ito nakatira o sa susunod. Gayundin, kahit na ako ay hindi ako isang TF, Ako din napaka handang maglingkod bilang isang hindi opisyal na tagapayo para sa kahit sinuman na gamit R sa isang pangwakas na proyekto. Kung gusto mo na iyon, pagkatapos ay makipag-usap lamang sa iyong TF at pagkatapos ay sumulat sa akin ng isang email upang Alam ko kung ano ang gumagawa ka sa at para makita ako magse-set up ng pulong beses sa iyo kung gusto mo. Kaya muli, maraming salamat. Umaasa ako sa iyo Tatangkilikin ang mga ito. Madla: [hindi marinig]. CONNER HARRIS: Siyempre. Madla: Anong uri ng isang proyekto Gusto ng isang CS ng mag-aaral na gamitin ang R para sa? CONNER HARRIS: Kaya kung hindi ka na gawin isang bagay na pulos sa pagmimina ng data, halimbawa, at doon maraming mga bagay maaari mong gawin sa mga na may data pagmimina at pag-aaral ng machine. Baka gusto mong gamitin ang R para sa isang bahagi ng isang bagay. Isinampa ko, na orihinal na, ang halimbawa ng kung ikaw ay sumusulat ng isang website at gusto mong patakbuhin ang automated statistical pagsusuri ng iyong server logs sa isang tiyak na oras bawat araw, na maaaring maging isang bagay na napakadaling gawin sa isang maikling lamang R script na maaari mong iskedyul upang magpatakbo ng gabi-gabi, halimbawa. At ako sigurado, kung mayroong anumang kadahilanan na iyong Gusto istatistika o kakayahan graphing at magkaroon ng ganitong run awtomatikong halip ng pagkakaroon upang makipag-ugnayan may mga bagay sa Excel, halimbawa, na ang isang bagay baka gusto mong gamitin ang R para sa. Kaya ang anumang higit pang mga tanong bago ako umalis? Hindi? Lahat ng mga karapatan, well, Muli, salamat sa inyo para pagdating.