CONNOR HARRIS: Still I rasa beberapa video yang menarik dihasilkan oleh sebuah syarikat perunding profesional yang menggunakan R banyak dalam tugasnya. Pencerita: Apa yang di belakang statistik, analisis, dan penggambaran saintis data terang bahawa hari ini dan pemimpin perniagaan bergantung kepada untuk membuat keputusan yang berkuasa? Anda mungkin tidak selalu melihatnya. Tetapi ianya ada. Ia dipanggil R, sumber terbuka yang R-- bahasa pengaturcaraan statistik bahawa pakar-pakar data dunia atas penggunaan untuk segala-galanya dari luas pemetaan sosial dan trend pemasaran dalam talian untuk membangunkan kewangan dan iklim model yang membantu memacu ekonomi kita dan masyarakat. Tetapi apa sebenarnya R dan di mana R bermula? Well asalnya, R mula di sini dengan dua profesor yang mahu statistik yang lebih baik platform untuk pelajar mereka. Jadi mereka mencipta satu model selepas bahasa statistik S. Mereka, bersama-sama dengan lain-lain lagi, disimpan bekerja pada dan menggunakan R, mewujudkan alat-alat untuk R dan mencari tempat permohonan baru untuk R setiap hari. Terima kasih kepada ini adalah usaha masyarakat di seluruh dunia, R disimpan berkembang dengan beribu-ribu perpustakaan dibuat pengguna dibina untuk meningkatkan fungsi R dan pengesahan kualiti orang ramai-sumber dan sokongan yang paling diiktiraf pemimpin industri dalam setiap bidang yang menggunakan R. Yang besar, kerana R adalah yang terbaik pada apa yang dilakukan. Tunas pakar-pakar dengan cepat dan mudah mentafsir, berinteraksi dengan, dan menggambarkan data yang menunjukkan mereka dengan cepat masyarakat yang semakin meningkat dari pengguna R di seluruh dunia dan melihat bagaimana sumber terbuka R terus membentuk masa depan statistik analisis dan sains data. CONNOR HARRIS: OK, yang besar. Jadi persembahan saya sendiri akan menjadi sedikit lebih tenang. Ia tidak akan melibatkan sebanyak itu Muzik latar belakang yang menarik. Tetapi seperti yang anda lihat dalam video, R adalah jenis daripada bahasa program kegunaan am. Tetapi ia dibuat kebanyakannya untuk kerja-kerja statistik. Jadi ia direka untuk statistik, untuk analisis data, untuk perlombongan data. Dan supaya anda boleh melihat ini dalam banyak pilihan reka bentuk yang pembuat R dibuat. Ia direka untuk sebahagian besarnya, orang yang tidak pakar-pakar dalam pengaturcaraan, yang hanya mengambil program di sebelah supaya mereka boleh melakukan kerja mereka dalam bidang sains sosial atau dalam statistik atau apa sahaja. Ia mempunyai banyak sangat perbezaan yang penting dari C. Tetapi sintaks dan paradigma bahawa ia menggunakan secara meluas yang sama. Dan anda perlu berasa cukup banyak di rumah hak off kelawar. Ia merupakan satu bahasa penting. Jangan bimbang terlalu banyak tentang itu jika anda tidak tahu istilah. Tetapi ada perbezaan yang antara penting, perisytiharan, dan berfungsi. Imperative hanya bermakna anda membuat kenyataan-kenyataan yang pada dasarnya menyuruh. Dan kemudian jurubahasa atau yang komputer mengikuti mereka satu demi satu. Ia lemah ditaip, terdapat tiada perisytiharan taip R. Dan kemudian garis antara pelbagai jenis agak lebih longgar daripada mereka berada dalam C, sebagai contoh. Dan seperti yang saya katakan terdapat Kemudahan yang sangat luas untuk grafik, untuk statistik analisis, untuk perlombongan data. Ini adalah kedua-dua yang dibina ke dalam bahasa dan, kerana video tersebut, beribu-ribu perpustakaan pihak ketiga yang Muat turun dan gunakan secara percuma syarat-syarat lesen yang sangat longgar. Jadi secara umum, saya akan mengesyorkan bahawa anda melihat kedua buku ini jika anda akan bekerja pada R. Satu daripada mereka adalah rasmi R pemula membimbing. Ia diselenggarakan oleh pemaju teras R. Anda boleh memuat turun lagi, bebas daripada mengenakan dan secara sah di link yang di sana. Semua kuliah ini akan pergi di internet, di laman web CS50 selepas ini dilakukan. Jadi tidak perlu untuk menyalin perkara turun dgn penuh ketakutan. Yang satu lagi ialah buku teks oleh Cosma Shalizi, yang merupakan seorang profesor statistik di Carnegie Mellon, yang dipanggil Advanced Data Analisis daripada Point of View rendah. Ini bukan merupakan sebuah buku R. Ia sebuah buku statistik dan ia adalah sebuah buku analisis data. Tetapi ia sangat mudah untuk orang yang mempunyai jumlah sedikit statistik pengetahuan. Saya tidak pernah mengambil kursus formal. Saya hanya tahu bit dan keping dari pelbagai subjek bersekutu bahawa saya telah mengambil kursus dalam. Dan saya dapat memahami ia dengan baik. Semua angka diberi dalam R. Mereka adalah dibuat dalam R dan mereka juga mempunyai penyenaraian kod bawah setiap angka yang memberitahu anda bagaimana anda membuat setiap angka dengan kod R. Dan itu sangat berguna jika anda cuba untuk mencontohi beberapa angka yang anda lihat di dalam buku. Dan turun lagi bebas stat.cmu.edu/cshalizi/ Maaf, yang perlu mengurangkan cshalizi tilde. Saya akan pastikan untuk membetulkan yang apabila slaid rasmi naik. / ADAfaEPoV yang hanya singkatan tajuk buku ini. Jadi umum caveats-- R mempunyai banyak keupayaan. Saya hanya akan dapat menampung permukaan banyak perkara. Juga bahagian pertama seminar akan menjadi sesuatu tempat pembuangan data. Saya agak maaf tentang itu. Pada asasnya, saya akan memperkenalkan anda kepada banyak perkara hak off kelawar, pergi secepat yang mungkin. Dan kemudian kita dapat bahagian yang menyeronokkan, yang demo di mana saya boleh menunjukkan kesemuanya yang kita telah bercakap tentang di skrin. Dan anda boleh bermain-main sendiri. Jadi ada akan menjadi banyak barangan teknikal dibuang di sini. Jangan bimbang tentang menyalin semua yang turun. Oleh kerana A, anda boleh mendapatkan semua barangan di laman web CS50 kemudian. Dan B, ia tidak benar-benar bahawa yang penting menghafal ini dari slaid. Ia lebih penting bahawa anda mendapatkan beberapa kemudahan intuitif dengannya dan yang datang dari hanya bermain-main. Jadi mengapa menggunakan R? Pada asasnya, jika anda mempunyai projek yang melibatkan perlombongan set data yang besar, data visualisasi, anda perlu menggunakan R. Jika anda melakukan analisis statistik rumit, yang akan menjadi sukar untuk dalam Excel, sebagai contoh, ia akan juga good-- juga jika anda lakukan statistik analisis yang yang automatik. Katakan anda mengekalkan laman web. Dan anda mahu membaca log pelayan setiap hari dan menyusun senarai beberapa, seperti negara teratas yang pengguna anda datang dari, beberapa statistik ringkasan kepada berapa lama mereka menghabiskan di laman web anda atau apa sahaja. Dan anda mahu menjalankan ini setiap hari. Sekarang jika anda melakukan ini dalam Excel, anda akan mempunyai untuk pergi ke log pelayan anda, mengimport ke dalam Excel spreadsheet data, menjalankan semua analisis secara manual. Dengan R, anda hanya boleh menulis satu skrip. Berjadual untuk berjalan setiap hari daripada sistem pengendalian anda. Dan kemudian setiap malam pada 2:00 AM, atau apabila anda menjadualkan ia untuk menjalankan, ia akan melihat melalui anda trafik internet untuk hari itu. Dan kemudian oleh hari esok, anda akan mempunyai berkilat, laporan baru ini atau apa sahaja dengan semua maklumat yang anda minta. Jadi, pada asasnya R adalah untuk Cisco pengaturcaraan berbanding analisis Cisco. Awal dilakukan. Mari kita masuk ke dalam perkara yang sebenar. Jadi, ada tiga sebenar jenis dalam bahasa. Ada jenis angka. Ada semacam perbezaan antara bilangan bulat dan mata terapung, tetapi tidak benar-benar. Ada watak yang menaip, yang merupakan tali. Dan ada yang logik menaip, yang Booleans. Dan anda boleh menukar antara jenis menggunakan fungsi-fungsi ini sebagai angka, sebagai watak, kerana logik. Jika anda membuat panggilan, sebagai contoh, sebagai angka pada tali, ia akan cuba untuk membaca rentetan yang seperti nombor, dengan cara yang sama yang a2i dan scanf lakukan, dan C. Jika anda memanggil sebagai berangka pada benar atau palsu ia akan bertukar kepada 1 atau 0. Jika anda membuat panggilan sebagai watak pada apa-apa IA AKAN menukar yang ke perwakilan rentetan. Dan kemudian ada vektor dan matriks. Jadi vektor pada dasarnya 1 tatasusunan dimensi. Mereka adalah apa yang kita panggil tatasusunan dalam C. Matrices, 2 tatasusunan dimensi. Dan kemudian yang lebih tinggi tatasusunan dimensi yang anda boleh 3, 4, 5 dimensi atau apa sahaja nilai angka, tali, nilai-nilai logik. Anda juga mempunyai senarai yang sejenis pelbagai bersekutu. Saya akan masuk ke dalam yang sedikit. Jadi satu perkara penting yang dengan lawatan-lawatan orang dalam R adalah bahawa tidak ada sebenar, jenis atom yang tulen. Tidak ada perbezaan sebenar antara nombor, seperti nilai berangka, dan senarai nilai angka. Nilai angka sebenarnya yang sama seperti vektor panjang 1. Dan ini mempunyai beberapa implikasi yang penting. Satu, ia bermakna bahawa anda boleh lakukan perkara yang sangat mudah yang melibatkan seperti menambah nombor kepada vektor. R akan pada dasarnya angka apa yang anda maksudkan dengan itu. Dan saya akan mendapat itu dalam satu saat. Ia juga bermakna bahawa tidak ada cara untuk jenis yang checker-- setakat sesuatu yang seperti itu wujud dalam R-- untuk memberitahu apabila anda telah diluluskan pada nilai tunggal apabila ia menjangka pelbagai atau sebaliknya. Dan yang boleh menyebabkan beberapa ganjil masalah yang saya berlari ke dalam apabila Saya menggunakan R semasa kerja musim panas saya. Dan tidak ada array bercampur jenis. Jadi, anda tidak boleh mempunyai array adalah unsur-unsur yang pertama, saya tidak tahu, rentetan "John" dan Elemen kedua adalah nombor 42. Jika anda cuba untuk berbuat demikian, maka anda akan mendapat segala-galanya hanya ditukar kepada rentetan. Oleh itu, kita mempunyai rentetan John, tali 42. Sintaksis begitu luar biasa features-- paling R sintaks hampir sama dengan C. Terdapat beberapa perbezaan yang penting. Menaip adalah sangat lemah. Jadi tidak ada perisytiharan berubah-ubah. Tugasan menggunakan pelik pengendali ralat kurang daripada sempang. Komen adalah dengan tanda hash. Saya rasa sekarang hari kita panggil ia hashtag walaupun itu bukan benar-benar tidak accurate-- yang palang berganda. Sisa risau, dengan tanda-tanda %%. Bahagian integer adalah dengan% /% yang sangat sukar untuk dibaca apabila ia dijangka pada skrin. Anda boleh mendapatkan julat bilangan bulat dengan kolon. Jadi 2,5 akan memberikan anda vektor semua nombor 2 hingga 5. Tatasusunan adalah satu-diindeks, yang skru ramai orang sehingga jika mereka dari lebih bahasa pengaturcaraan biasa, seperti C, di mana kebanyakan perkara-perkara yang sifar diindeks. Sekali lagi, ini adalah di mana warisan R sebagai bahasa seperti tidak pengaturcara profesional datang. Jika anda ahli sosiologi atau seorang pakar ekonomi atau sesuatu dan anda cuba untuk menggunakan R pada dasarnya sebagai adjung yang untuk anda lebih penting kerja profesional, anda akan mencari satu mengindeks sedikit lebih semula jadi. Kerana anda mula mengira pada 1 dalam kehidupan seharian, bukan 0. For-gelung, ini adalah sama dengan foreach yang membina dalam PHP, yang anda akan dapat belajar dalam- cantik tidak lama lagi. Yang adalah untuk nilai dalam vektor dan maka anda boleh melakukan perkara-perkara dengan nilai. PENONTON: Itu datang dalam kuliah. CONNOR HARRIS: Oh, itu datang kuliah, sangat baik. PENONTON: Tugasan ini, adakah sepatutnya menunjukkan dari kanan ke kiri? CONNOR HARRIS: Dari kanan ke kiri, ya. Anda boleh menganggapnya sebagai nilai pada kanan ditolak ke dalam pembolehubah disebelah kiri. PENONTON: OK. CONNOR HARRIS: Dan akhirnya Sintaks fungsi agak pelik. Anda mempunyai foo nama tugas, yang diberikan fungsi kata kunci ini, diikuti oleh semua hujah-hujah dan kemudian badan fungsi selepas itu. Sekali lagi perkara-perkara ini boleh kelihatan agak pelik. Mereka akan menjadi sifat kedua selepas anda bekerja dengan bahasa untuk sedikit. Jadi vektor, cara anda membina vektor adalah anda jenis C, yang merupakan kata kunci, kemudian semua nombor yang anda mahu atau tali atau apa sahaja. Hujah-hujah juga menjadi vektor. Tetapi lokasi yang terhasil mendapat diratakan. Jadi, anda tidak boleh mempunyai array mana beberapa elemen adalah nombor tunggal dan beberapa elemen tatasusunan diri mereka sendiri. Jadi, jika anda cuba untuk membina sebuah lokasi adalah elemen pertama adalah 4 dan elemen kedua adalah 3,5 array anda akan hanya mendapatkan pelbagai tiga elemen, 4,3,5. Mereka tidak boleh daripada jenis campuran. Jika anda cuba untuk membaca atau menulis di luar batas-batas vektor anda akan mendapat nilai ini dipanggil NA yang yang bermaksud nilai yang hilang. Dan ini adalah bertujuan untuk seperti statistik yang bekerja dengan tidak lengkap set data. Jika anda memohon satu fungsi yang sepatutnya mengambil hanya satu nombor untuk array maka apa yang anda akan mendapat adalah, fungsi akan memetakan lebih array. Jadi, jika fungsi anda katakan mengambil beberapa dan pulangan ia persegi. Anda memohon itu untuk array 2,3,5 Apa yang anda dapat adalah array 4,9,25. Dan itu sangat berguna kerana ia bermakna anda tidak perlu menulis untuk gelung untuk melakukan perkara-perkara yang sangat mudah seperti menyapu fungsi kepada semua ahli satu set data. Yang jika anda bekerja dengan besar set data, anda perlu melakukan banyak. Fungsi binari adalah kemasukan gunaan oleh penyertaan. Saya akan masuk ke dalam itu. Anda boleh mengaksesnya dengan pameran atau vektor dengan kurungan persegi. Kurungan Jadi nama vektor persegi 1 akan memberikan anda elemen pertama. Nama Vector kurungan persegi 2 akan memberikan anda elemen kedua. Anda boleh memindahkan vektor indeks dan anda akan kembali keluar pada dasarnya faktor sub. Jadi, anda boleh melakukan vektor kurungan nama C, 2,4 dan anda akan keluar vektor yang mengandungi kedua dan keempat elemen array. Dan jika anda mahu hanya statistik ringkasan cepat vektor seperti antara kuartil pelbagai, median, maksimum, apa sahaja, anda hanya boleh menaip ringkasan nama vektor dan mendapatkan yang keluar. Bukan itu benar-benar berguna dalam pengaturcaraan tetapi jika anda bermain sekitar set data, ia adalah berguna. Matrices-- pada dasarnya tatasusunan dimensi yang lebih tinggi. Mereka mempunyai ini notasi sintaks khas. Matrix dengan pelbagai yang mendapat diisi dalam- maaf, matriks dengan data, bilangan baris, bilangan lajur. Apabila anda mempunyai beberapa data, ia memenuhi dalam array pada dasarnya akan atas ke bawah pertama. Kemudian kiri ke kanan. Jadi, seperti itu. Dan R telah dibina di pendaraban matriks, penguraian spektrum, pempepenjuruan, banyak perkara. Jika anda mahu lebih tinggi dimensi tatasusunan, jadi 3, 4, 5, atau apa sahaja dimensi anda boleh berbuat demikian. Sintaksis adalah pelbagai samar-samar sama c, maka senarai dimensi. Jadi, jika anda mahu 4 pelbagai dimensi dengan dimensi 4, 7, 8, 9, array, samar-samar sama c (4,7,8,9). Anda mengakses nilai tunggal dengan kurungan kemasukan koma pertama kemasukan kedua. Anda boleh mendapatkan keseluruhan keping baris atau lajur. Dengan sintaks tidak lengkap ini ia hanya baris nombor koma atau lajur koma nombor. Jadi senarai adalah sejenis array yang berkaitan. Mereka mempunyai sintaks mereka sendiri di sini. Sekali lagi tidak panik menyalin semua bawah ini. Ini hanyalah supaya orang melalui slaid kemudian ada ini semua dalam sebutan bagus. Dan ini akan menjadi sekali sangat semula jadi Saya benar-benar berjalan dalam demo. Jadi menyenaraikan tatasusunan pada dasarnya berkaitan. Anda boleh mengakses nilai dengan senarai nama, tanda dolar, kunci. Jadi, jika senarai anda dinamakan foo, maka anda boleh mengaksesnya seperti itu. Anda boleh mendapatkan pasangan kunci nilai keseluruhan dengan melepaskan dalam indeks kurungan persegi. Jika anda membaca daripada tidak wujud utama, anda akan mendapat null. Ia tidak akan kesilapan. Perkara adalah, R akan berbuat banyak dengan null kerana ia boleh. Dan ini boleh bermakna bahawa jika anda berada tidak mengharapkan untuk mendapatkan null keluar beberapa senarai dibaca, anda akan mendapat beberapa kesilapan tidak dapat diramalkan lebih bawah garisan itu. Ini berlaku kepada saya saya pekerjaan musim panas apabila saya menggunakan R di mana saya berubah bagaimana tertentu senarai ditakrifkan di satu tempat tetapi tidak mengubah kelak pada kod yang membaca nilai daripadanya. Dan jadi apa yang berlaku ialah saya membaca nilai null daripada senarai ini, lulus mereka ke dalam fungsi, dan sangat keliru apabila saya mendapat pelbagai infiniti-infiniti rawak tanaman sehingga dalam fungsi ini. Kerana jika anda memohon maksimum yang tertentu atau fungsi minimum untuk batal, anda akan mendapat nilai yang tak terhingga keluar. Bingkai data, mereka subkelas senarai. Setiap nilai adalah vektor panjang yang sama. Dan mereka digunakan untuk menyampaikan, pada dasarnya, jadual data. Ada sintaks pengawalan ini. Ini semua, sekali lagi, lebih lebih jelas apabila anda sampai ke demo. Dan perkara yang baik tentang bingkai data adalah bahawa anda boleh memberi nama kepada segala ruangan dan nama-nama kepada semua baris. Dan sebagainya yang menjadikan mengakses mereka sedikit mesra. Juga ini adalah bagaimana kebanyakan fungsi-fungsi yang membaca data dari spreadsheet Excel atau dari fail teks, sebagai contoh, akan membaca dalam data mereka. Mereka akan memasukkannya ke dalam semacam bingkai data. Jadi functions-- Fungsi sintaks agak pelik. Sekali lagi, ia adalah nama majlis itu, menyerahhakkan, fungsi kata kunci ini dan kemudian senarai hujah. Jadi, terdapat beberapa perkara yang baik tentang bagaimana fungsi bekerja di sini. Untuk satu, anda sebenarnya boleh menetapkan nilai lalai kepada hujah-hujah tertentu. Jadi, anda boleh mengatakan R1 equals-- anda boleh mengatakan foo adalah fungsi mana R1 sama sesuatu secara lalai jika pengguna menentukan tiada hujah. Jika tidak, ia adalah apa yang akan dimasukkan ke dalam. Dan ini adalah sangat berguna kerana banyak fungsi kami mempunyai berpuluh-puluh atau sering beratus-ratus hujah. Sebagai contoh yang untuk merancang graf atau merancang plot berselerak mempunyai hujah-hujah yang mengawal segala-galanya daripada tajuk dan paksi label dengan warna garisan regresi. Dan jadi jika anda tidak mahu untuk membuat orang menentukan setiap seorang daripada ini beratus-ratus hujah mengawal setiap aspek tunggal plot atau regresi atau apa sahaja, ia adalah baik untuk mempunyai nilai-nilai lalai. Dan kemudian anda boleh sebenarnya menulis seperti yang anda lihat ke sini. Atau mencari contoh yang lebih baik. Apabila anda memanggil fungsi yang anda boleh sebenarnya memanggil mereka menggunakan nama-nama hujah. Jadi di sini adalah satu contoh pembina matriks. Ia mengambil masa tiga hujah. Biasanya anda mempunyai data, yang merupakan vektor. Anda mempunyai N berturut-turut, yang ialah bilangan baris. Anda mempunyai N cols-- beberapa tiang. Masalahnya ialah jika anda menaip Berturut-turut N sama dengan apa sahaja dan N col sama apa sahaja apabila anda memanggil fungsi ini, anda sebenarnya boleh menterbalikkan mereka. Jadi anda boleh meletakkan N col pertama dan baris N kedua dan ia akan membuat perbezaan. Jadi, itu ciri-ciri kecil yang bagus. Adakah import dan eksport. Ini boleh dilakukan, pada asasnya. Terdapat juga kemudahan untuk menulis sewenang-wenangnya R objek ke fail binari dan kemudian membacanya kembali kemudian. Yang berguna jika anda lakukan sesi interaktif besar R dan anda perlu untuk menyelamatkan perkara yang sangat cepat. Secara lalai R mempunyai senarai kerja bahawa fail Dapatkan ditulis ke dalam dan membaca kembali dari. Anda boleh melihat bahawa dengan getwg, mengubahnya dengan setdw. Tiada apa-apa terutama menarik di sini Jadi sekarang statistik sebenar stuff-- regresi multilinear. Jadi sintaks biasa adalah sedikit rumit. Model ini adalah objek yang besar pada asasnya. Ia akan diberikan kepada LM, yang merupakan panggilan fungsi. Elemen pertama, y x1 tilde ditambah apa sahaja. Sintaks saya di sini adalah sedikit mengelirukan. Saya agak maaf, ini adalah cara yang standard bahawa buku-buku sains komputer melakukan ini. Tetapi ia agak pelik. Jadi, pada asasnya, ia adalah lm kurungan, perkara pertama adalah variable-- maaf, bergantung x1 tilde berubah ditambah x2 ditambah namun ramai bebas pembolehubah yang anda ada. Dan kemudian ini sama ada boleh menjadi vektor, semua panjang yang sama. Atau mereka boleh menjadi ruang pengepala dalam rangka data bahawa anda hanya menentukan dalam kedua bingkai data hujah. Anda juga boleh menentukan formula yang lebih kompleks supaya anda tidak perlu secara linear mundur satu pembolehubah bersandar, atau salah satu vektor pada vektor yang sedia ada. Anda boleh melakukan, sebagai contoh, komponen vektor y kuasa dua tambah 1 dan mundur itu terhadap log beberapa vektor lain. Anda boleh mencetak ringkasan dari model dengan arahan ini dipanggil summary-- hanya ringkasan parens model. Sekali lagi sesuatu yang lain saya perlu menjelaskan. Sesuatu yang lain yang akan dibetulkan apabila slaid naik ke internet. Jika anda hanya mahu untuk mengira korelasi yang mudah anda boleh menggunakan vektor korelasi 1 vektor 2 fungsi teras. Kaedah adalah secara lalai Korelasi Pearson. Mereka adalah orang-orang standard yang anda boleh lakukan. Terdapat juga Spearman dan Korelasi Kendell yang merupakan antara pelbagai korelasi perintah pangkat. Baik mereka tidak mengira produk detik-detik di antara vektor diri mereka sendiri, tetapi pesanan pangkat vektor ini. Saya akan menjelaskan yang kemudian. PENONTON: Soalan Pantas CONNER HARRIS: Pasti. PENONTON: Oleh itu, apabila anda mengira bagi korelasi mudah melakukan anda menganggap bahawa terdapat statistik makna kepada korelasi? CONNER HARRIS: Anda tidak perlu. An lm pada dasarnya hanya mesin. Ia akan mengambil masa dalam dua perkara dan ia akan meludah keluar pekali bagi talian patut terbaik. Ia juga melaporkan standard kesilapan kepada orang-orang pekali. Dan ia akan berkata kepadamu, seperti adalah memintas statistik yang signifikan atau perbezaan dari 0. Apakah cerun yang terbaik garis patut statistik berbeza daripada sifar, dan sebagainya. Jadi ia menganggap apa-apa, saya fikir adalah jawapan terbaik untuk soalan anda. OKEY. Plotting-- jadi sebab utama anda perlu menggunakan R, seperti regresi multilinear. Pada dasarnya setiap bahasa mempunyai beberapa kemudahan untuk itu. Dan sintaks jujur ​​R untuk regresi adalah sukar difahami bit. Tetapi rancangan jahat adalah di mana ia benar-benar bersinar. Fungsi kuda beban adalah plot dan ia mengambil masa dua vektor, x dan y. Kemudian elips bermaksud yang sangat Sebilangan besar hujah-hujah pilihan yang mengawal segala-galanya dari tajuk kepada warna pelbagai baris atau pelbagai mata, dengan jenis plot. Anda boleh mempunyai berselerak plot atau plot garis. [Didengar] 2 vektor panjang yang sama. Anda boleh mendahului ini dengan melampirkan Rangka data dalam skrip anda. Dan ini akan membolehkan anda hanya menggunakan ruangan tajuk dan bukan vektor berasingan. Anda boleh menambah garis lurus penyuaian terbaik dan tempatan lengkung regresi untuk graf anda. Arahan ini disenaraikan di sini, ab garis dan garis, secara lalai ini mendapat ditulis dalam bentuk pop up windows kerana ia mengandaikan bahawa anda menggunakan R interaktif. Jika anda tidak anda boleh menulis dua fail yang benar-benar berada di dalam mana-mana format yang anda suka. Maaf, saya mempunyai kesilapan menaip Saya hanya sedar. Jika anda ingin membuka satu lagi peranti grafik anda boleh menggunakan fungsi ini dipanggil PNG atau JPEG atau banyak format imej yang lain. Dan anda boleh menulis graf untuk apa jua nama fail yang anda tentukan. Untuk membatalkan yang anda perlu use-- Saya tidak menulis ini dalam slide-- yang tetapi ada satu dev fungsi dipanggil dot luar bahawa tidak menjadi hujah. Maka ada kemudahan untuk rancangan jahat 3D dan untuk kontur berkomplot jika anda ingin graf bagi dua pembolehubah bebas. Saya tidak akan masuk ke dalam sekarang. Terdapat juga beberapa kemudahan untuk animasi mereka biasanya yang diselenggara oleh pihak ketiga. Yang saya telah lakukan animasi dengan graf R, tetapi saya tidak menggunakan ini pihak ketiga perpustakaan. Jadi saya tidak boleh benar-benar membuktikan bagaimana baik mereka. Apa yang saya cadangkan jika anda mahu untuk membuat animasi menggunakan R adalah anda boleh menulis semua papan-papan untuk animasi dan kemudian anda boleh menggunakan pihak program-- ketiga orang-orang yang biasa dipanggil FFmpeg atau ImageMagick-- untuk menjahit semua bingkai anda ke dalam satu animasi. Jadi masa untuk demo. Jadi, jika anda menggunakan mana-mana Unix seperti sistem yang Linux BSD tetapi yang menggunakan BSD. OS X membuka tetingkap terminal dan menaip R pada command prompt. Jika anda mempunyai R studio atau seperti, yang juga bekerja. Bagi pengguna Windows anda harus dapat mencari R dalam menu Mula anda. Ia harus dipanggil sesuatu seperti R x64 3 titik apa sahaja. Buka bahawa di sana. Jadi sekarang biarlah saya membuka tetingkap terminal. Baiklah, carian. PENONTON: Perintah-Space CONNER HARRIS: Perintah-Space, terima kasih. Saya tidak biasanya menggunakan Mac. Terminal, menunjukkan tetingkap baru. Tetingkap baru adalah tetapan asas, R. Oleh itu, anda perlu mendapatkan mesej selamat datang, sesuatu seperti ini. Jadi, saya menggunakan R interaktif. Anda juga boleh menulis R skrip sudah tentu. Pada asasnya skrip berjalan cara yang sama seperti jika anda sedang duduk di komputer menaip dalam setiap baris satu demi satu. Jadi mari kita mulakan dengan membuat vektor. Panah C 1, 2. 1, 2, 4. OK, pasti. Saya boleh membuat saiz fon yang lebih besar. PENONTON: Perintah-Plus CONNER HARRIS: Perintah-Plus. Command-Plus. Baiklah, bagaimana itu? Baik? OKEY. Jadi mari kita mulakan dengan mengisytiharkan senarai vektor. Lakukan, anak panah, C 1,2,4. Kita dapat melihat. Jangan bimbang tentang kurungan di sana. Kurungan begitu jika anda mencetak tatasusunan yang panjang, kita boleh mana anda berada. Satu contoh ialah jika saya hanya ingin julat 2-200. Jika saya dicetak yang sangat pelbagai panjang, kurungan hanya jadi saya boleh menyimpan mengesan yang indeks kita berada di jika saya mencari melalui ini secara visual. Jadi bagaimanapun, kita mempunyai. Jadi saya katakan sebelum ini bahawa tatasusunan berinteraksi sangat baik dengan, sebagai contoh, operasi unari seperti ini. Jadi apa yang anda fikir saya akan dapat jika saya menaip tambah 1? Ya. Baiklah, sekarang saya akan membuat lokasi yang berbeza ini. Katakan b c 20,40, 80. Jadi, apa yang anda fikir arahan ini akan lakukan? Menambah unsur-unsur. Dan jadi pada dasarnya itulah apa yang dilakukan. Jadi ini adalah agak mudah. Jadi saya bagaimana pula saya lakukan ini. c adalah, katakan, 6 kali 1-10. Jadi apa yang saya mahu melihat terkandung, yang anda fikir? Jadi semua gandaan enam. Kini, apa yang anda fikir yang akan berlaku jika saya lakukan ini? Saya akan membuat ini lebih jelas sedikit, c, c. Jadi apa yang berlaku, adakah anda berfikir, jika saya melakukan ini? tambah c. [Didengar] PENONTON: Sama ada kesilapan atau ia hanya menambah tiga elemen pertama. CONNER HARRIS: Tidak cukup. Ini adalah apa yang kita dapat. Apa yang berlaku ialah yang lebih pendek pelbagai, yang, tidak perlu lagi berkedudukan tinggi menggunakan basikal. Oleh itu, kita mendapat 124, 124, 124. Yeah. Dan pada dasarnya, anda boleh melihat tingkah laku ini sebelum ini, campur 1, sebagai subkelas tingkah laku ini, di mana lokasi yang singkat sahaja pada angka 1, yang merupakan lokasi satu elemen. Saya hanya menjadi vektor berkata semua kali dan bukan pelbagai, kerana itulah yang r dokumentasi biasanya tidak. Ia merupakan satu c berakar umbi kebiasaan. OK, dan jadi sekarang kita mempunyai pelbagai ini. Oleh itu, kita mempunyai ini pelbagai, c. Kita boleh mendapatkan ringkasan statistik c, ringkasan c. Dan itu bagus. Jadi sekarang mari kita melakukan beberapa perkara matriks. Katakan m adalah matriks. Mari kita membuat ia satu tiga oleh tiga satu. Jadi nrows sama dengan 3, dan ncols bersamaan 3. Dan bagi data mari do-- jadi apa yang anda fikir ini akan lakukan? Betul, ia adalah satu depan. Ia nrow dan ncolumn. Jadi apa yang saya lakukan ialah saya telah mengisytiharkan tiga oleh tiga matriks dan saya telah diluluskan pada pelbagai sembilan elemen. Jadi logaritma semua elemen satu melalui sembilan. Dan nilai-nilai mengisi sehingga maaf array--? PENONTON: Mereka adalah asas 10 balak? CONNER HARRIS: Tiada log adalah logaritma asli, jadi asas e. Ya, jika anda mahu asas 10 log, saya rasa anda akan mempunyai log apa sahaja, dibahagikan dengan log 10. Dan sebagainya data daripada [didengar] hanya mengisi pelbagai, jadi atas ke bawah, kemudian kiri ke kanan. Dan jika anda mahu untuk melakukan beberapa lain lokasi, katakan n adalah matriks. Mari kita buat, saya tidak tahu, 2 hingga 13. Atau saya akan melakukan sesuatu yang lebih menarik. Saya akan melakukan 2 hingga 4. nrow sekutu-sekutu, katakan, 3. ncol bersamaan 4. n. Oleh itu, kita telah mendapat ini. Dan sekarang jika kita mahu untuk membiak ini, yang kita akan lakukan n peratus kali peratus, kerana itulah n. Dan kami mempunyai produk matriks. Dengan cara mereka, adakah anda melihat bagaimana apabila saya mengisytiharkan n, 2 hingga 4 vektor mendapat dikitar sehingga itu penuh sehingga semua n? Jika anda mahu mengambil penguraian nilai eigen, ini adalah sesuatu yang boleh kita lakukan dengan mudah. Kita boleh melakukan eigen n. Dan jadi ini adalah pertama kami hadapi dengan senarai. Jadi eigen n adalah senarai dengan dua kunci. Nilai-nilai, yang merupakan lokasi ini di sini. Dan vektor, yang pelbagai ini di sini. Jadi, jika anda mahu untuk mendapatkan, katakan, lajur ketiga ini dari matriks vektor eigen, kerana yang vektor eigen adalah vektor lajur. Oleh itu, kita boleh lakukan eigen vec tanda n dolar vektor, koma 3, dari [didengar]. Vec. Ialah, seperti yang anda jangkakan. Maka katakanlah n kali peratus kali vec. Jadi keputusan di sini pasti kelihatan seperti jika kita mengambil nilai eigen yang ketiga di sini, yang sepadan dengan yang vektor eigen ketiga. Ia hanya didarab segala-galanya dalam vektor eigen ini, komponen-bijak, dengan nilai eigen yang. Dan itulah yang kita jangkakan, kerana itulah yang eigen adalah. Adakah sesiapa di sini tidak diambil algebra linear? Beberapa orang, OK. Hanya menghidupkan otak anda daripada untuk sedikit. Dan sesungguhnya jika kita mengambil eigen n nilai tanda dolar 3 kali vec, juga mendapatkan perkara yang sama. Ia diformat berbeza kerana berturut-turut vektor dan bukan vektor lajur, tetapi masalah besar. Dan supaya orang-orang pada dasarnya yang baik perkara-perkara yang boleh kita lakukan dengan matriks, senarai ditunjukkan. Saya harus menunjukkan yang bagus perkara tentang fungsi juga. Jadi mari kita iaitu- [didengar] fungsi, panggilan mari ia func terhadap fungsi n n squared-- sebenarnya, itu bukan benar-benar terbaik. a, b, a b kuasa dua plus. Jadi satu perkara tentang fungsi, sekali lagi, adalah mereka tidak perlu penyata pulangan yang jelas. Jadi, anda boleh just-- yang Kenyataan terakhir dinilai akan menjadi kenyataan kembali, atau nilai yang dikembalikan. Jadi dalam kes ini, kita hanya menilai satu pernyataan, a kuasa + b. Yang akan menjadi nilai pulangan lalai. Tidak ada salahnya untuk dimasukkan ke dalam mengembalikan nilai dengan jelas, terutamanya jika anda sedang berhadapan dengan fungsi logik sangat rumit mengalir. Tetapi anda tidak memerlukannya. Jadi sekarang kita boleh lakukan func 5, 1, dan ini adalah pada dasarnya apa yang anda harapkan. Sesuatu yang lain yang boleh kita lakukan, kita sebenarnya boleh melakukan func b sama dengan 1, yang sama dengan 5. Jadi, jika kita menentukan nombor di sini, mana hujah pergi ke mana hujah fungsi, kita boleh flip sekitar nilai-nilai ini di mana sahaja kami mahu. PENONTON: Adakah terdapat sebab yang untuk menulis keluar dengan b sama berbanding dengan hanya menggunakan nombor dan koma? CONNER HARRIS: Ya, biasanya melakukan ini jika anda mempunyai fungsi dengan banyak hujah. Yang sering mungkin menjadi seperti bendera yang anda akan hanya hendak gunakan dalam masa yang jarang berlaku. Dan cara ini, anda boleh only-- anda boleh merujuk kepada hujah-hujah tertentu yang anda hendak gunakan nilai-nilai bukan lalai-untuk, dan anda tidak perlu untuk menulis satu sekumpulan bendera sama palsu selepas mereka. Atau saya boleh menulis ini lagi dengan nilai lalai seperti b bersamaan 2. Dan kemudian saya boleh lakukan f func, Saya akan melakukan 4, 1 kali ini. Dan 17, yang 4 kuasa dua campur 1, seperti yang anda jangkakan. Tetapi saya juga boleh hanya panggilan ini dengan func 4, dan saya akan mendapat 18, kerana Saya tidak menentukan b. Jadi b mendapat nilai lalai 2. OK, jadi sekarang jika anda berikut bersama-sama dengan demo, menaip baris ini pada perintah anda meminta dan melihat apa yang datang. Sebenarnya, tidak berbuat demikian. Jenis ini. Anda perlu mendapatkan sesuatu seperti ini. Jadi mtcars ialah dibina pada data ditetapkan untuk demonstrasi ini tujuan yang datang with-- yang datang dalam secara lalai dengan r pengagihan anda. Ini adalah himpunan statistik isu 1974 majalah Motor Trend pada beberapa model kereta yang berbeza. Jadi ada batu segelen, cylinders-- Saya terlupa apa disp is-- kuasa kuda. Mungkin. Jika anda hanya kereta Google MT, maka salah satu keputusan pertama adalah daripada r dokumentasi rasmi dan ia akan menjelaskan semua bidang-bidang data. Jadi berat badan is-- berat adalah berat kereta di tan. Q sec adalah kali suku batu. Jadi sekarang kita boleh melakukan beberapa perkara yang menyeronokkan tentang kereta MT adalah satu bidang data. Oleh itu, kita boleh melakukan perkara-perkara seperti nama berturut-turut, kereta mt. Dan ini adalah senarai semua baris dalam set data yang nama-nama kereta. Kita boleh melakukan colnames, mt kereta ini. Jika anda melakukan kereta mt, indeks sub-berangka, seperti 2. kita akan mendapat ruang kedua daripada ini, yang akan menjadi silinder. PENONTON: Apakah yang kamu lakukan? CONNER HARRIS: saya menaip mt kereta, kurungan e, yang memberikan saya yang kedua ruangan keluar dari kereta mt. Atau jika kita mahu berturut-turut, saya boleh menaip mtcars koma 2, sebagai contoh. Sebaliknya 2 koma, seperti itu. Dan yang masuk dalam berturut-turut anda. Ini di sini hanya memberikan anda ruang, tetapi ruang sebagai vektor. Saya hanya menyedari sekarang saya terlupa untuk menunjukkan beberapa perkara yang sejuk kira-kira vektor yang anda boleh lakukan dengan indeks. Jadi biarlah saya melakukannya sekarang. Jadi mari kita buat c gets-- meletakkan ini di pause-- 2 kali 1 hingga 10. Jadi c hanya akan menjadi vektor 2 hingga 20. Saya boleh mengambil unsur-unsur seperti ini, c2. Saya boleh lulus dalam vektor seperti ini, c-- biarlah saya menggunakan nama yang berbeza daripada c, seperti vec c. Pada asasnya, saya lakukan ini supaya anda tidak mendapat keliru c sebagai fungsi pembinaan vektor, dan kemudian c sebagai nama berubah-ubah. Kurungan Vec c 4, 5, 7. Ini akan mendapat saya keluar keempat, kelima, dan tujuh elemen array. Yang boleh saya lakukan vec, dimasukkan ke dalam negatif indeks, seperti negatif 4. Yang akan mendapatkan saya keluar ini dengan elemen keempat dikeluarkan. Kemudian jika saya mahu lakukan keping, Yang boleh saya lakukan vec 2 hingga 6. 2 kolon 6 adalah hanya satu lagi vektor, 2, 3, 4, 5, 6. Memuntahkannya keluar itu. Jadi bagaimanapun, kembali ke kereta mt. Jadi mari kita buat beberapa terurus. Katakan model gets-- mari linear regress-- Saya tidak tahu. Pertama mari kita jangan melampirkan mtcars, sudah tentu. Jadi [didengar] model lm, mari kita mundur batu segelen berat badan tilde. Dan kemudian bingkai data adalah mtcars. Jadi model ringkasan. OK, jadi ini kelihatan agak rumit. Tetapi pada dasarnya, melihat seolah-olah kita cuba untuk menyatakan batu segelen sebagai fungsi linear berat badan, kemudian kami mendapat talian ini di sini, yang memintas di 37,28. 37,28 akan menjadi batu teori segelen kereta yang mempunyai berat sifar. Dan kemudian untuk setiap tan tambahan, anda mengetuk kira-kira lima batu segelen kira itu. Kedua-dua pekali ini anda lihat, kesilapan standard di sana. Dan mereka sangat statistik yang signifikan. Oleh itu, kita boleh menjadi sangat tertentu untuk 1 e 10 kepada negatif 10. Jadi 1 kali sesuatu yang negatif 10, bahawa jika anda membuat kereta yang lebih berat, ia akan mempunyai batu buruk segelen. Atau kita boleh menguji beberapa model lain. Suka dan bukannya merosot ini di berat badan, mari kita mundur pada log berat badan, kerana mungkin berat badan yang berkesan berkenaan panjang adalah entah bagaimana tidak linear. Ini memberikan kita satu r kuasa dua daripada 0,7528. Jadi mari kita cuba ini. Kali ini mari kita buat satu pembolehubah yang berbeza juga. Model2. Jadi ringkasnya, model2. Baiklah, jadi sekali lagi, kita mendapat garis lurus penyuaian terbaik kami di sini. Dan ini time-- ini mengatakan, pada dasarnya bahawa setiap kali anda meningkatkan berat sebuah kereta dengan faktor e anda kehilangan ini banyak batu per galon. Dan jadi kali ini standard sisa kami kesilapan kitab itu yang tidak penting, benar-benar. Kesilapan sisa standard pada dasarnya hanya ralat piawai yang anda telah meninggalkan selepas anda mengambil garis arah aliran. Dan r kami kuasa dua di sini adalah 0.81, yang agak lebih baik daripada apa kita ada sebelum, 0.52. Dan sekarang mari kita menambah jangka regresi ini. Jadi mari kita mundur batu segelen kedua-dua di log berat dan, mari kita buat, q batu, suku masa batu. OK, ia mesti mempunyai the-- semua hak, qsec. Qsec. Actually-- maaf, apa? Biar saya memanggil ini sesuatu lain selain model2. Biar saya memanggil model3 ini. Dan sekarang kita boleh melakukan ringkasan model3. Dan sebagainya lagi, ini adalah pada dasarnya apa yang anda jangkakan. Anda perlu memintas positif. Berkesan meningkatkan berat badan adalah negatif. Dan berkesan meningkatkan suku masa batu adalah positif, tetapi walaupun kurang lagi daripada berat badan. Sekarang intuitif, anda boleh memahami ini dengan mengatakan berfikir tentang sukan kereta. Ada pecutan yang sangat cepat, yang singkat kali suku batu. Mereka juga akan menggunakan lebih banyak gas, manakala kereta yang lebih wajar akan untuk mempunyai pecutan yang lebih perlahan, kali suku batu yang lebih tinggi, dan menggunakan gas kurang ,, jadi batu lebih tinggi bagi setiap gelen. Yang besar. Dan sekarang sudah tiba masanya untuk merancang sesuatu seperti ini. Jadi mari kita do-- supaya terdedah tulang yang boleh kita lakukan plots-- kerana saya telah dilampirkan bingkai data ini sebelum itu kita hanya boleh melakukan plot, mpg wt. Jadikan ini sedikit lebih besar. Di sana, kita pada dasarnya mempunyai plot berselerak, tetapi mata adalah jenis sukar untuk melihat perkara ini. Saya tidak ingat begitu saja apa yang sintaks adalah untuk menukar plot. Jadi saya rasa ini akan menjadi masa yang baik untuk membawa, ada bantuan builtin sangat bagus ciri, petikan bantuan berfungsi nama. Kami akan membawa pada dasarnya apa sahaja yang anda suka. Saya rasa saya benar-benar akan melakukan ini jenis sama p untuk mata plot. Adakah yang mengubah apa-apa? Dan tidak, tidak benar-benar. Baiklah. Untuk sebab-sebab tertentu, apabila saya melakukan ini pada komputer saya sendiri manakala yang lalu, semua mata berselerak adalah lebih jelas. Walau bagaimanapun, adalah jenis serakan yang boleh dilihat? Ada satu di sana. Beberapa di sana, beberapa tempat di sana. Anda jenis boleh melihat mereka, bukan? Jadi, jika kita ingin menambah baris terbaik patut plot ini di sini, yang agak terdedah bones-- izinkan saya membuat ia sedikit lebih bagus. Sama utama berbanding berat badan. Batu per galon. Sekali lagi, anda boleh melihat bagaimana berguna hujah-hujah pilihan di sini dengan juga tidak perlu meletakkan perkara dalam satu susunan tertentu dengan bukti-bukti papan kekunci apabila anda mempunyai plot, kerana ini mengambil banyak hujah. Xlab sama dengan berat badan, berat badan, tan. Baiklah. OK, yeah, peranti ini sedang agak menjengkelkan. Tetapi anda boleh lihat jenis di sana, ada tajuk Graf di sebelah. Di sini there's-- di bahagian bawah di sini terdapat label paksi. Saya tidak ingat begitu saja apa arahan ars-- apa fungsi adalah untuk meningkatkan saiz mereka label dan tajuk, tetapi mereka berada di sana. Dan jadi jika kita mahu menambah baris patut terbaik, kita boleh melakukan sesuatu like-- Saya mempunyai sintaks yang ditulis di sini. Jadi ingat kita hanya menambah model adalah mpg, berat, mtcars. Dan jadi jika saya mahu menambah penyuaian terbaik line, saya boleh lakukan, model b garis. Dan ledakan, kami mempunyai barisan terbaik patut. Ia adalah jenis sukar untuk melihat lagi. Saya agak kesal dengan kesukaran teknologi. Tetapi ia berjalan pada dasarnya kiri atas ke kanan bawah. Dan jika skala adalah lebih besar, anda boleh melihat yang memintas adalah apa yang anda boleh mencari daripada statistik ringkasan jika anda menaip model ringkasan. OK, jadi saya berharap semua orang mendapat sesuatu yang rasa apa R adalah, apa yang ia adalah baik untuk. Anda boleh membuat plot jauh lebih bagus daripada ini di masa anda sendiri, jika anda suka. Jadi antara muka fungsi asing. Ini adalah sesuatu yang tidak biasanya dibincangkan dalam kuliah pengenalan atau apa-apa pengenalan untuk r. Ia tidak mungkin anda akan memerlukannya. Walau bagaimanapun, saya mendapati ia berguna dalam projek-projek saya sendiri pada masa lalu. Dan tidak ada yang baik tutorial untuk itu dalam talian. Jadi, saya hanya akan tergesa-gesa anda semua melalui ini dan kemudian anda bebas untuk meninggalkan. Dan sebagainya asing antara muka fungsi adalah apa yang anda boleh gunakan untuk memanggil keluar untuk melihat fungsi dengan R. Secara dalaman, R dibina di atas aritmetik C. R adalah hanya 64-bit titik terapung aritmetik C, yang menaip dua [didengar]. Dan anda mungkin mahu lakukan ini untuk sekumpulan sebab. Untuk satu, R ditafsirkan, ia tidak disusun turun kepada kod mesin. Jadi, anda boleh menulis semula anda gelung dalaman dalam C dan kemudian mendapatkan kelebihan menggunakan R. Suka ia agak lebih mudah daripada C. Ia mempunyai grafik yang lebih baik Kemudahan dan barang kecil. Dan sementara masih mampu untuk mendapatkan kelajuan tertinggi daripada gelung dalaman, yang mana anda benar-benar memerlukannya. Penggunaan semula C perpustakaan yang sedia ada, itu juga penting. Jika anda mempunyai beberapa perpustakaan C untuk seperti, Saya tidak tahu, Fourier mengubah, atau beberapa sangat Archean prosedur statistik yang digunakan dalam bidang astrofizik tenaga yang tinggi atau sesuatu, saya tidak tahu. Astrofizik tenaga yang tinggi tidak walaupun think, saya fikir. Tetapi, anda boleh berbuat demikian daripada harus untuk menulis R pelabuhan asli mereka. Dan pada the-- dan sekali lagi, seperti jika anda melihat di kebanyakan perpustakaan lalai R, pada dalaman, mengenai dalaman adalah akan menggunakan fungsi asing antara muka yang sangat meluas. Mereka akan mempunyai perkara-perkara seperti Fourier mengubah atau korelasi pengkomputeran pekali ditulis dalam C, dan mereka akan hanya perlu R pembalut di sekeliling mereka. Antara muka yang satu agak sukar. Saya fikir kesukaran yang diperbesar-besarkan dalam banyak arahan yang anda akan dapati. Tetapi walau bagaimanapun, ia adalah agak mengelirukan. Dan saya tidak dapat mencari tutorial yang baik untuk itu, jadi ini adalah ia sekarang. Sekali lagi, segmen ini keseluruhan lebih untuk rujukan kemudian. Jangan bimbang tentang penyalinan semua turun sekarang. Jadi arahan berikut adalah untuk sistem Unix-suka, Linux, BSD, OS X. Saya tidak tahu bagaimana ini berfungsi pada Windows, tetapi sila hanya tidak melakukan anda projek akhir pada Windows. Anda benar-benar tidak mahu. Unix adalah set lebih baik sehingga untuk pengaturcaraan kasual. Jadi, pada dasarnya asing antara muka fungsi. Jika anda mahu menulis C fungsi untuk digunakan dengan R, ia mempunyai untuk mengambil semua hujah sebagai petunjuk. Jadi untuk nilai tunggal, ini bermakna ia menunjuk kepada nilai. Untuk tatasusunan, ini adalah penunjuk kepada unsur yang pertama, yang adalah apa yang nama-nama lokasi benar-benar bermakna. Sekali lagi, ini adalah sesuatu yang anda harus mempunyai cantik sekali turun selepas p menetapkan lima. Nama Array hanyalah petunjuk kepada unsur yang pertama, Jenis titik apung adalah dua kali ganda. Dan fungsi anda telah kembali tidak sah. Satu-satunya cara yang ia boleh sebenarnya memberitahu R apa yang berlaku adalah dengan mengubah memori yang memberikan R kepadanya melalui fungsi asing antara muka. Oleh itu, saya telah menulis ini contoh di sini, ini adalah fungsi yang mengira penggunaan produk dot dua vektor. Ia mengambil masa dua hujah, vec1, vec2, yang merupakan vektor diri mereka sendiri, dan kemudian n, yang merupakan panjang, kerana sekali lagi, R telah dibina di [didengar] untuk mengetahui panjang vektor, tetapi C tidak. Dalam C, vektor adalah sewenang-wenangnya sebahagian dihalang memori. Jadi cara yang anda boleh mengira produk dot hanya menetapkan ini keluar parameter kepada sifar dan kemudian melelar melalui dari 1 untuk membintangi n, kerana n adalah penunjuk kepada panjang, hanya menambah sesuatu untuk ini keluar parameter. Dan ia boleh menjadi amalan yang baik jika anda akan melakukan ini untuk menulis dua fungsi C berasingan. Salah seorang daripada mereka has-- Salah seorang daripada mereka hanya mengambil hujah-hujah dan jenis bahawa mereka biasanya akan berada dalam C. Jadi Ia mengambil lokasi hujah sebagai petunjuk. Tetapi hujah nilai tunggal seperti n, ia hanya mengambil sebagai nilai dengan menyalin, tanpa petunjuk. Dan kemudian ia tidak [Didengar] daripada penunjuk. Dan kemudian anda boleh mempunyai yang berbeza, pada dasarnya, fungsi pembungkus yang pada dasarnya mengendalikan keperluan fungsi asing antara muka untuk anda. Cara anda panggil ini dalam R adalah, sekali anda menghidupkan fungsi anda yang ditulis dalam C, anda menaip R cmd shlib, R arahan perpustakaan kongsi, foo dot c, atau apa sahaja nama fail anda, dan OS tidak shell di terminal R. Dan ini akan mewujudkan perpustakaan dipanggil foo dot demikian. Dan kemudian anda boleh memuatkan dalam skrip kami atau secara interaktif dengan arahan beban dyn titik. Kemudian ada satu majlis dalam R dipanggil dot c. Ini mengambil hujah-hujah yang pertama nama fungsi dalam C yang anda mahu panggil. Dan kemudian semua parameter dengan fungsi itu, mereka perlu berada dalam susunan yang betul. Anda perlu menggunakan jenis ini fungsi paksaan sebagai integer, kerana dua, kerana watak, dan logik. Dan kemudian apabila ia mengembalikan senarai, yang sekali lagi hanya pelbagai bersekutu nama parameter dan nilai selepas majlis itu telah berjalan. Jadi dalam kes ini, kerana dot prod mempunyai hujah-hujah vec1, vec2 dan int n, n keluar. Ke titik c kita ada dot prod, nama fungsi yang kami memanggil, vec1, vec2, jenis memaksa. Panjang memuat vektor, Saya hanya memilih vec1 sewenang-wenangnya. Ia akan menjadi lebih kukuh untuk mengatakan s panjang min integer vec1, panjang vec2. Kemudian hanya sebagai dua sifar, kerana kita tidak benar-benar peduli apa yang masuk ke dalam keluar parameter kerana kami menetapkan ia kepada sifar juga. Kemudian keputusan akan menjadi pelbagai besar bersekutu pada dasarnya vec1 adalah apa sahaja, vec2 adalah apa sahaja. Tetapi kita berminat untuk keluar, jadi kita boleh mendapatkan yang keluar. Ini sekali lagi, satu contoh mainan yang sangat satu antara muka fungsi asing. Tetapi jika anda mempunyai untuk mengira dot produk vektor besar dalam gelung, atau jika anda perlu lakukan sesuatu yang lain dalam gelung, dan anda tidak mahu bergantung kepada R, yang tidak mempunyai sedikit overhead dibina ke dalamnya, ini boleh menjadi berguna. Sekali lagi, ini tidak selalunya satu topik pengenalan kepada R. Ia tidak baik didokumenkan. Saya hanya memasukkannya kerana Saya mendapati ia berguna pada masa lalu. Amalan itu, yang tidak baik. Saya nyatakan bahawa ada untuk gelung dalam fungsi. Secara amnya anda tidak harus, bahasa, tidak menggunakannya. Berdasarkan cara R melaksanakan lelaran secara dalaman, ia boleh menjadi perlahan. Mereka hanya juga kelihatan hodoh. R mengendalikan vektor sangat baik, jadi sering kali anda tidak perlu menggunakannya. Kemudian anda boleh biasanya menggantikan vektor sering dengan fungsi-fungsi ini dipanggil tinggi fungsi perintah, Map, Kurangkan, Mencari, atau penapis. Saya hanya akan memberikan beberapa contoh-contoh apa ini lakukan. Peta adalah fungsi perintah yang lebih tinggi kerana ia mengambil fungsi sebagai hujah. Jadi, anda boleh memberikan fungsi, anda boleh memberikan pelbagai, dan ia akan memohon fungsi untuk setiap elemen array dan mengembalikan array baru. Mengurangkan, pada dasarnya anda memberi ia array, anda memberikan fungsi yang mengambil masa dua hujah. Ia akan menggunakan fungsi pertama, Hujah pertama dengan beberapa nilai starter. Kemudian untuk keputusan yang kedua. Kemudian kepada keputusan yang di ketiga, maka kepada keputusan bahawa dalam keempat. Dan kemudian kembali apabila ia sampai ke akhir. Jadi, sebagai contoh, jika anda mahu kirakan jumlah semua unsur-unsur dalam array, daripada anda mungkin memanggil mengurangkan dengan [didengar] mengurangkan dengan menghimpunkannya fungsi, seperti func a, b, mengembalikan + b. Dan kemudian mula nilai 0. Dan semua ini, anda boleh menemui mereka diterangkan dalam dokumentasi R, dalam mana-mana buku teks pada pengaturcaraan berfungsi. Terdapat juga kelas ini fungsi dipanggil memohon fungsi, yang saya don't-- mereka agak sukar untuk menjelaskan, tetapi jika anda melihat dalam [didengar] ditempah bahawa saya memberi contoh pada permulaan, beliau menjelaskan kepada mereka dengan baik dalam lampiran di atas R pengaturcaraan. Lebih lanjut mengenai amalan, appending kepada vektor. Ya? Saya rasa saya perlu membetulkan itu. Dalam baris pertama, anak panah vec, anak panah yang tidak sepatutnya berada di sana. Anda boleh menetapkan untuk vektor, sekali lagi, dengan mengambil panjangnya ditambah 1 dan memberikan beberapa nilai untuk itu. Yang akan melanjutkan vektor, atau anda boleh lakukan setaraf vec c, newvalue vec. Sekali lagi, jika anda menggunakan C dengan satu hujah sebagai vektor, hierarki yang terhasil mendapat diratakan. Jadi anda hanya akan mendapat vektor yang yang diberikan oleh 1. Jangan sekali-kali melakukan ini. Sebab mengapa anda tidak perlu melakukan ini adalah ini. Apabila anda memperuntukkan vektor, ia memberikan sebahagian memori tertentu. Jika anda meningkatkan saiz vektor, ia perlu mengagihkan semula vektor di tempat lain. Dan supaya pengagihan semula agak mahal. Saya tidak akan pergi ke butir-butir bagaimana allocators memori dilaksanakan di peringkat sistem operasi, tetapi ia mengambil banyak masa untuk mencari sebahagian baru memori. Dan juga, jika anda semula peruntukan banyak dan banyak daripada semakin besar ketulan, anda berakhir dengan sesuatu yang dinamakan pemecahan ingatan, di mana memori yang tersedia adalah dibahagikan kepada banyak blok kecil di titik allocators memori pandangan. Dan ia menjadi lebih keras dan lebih keras untuk mencari memori untuk perkara-perkara lain. Jadi, jika anda perlu untuk melakukan ini, jika anda perlu berkembang vektor dari satu hujung ke depan, dan bukannya appending kepadanya sentiasa, anda perlu pra-memperuntukkan ia. Anak panah Vec, panjang vektor sama 1000, atau apa sahaja. Dan kemudian anda hanya boleh menetapkan kepada nilai-nilai yang vektor ini masa selepas anda telah diperuntukkan sekali. Saya berlari ke dalam ini, sekali lagi, kerja musim panas saya apabila saya menulis NRA pengkamiran persamaan penyelesai. Bukan simbolik berangka. Idea ini adalah bahawa apabila anda mempunyai satu nilai untuk penyelesaian anda, anda menggunakannya untuk pengiraan yang seterusnya. Begitu naif semula jadi saya kecenderungan adalah untuk mengatakan OK, jadi saya akan bermula dengan vektor itulah nilai yang besar. Mengira itu nilai seterusnya yang masuk ke vektor penyelesaian saya, dan menambah itu. Buat sesuatu yang lain, menambah itu. Ia pergi sangat, sangat perlahan-lahan. Dan apabila saya menyedari ini dan saya menukar sistem saya dari appending kepada vektor ini seperti 10,000 hingga 100,000 kali, hanya pra-memperuntukkan vektor dan hanya berjalan dengan itu. Saya mendapat lebih daripada 1000 kali ganda kelajuan sehingga. Jadi ini adalah satu perkara biasa perangkap untuk pengaturcaraan R. Jika anda perlu untuk membina vektor sekeping oleh sekeping, pra-memperuntukkan ia. Satu lagi perjalanan biasa up-- ini adalah terakhir saya slaid, tidak worry-- adalah pengendalian ralat. R, terus-terang, tidak benar-benar melakukan ini dengan baik. Terdapat banyak masalah yang boleh timbul. Sebagai contoh, jika anda mendapat array atau vektor daripada fungsi yang anda jangkakan satu Nilai untuk datang dari, atau sebaliknya, dan anda lulus itu ke dalam fungsi yang anda menulis menjangkakan nilai tunggal, yang boleh menjadi masalah. Fungsi-fungsi tertentu kembali null sebagai lakukan, katakan, membaca dari utama tidak wujud dalam senarai. Tetapi null tidak seperti C di mana jika anda cuba untuk membaca daripada penunjuk lama, [didengar] untuk menyeimbangkan penunjuk, ia hanya seg kesalahan dan jika anda berada dalam penyahpepijat anda ia memberitahu dengan tepat di mana anda berada. Sebaliknya, null akan do-- fungsi akan melakukan perkara-perkara yang tidak menentu jika mereka null tangan. Like jika anda menyerahkan max null, ia akan memberikan anda infiniti negatif. Dan sebagainya, yeah. Dan hal ini berlaku kepada saya sekali apabila saya mempunyai berubah sekumpulan bidang dalam struktur senarai saya sekali tanpa mengubah mereka di tempat lain apabila saya membaca dari mereka. Dan kemudian saya mendapat pelbagai rawak hasil tanaman sehingga infiniti dan saya tidak tahu di mana mereka datang. Dan malangnya, ada tiada cara yang ketat sebenar R di mana anda boleh mengatakan jika sesuatu kelihatan seperti ia mungkin satu kesilapan, hanya berhenti di situ supaya saya boleh menjadi berdisiplin dan menetapkan bahawa. Walau bagaimanapun, ada sesuatu dipanggil berhenti jika tidak. Ini adalah bersamaan dengan menegaskan C, jika anda telah berbincang tentang perkara itu. Saya tidak fikir C menegaskan adalah satu topik kuliah, tetapi pemimpin seksyen anda mungkin telah pergi ke atasnya. Dan berhenti jika tidak pada dasarnya mengambil apa-apa predikat, jadi apa-apa pernyataan yang boleh menjadi benar atau palsu. Dan jika ia palsu, ia berhenti programnya. Ia memberitahu anda apa yang anda beratur berada di atas dan apa keadaan gagal. Dan ini sangat berguna, sebagai contoh, semakan kewarasan, input fungsi. Jadi jika anda mempunyai fungsi dan anda mengharapkan, berkata, jika anda perlu memberi saya tarikh, saya ingin tarikh hanya vektor panjang 1 dan di suatu tempat antara 1 dan 31. Dan jika tidak, saya tahu sesuatu yang silapnya. Dan saya memilih untuk berhenti di situ sebelum ini mempunyai ketukan rawak pada kesan dengan kod bahawa ia lebih sukar untuk mengesan melalui. Jadi, itu satu kemungkinan gunakan untuk berhenti jika tidak. Walau bagaimanapun, OK. Jadi itulah akhirnya. Terima kasih banyak kerana datang. Saya adalah seorang amatur pangkat di ini. Jadi maaf jika anda bosan atau keliru atau golongan berada. Saya gembira untuk menjawab sebarang soalan melalui e-mel di connorharris@college.harvard.edu. Ini pergi juga untuk semua orang menonton ini hidup atau di kemudian hari. Juga, walaupun saya tidak TF yang, saya juga sangat bersedia untuk berkhidmat sebagai tidak rasmi penasihat untuk sesiapa sahaja yang yang menggunakan R dalam projek akhir. Jika ingin itu, kemudian hanya bercakap dengan TF anda dan kemudian menulis saya e-mel supaya Saya tahu apa yang anda bekerja pada dan saya boleh menyediakan mesyuarat kali dengan anda jika anda mahu. Jadi sekali lagi, terima kasih banyak. Saya berharap anda berpuas hati. PENONTON: [didengar]. CONNER HARRIS: Sudah tentu. PENONTON: Apakah jenis projek akan seorang pelajar CS menggunakan R untuk? CONNER HARRIS: Jadi, jika anda tidak melakukan sesuatu yang semata-mata dalam perlombongan data, sebagai contoh, dan terdapat banyak perkara anda boleh lakukan dengan dengan data perlombongan dan pembelajaran mesin. Anda mungkin mahu menggunakan R untuk komponen sesuatu. Saya dibesarkan, pada asalnya, contoh daripada jika anda menulis sebuah laman web dan anda mahu menjalankan automatik analisis statistik pelayan anda log pada waktu tertentu setiap hari, yang mungkin menjadi sesuatu yang sangat mudah untuk dilakukan dalam masa yang singkat R skrip yang anda boleh menjadualkan untuk menjalankan setiap malam, sebagai contoh. Dan saya pasti, jika ada apa-apa sebab anda akan mahu statistik atau keupayaan grafik dan mempunyai jangka ini secara automatik sebaliknya mempunyai untuk berinteraksi dengan perkara-perkara dalam Excel, sebagai contoh, bahawa sesuatu yang anda mungkin mahu menggunakan R untuk. Jadi apa-apa soalan lagi sebelum saya pergi? Tidak? Baiklah, baik, sekali lagi, terima kasih banyak untuk datang.