1 00:00:00,000 --> 00:00:05,691 2 00:00:05,691 --> 00:00:07,690 Connor HARRIS: Saya Masih pikir beberapa video yang menarik 3 00:00:07,690 --> 00:00:12,570 diproduksi oleh konsultan profesional yang menggunakan R banyak dalam pekerjaannya. 4 00:00:12,570 --> 00:00:16,329 >> Narator: Ada apa di balik statistik, analytics, dan visualisasi 5 00:00:16,329 --> 00:00:19,770 ilmuwan Data terang bahwa hari ini dan pemimpin bisnis bergantung pada 6 00:00:19,770 --> 00:00:22,012 untuk membuat keputusan yang kuat? 7 00:00:22,012 --> 00:00:23,540 Anda mungkin tidak selalu melihatnya. 8 00:00:23,540 --> 00:00:24,790 Tapi itu ada. 9 00:00:24,790 --> 00:00:29,460 Ini disebut R, open source r-- yang bahasa pemrograman statistik 10 00:00:29,460 --> 00:00:32,630 bahwa para ahli Data dunia atas penggunaan untuk semuanya 11 00:00:32,630 --> 00:00:35,350 dari pemetaan sosial yang luas dan tren pemasaran online 12 00:00:35,350 --> 00:00:39,210 untuk mengembangkan keuangan dan iklim model yang membantu mendorong ekonomi kita 13 00:00:39,210 --> 00:00:40,780 dan masyarakat. 14 00:00:40,780 --> 00:00:44,910 >> Tapi apa sebenarnya adalah R dan di mana R mulai? 15 00:00:44,910 --> 00:00:48,620 Nah awalnya, R mulai di sini dengan dua profesor 16 00:00:48,620 --> 00:00:51,950 yang ingin statistik yang lebih baik platform untuk siswa mereka. 17 00:00:51,950 --> 00:00:56,030 Jadi mereka menciptakan satu model setelah bahasa statistik S. 18 00:00:56,030 --> 00:01:00,480 Mereka, bersama dengan banyak orang lain, terus bekerja dan menggunakan R, 19 00:01:00,480 --> 00:01:05,489 menciptakan alat untuk R dan menemukan aplikasi baru untuk R setiap hari. 20 00:01:05,489 --> 00:01:07,750 >> Berkat ini usaha masyarakat di seluruh dunia, 21 00:01:07,750 --> 00:01:11,850 R terus tumbuh dengan ribuan dari yang dibuat pengguna perpustakaan dibangun 22 00:01:11,850 --> 00:01:15,500 untuk meningkatkan fungsionalitas dan R validasi kualitas orang-bersumber 23 00:01:15,500 --> 00:01:19,740 dan dukungan dari yang paling diakui pemimpin industri di setiap bidang yang 24 00:01:19,740 --> 00:01:25,040 menggunakan R. Yang sangat bagus, karena R adalah yang terbaik pada apa yang dilakukannya. 25 00:01:25,040 --> 00:01:28,540 Budding ahli dengan cepat dan mudah menafsirkan, berinteraksi dengan, 26 00:01:28,540 --> 00:01:33,790 dan memvisualisasikan data yang menunjukkan mereka cepat komunitas yang tumbuh dari pengguna di seluruh dunia R 27 00:01:33,790 --> 00:01:36,380 dan melihat bagaimana open source R terus membentuk 28 00:01:36,380 --> 00:01:39,340 masa depan statistik analisis dan ilmu data. 29 00:01:39,340 --> 00:01:44,660 30 00:01:44,660 --> 00:01:47,710 >> Connor HARRIS: OK, besar. 31 00:01:47,710 --> 00:01:50,360 Jadi presentasi saya sendiri akan menjadi sedikit lebih sadar. 32 00:01:50,360 --> 00:01:54,380 Ini tidak akan melibatkan banyak musik latar belakang yang menarik. 33 00:01:54,380 --> 00:01:59,160 Tapi seperti yang Anda lihat di video, R adalah semacam dari program bahasa tujuan umum. 34 00:01:59,160 --> 00:02:03,720 Tapi itu diciptakan sebagian besar untuk pekerjaan statistik. 35 00:02:03,720 --> 00:02:07,980 >> Jadi itu dirancang untuk statistik, untuk analisis data, untuk data mining. 36 00:02:07,980 --> 00:02:12,420 Dan sehingga Anda dapat melihat hal ini dalam banyak pilihan desain yang pembuat R 37 00:02:12,420 --> 00:02:13,320 terbuat. 38 00:02:13,320 --> 00:02:15,472 Ini dirancang untuk sebagian besar, orang-orang yang tidak 39 00:02:15,472 --> 00:02:17,930 ahli dalam pemrograman, yang hanya mengambil pemrograman 40 00:02:17,930 --> 00:02:23,460 di sisi sehingga mereka dapat melakukan pekerjaan mereka dalam ilmu sosial atau dalam statistik 41 00:02:23,460 --> 00:02:25,440 atau apapun. 42 00:02:25,440 --> 00:02:27,850 >> Ini memiliki banyak sangat perbedaan penting dari C. 43 00:02:27,850 --> 00:02:33,200 Tetapi sintaks dan paradigma yang menggunakan secara luas yang sama. 44 00:02:33,200 --> 00:02:36,830 Dan Anda harus merasa cukup banyak di rumah langsung dari kelelawar. 45 00:02:36,830 --> 00:02:38,520 Ini bahasa imperatif. 46 00:02:38,520 --> 00:02:40,260 >> Jangan khawatir terlalu banyak tentang itu jika Anda tidak tahu istilah. 47 00:02:40,260 --> 00:02:42,676 Tapi ada perbedaan antara imperatif, deklaratif, 48 00:02:42,676 --> 00:02:43,810 dan fungsional. 49 00:02:43,810 --> 00:02:47,600 Penting hanya berarti Anda membuat pernyataan yang pada dasarnya perintah. 50 00:02:47,600 --> 00:02:52,340 Dan kemudian interpreter atau komputer berikut satu per satu. 51 00:02:52,340 --> 00:02:56,630 Ini lemah diketik, ada tidak ada deklarasi tipe di R. 52 00:02:56,630 --> 00:02:59,130 >> Dan kemudian garis antara berbagai jenis 53 00:02:59,130 --> 00:03:03,920 sedikit lebih longgar daripada mereka berada di C, misalnya. 54 00:03:03,920 --> 00:03:06,450 Dan seperti yang saya katakan ada fasilitas yang sangat luas 55 00:03:06,450 --> 00:03:15,610 untuk grafik, untuk statistik analisis, untuk data mining. 56 00:03:15,610 --> 00:03:19,540 Ini baik dibangun ke dalam bahasa dan, sebagai video mengatakan, 57 00:03:19,540 --> 00:03:23,680 ribuan perpustakaan pihak ketiga yang Anda dapat men-download dan digunakan secara gratis 58 00:03:23,680 --> 00:03:25,340 dengan kondisi lisensi yang sangat longgar. 59 00:03:25,340 --> 00:03:28,800 60 00:03:28,800 --> 00:03:31,500 >> Jadi secara umum, saya akan merekomendasikan Anda melihat dua buku ini 61 00:03:31,500 --> 00:03:34,610 jika Anda akan bekerja pada R. Satu dari mereka adalah pejabat R pemula 62 00:03:34,610 --> 00:03:35,110 panduan. 63 00:03:35,110 --> 00:03:38,660 Ini dipelihara oleh pengembang inti R. 64 00:03:38,660 --> 00:03:42,400 Anda dapat men-download lagi, bebas dari biaya dan secara hukum di link di sana. 65 00:03:42,400 --> 00:03:45,430 66 00:03:45,430 --> 00:03:49,869 Semua slide ini akan pergi di internet, di website CS50 67 00:03:49,869 --> 00:03:50,660 setelah ini dilakukan. 68 00:03:50,660 --> 00:03:53,690 Jadi tidak perlu menyalin segalanya panik. 69 00:03:53,690 --> 00:03:56,800 >> Yang lain adalah buku oleh Cosma Shalizi, 70 00:03:56,800 --> 00:04:00,100 yang adalah seorang profesor statistik di Carnegie Mellon, disebut Data Lanjutan 71 00:04:00,100 --> 00:04:02,160 Analisis dari Dasar Point of View. 72 00:04:02,160 --> 00:04:04,010 Ini bukan terutama buku R. 73 00:04:04,010 --> 00:04:07,130 Ini adalah buku statistik dan itu buku analisis data. 74 00:04:07,130 --> 00:04:11,990 Tapi itu sangat mudah untuk orang-orang yang memiliki jumlah sedikit pengetahuan statistik. 75 00:04:11,990 --> 00:04:13,750 >> Saya tidak pernah mengambil kursus formal. 76 00:04:13,750 --> 00:04:17,269 Aku hanya tahu potongan-potongan dari berbagai mata pelajaran serumpun 77 00:04:17,269 --> 00:04:18,579 bahwa saya telah mengambil kursus di. 78 00:04:18,579 --> 00:04:21,839 Dan saya bisa memahami itu dengan baik. 79 00:04:21,839 --> 00:04:25,630 >> Semua angka yang diberikan di R. Mereka dibuat dalam R 80 00:04:25,630 --> 00:04:30,280 dan mereka juga memiliki daftar kode di bawah setiap gambar yang memberitahu Anda 81 00:04:30,280 --> 00:04:33,270 bagaimana Anda membuat setiap gambar dengan kode R. 82 00:04:33,270 --> 00:04:37,400 Dan itu sangat berguna jika Anda mencoba untuk meniru 83 00:04:37,400 --> 00:04:38,650 beberapa tokoh yang Anda lihat dalam sebuah buku. 84 00:04:38,650 --> 00:04:47,840 >> Dan lagi free download stat.cmu.edu/cshalizi/ Maaf, 85 00:04:47,840 --> 00:04:50,230 yang harus memangkas cshalizi tilde. 86 00:04:50,230 --> 00:04:53,150 Aku akan pastikan untuk memperbaiki yang ketika slide resmi naik. 87 00:04:53,150 --> 00:04:57,000 / ADAfaEPoV yang hanya akronim dari judul buku. 88 00:04:57,000 --> 00:04:59,850 89 00:04:59,850 --> 00:05:02,500 >> Jadi umum caveats-- R memiliki banyak kemampuan. 90 00:05:02,500 --> 00:05:05,331 Aku hanya akan dapat menutupi permukaan banyak hal. 91 00:05:05,331 --> 00:05:08,580 Juga bagian pertama dari seminar akan menjadi sesuatu dari dump data. 92 00:05:08,580 --> 00:05:11,437 Aku cukup menyesal tentang itu. 93 00:05:11,437 --> 00:05:13,770 Pada dasarnya, aku akan memperkenalkan Anda untuk banyak hal 94 00:05:13,770 --> 00:05:15,350 langsung dari kelelawar, akan secepat mungkin. 95 00:05:15,350 --> 00:05:17,058 Dan kemudian kita bisa bagian yang menyenangkan, yang 96 00:05:17,058 --> 00:05:20,570 demo di mana saya dapat menampilkan semua bahwa kita telah berbicara tentang di layar. 97 00:05:20,570 --> 00:05:23,321 Dan Anda dapat bermain-main sendiri. 98 00:05:23,321 --> 00:05:26,070 Jadi ada akan menjadi banyak hal-hal teknis muntah di sini. 99 00:05:26,070 --> 00:05:28,060 Jangan khawatir tentang menyalin semua yang turun. 100 00:05:28,060 --> 00:05:31,740 Karena A, Anda bisa mendapatkan semua barang di website CS50 kemudian. 101 00:05:31,740 --> 00:05:37,780 Dan B, itu tidak benar-benar penting menghafal ini dari slide. 102 00:05:37,780 --> 00:05:40,462 Ini lebih penting bahwa Anda mendapatkan beberapa fasilitas intuitif dengan itu 103 00:05:40,462 --> 00:05:44,220 dan yang berasal dari hanya bermain-main. 104 00:05:44,220 --> 00:05:45,720 >> Jadi mengapa menggunakan R? 105 00:05:45,720 --> 00:05:49,440 Pada dasarnya, jika Anda memiliki sebuah proyek yang melibatkan pertambangan set data yang besar, data 106 00:05:49,440 --> 00:05:52,664 visualisasi, Anda harus menggunakan R. Jika Anda 107 00:05:52,664 --> 00:05:55,830 melakukan analisis statistik rumit, yang akan sulit untuk di Excel, 108 00:05:55,830 --> 00:05:58,010 misalnya, itu akan juga good-- juga 109 00:05:58,010 --> 00:06:00,506 jika Anda melakukan statistik analisis yang otomatis. 110 00:06:00,506 --> 00:06:02,130 Katakanlah Anda mempertahankan sebuah website. 111 00:06:02,130 --> 00:06:06,320 Dan Anda ingin membaca log server setiap hari dan mengkompilasi beberapa daftar, 112 00:06:06,320 --> 00:06:10,320 seperti negara atas yang pengguna Anda berasal, 113 00:06:10,320 --> 00:06:15,100 beberapa ringkasan statistik pada berapa lama mereka menghabiskan di website Anda atau apa pun. 114 00:06:15,100 --> 00:06:16,910 Dan Anda ingin menjalankan ini setiap hari. 115 00:06:16,910 --> 00:06:20,280 >> Sekarang jika Anda melakukan ini dalam Excel, Anda harus pergi ke log server Anda, 116 00:06:20,280 --> 00:06:23,490 impor yang menjadi Excel spreadsheet data, 117 00:06:23,490 --> 00:06:24,910 menjalankan semua analisis secara manual. 118 00:06:24,910 --> 00:06:27,100 Dengan R, Anda hanya dapat menulis satu naskah. 119 00:06:27,100 --> 00:06:29,520 Jadwalkan untuk berjalan setiap hari dari sistem operasi Anda. 120 00:06:29,520 --> 00:06:33,657 Dan kemudian setiap malam di 2:00, atau setiap kali Anda jadwalkan untuk berjalan, 121 00:06:33,657 --> 00:06:35,990 akan melihat melalui Anda lalu lintas internet untuk hari itu. 122 00:06:35,990 --> 00:06:39,010 Dan kemudian pada hari berikutnya, Anda akan memiliki mengkilap, laporan baru ini 123 00:06:39,010 --> 00:06:41,710 atau apa pun dengan semua informasi yang Anda minta. 124 00:06:41,710 --> 00:06:44,960 125 00:06:44,960 --> 00:06:50,217 >> Jadi pada dasarnya R adalah untuk Cisco pemrograman dibandingkan analisis Cisco. 126 00:06:50,217 --> 00:06:51,050 Pendahuluan dilakukan. 127 00:06:51,050 --> 00:06:53,104 Mari kita masuk ke hal-hal yang nyata. 128 00:06:53,104 --> 00:06:55,020 Jadi ada tiga nyata jenis dalam bahasa. 129 00:06:55,020 --> 00:06:56,120 Ada tipe numerik. 130 00:06:56,120 --> 00:07:01,250 Ada semacam perbedaan antara bilangan bulat dan titik mengambang, 131 00:07:01,250 --> 00:07:02,769 tapi tidak benar-benar. 132 00:07:02,769 --> 00:07:04,560 Ada karakter mengetik, yang merupakan string. 133 00:07:04,560 --> 00:07:07,100 Dan ada logis mengetik, yang merupakan boolean. 134 00:07:07,100 --> 00:07:11,080 >> Dan Anda dapat mengkonversi antara jenis menggunakan fungsi ini sebagai numerik, 135 00:07:11,080 --> 00:07:15,220 sebagai karakter, sebagai logis. 136 00:07:15,220 --> 00:07:17,510 Jika Anda menelepon, misalnya, sebagai numerik pada string, 137 00:07:17,510 --> 00:07:20,030 itu akan mencoba untuk membaca string yang sebagai angka, dengan cara yang sama 138 00:07:20,030 --> 00:07:25,897 yang a2i dan scanf lakukan, dan C. Jika Anda menelepon sebagai numerik pada benar atau salah 139 00:07:25,897 --> 00:07:26,980 itu akan dikonversi ke 1 atau 0. 140 00:07:26,980 --> 00:07:29,110 Jika Anda menelepon sebagai karakter pada apa pun itu akan 141 00:07:29,110 --> 00:07:32,550 mengkonversi menjadi representasi string. 142 00:07:32,550 --> 00:07:34,990 >> Dan kemudian ada vektor dan matriks. 143 00:07:34,990 --> 00:07:37,580 Jadi vektor pada dasarnya 1 array dimensi. 144 00:07:37,580 --> 00:07:40,600 Mereka adalah apa yang kita sebut array di C. Matriks, 2 array dimensi. 145 00:07:40,600 --> 00:07:42,350 Dan kemudian lebih tinggi dimensi array Anda bisa 146 00:07:42,350 --> 00:07:48,560 memiliki 3, 4, 5 dimensi atau apa pun nilai-nilai numerik, string, 147 00:07:48,560 --> 00:07:52,860 nilai-nilai logis. 148 00:07:52,860 --> 00:07:55,380 >> Anda juga memiliki daftar yang semacam array asosiatif. 149 00:07:55,380 --> 00:07:57,390 Aku akan masuk ke yang sedikit. 150 00:07:57,390 --> 00:07:59,390 Jadi satu hal penting bahwa perjalanan orang di R 151 00:07:59,390 --> 00:08:01,470 adalah bahwa tidak ada nyata, jenis atom murni. 152 00:08:01,470 --> 00:08:05,870 Tidak ada perbedaan yang sebenarnya antara nomor, seperti nilai numerik, 153 00:08:05,870 --> 00:08:07,920 dan daftar nilai numerik. 154 00:08:07,920 --> 00:08:12,370 Nilai numerik sebenarnya sama dengan vektor dari panjang 1. 155 00:08:12,370 --> 00:08:14,959 Dan ini memiliki sejumlah implikasi penting. 156 00:08:14,959 --> 00:08:17,500 Satu, itu berarti bahwa Anda dapat melakukan hal yang sangat mudah yang melibatkan 157 00:08:17,500 --> 00:08:21,037 seperti menambahkan nomor ke vektor. 158 00:08:21,037 --> 00:08:23,120 R akan dasarnya angka tahu apa yang Anda maksud dengan itu. 159 00:08:23,120 --> 00:08:24,610 Dan aku akan mendapatkan bahwa dalam satu detik. 160 00:08:24,610 --> 00:08:27,930 Ini juga berarti bahwa tidak ada cara untuk tipe checker-- sejauh 161 00:08:27,930 --> 00:08:30,530 bahwa sesuatu seperti itu ada di R-- memberitahu 162 00:08:30,530 --> 00:08:33,780 ketika Anda sudah lulus dalam nilai tunggal ketika mengharapkan sebuah array atau sebaliknya. 163 00:08:33,780 --> 00:08:39,159 Dan yang dapat menyebabkan beberapa aneh masalah yang aku berlari ke dalam ketika 164 00:08:39,159 --> 00:08:42,252 Saya menggunakan R selama pekerjaan musim panas saya. 165 00:08:42,252 --> 00:08:43,710 Dan tidak ada campuran-jenis array. 166 00:08:43,710 --> 00:08:46,543 Jadi Anda tidak dapat memiliki sebuah array adalah elemen pertama, saya tidak tahu, 167 00:08:46,543 --> 00:08:49,332 string "John" dan Elemen kedua adalah nomor 42. 168 00:08:49,332 --> 00:08:52,540 Jika Anda mencoba untuk melakukan itu, maka Anda akan mendapatkan semuanya hanya dikonversi ke string. 169 00:08:52,540 --> 00:08:54,760 Jadi kita punya string John, tali 42. 170 00:08:54,760 --> 00:08:58,250 171 00:08:58,250 --> 00:09:02,025 >> Sintaksis sangat luar biasa features-- paling R sintaks sangat mirip dengan C. 172 00:09:02,025 --> 00:09:04,690 Ada beberapa perbedaan penting. 173 00:09:04,690 --> 00:09:05,620 Mengetik sangat lemah. 174 00:09:05,620 --> 00:09:07,360 Jadi tidak ada deklarasi variabel. 175 00:09:07,360 --> 00:09:12,670 Penugasan menggunakan aneh Operator error kurang dari tanda hubung. 176 00:09:12,670 --> 00:09:15,340 Komentar adalah dengan tanda hash. 177 00:09:15,340 --> 00:09:19,230 Saya kira sekarang hari kita menyebutnya hashtag meskipun itu tidak benar-benar tidak accurate-- 178 00:09:19,230 --> 00:09:21,810 slash ganda. 179 00:09:21,810 --> 00:09:24,710 >> Residu modular yang dengan tanda-tanda %%. 180 00:09:24,710 --> 00:09:30,172 Pembagian integer adalah dengan% /% yang sangat sulit untuk membaca ketika itu diproyeksikan 181 00:09:30,172 --> 00:09:30,880 di layar. 182 00:09:30,880 --> 00:09:34,150 183 00:09:34,150 --> 00:09:37,200 Anda bisa mendapatkan rentang bilangan bulat dengan usus besar. 184 00:09:37,200 --> 00:09:41,840 Jadi 2,5 akan memberikan vektor dari semua angka 2 sampai 5. 185 00:09:41,840 --> 00:09:44,530 >> Array satu-diindeks, yang sekrup banyak orang 186 00:09:44,530 --> 00:09:47,540 jika mereka dari lebih bahasa pemrograman yang khas, 187 00:09:47,540 --> 00:09:50,450 seperti C, di mana sebagian besar hal-hal yang nol-diindeks. 188 00:09:50,450 --> 00:09:54,420 Sekali lagi, ini adalah di mana warisan R sebagai bahasa untuk seperti tidak 189 00:09:54,420 --> 00:09:56,560 programmer profesional datang. 190 00:09:56,560 --> 00:09:59,680 Jika Anda seorang sosiolog atau seorang ekonom atau sesuatu 191 00:09:59,680 --> 00:10:01,980 dan Anda mencoba untuk menggunakan R pada dasarnya sebagai tambahan 192 00:10:01,980 --> 00:10:03,832 untuk Anda yang lebih penting kerja profesional, 193 00:10:03,832 --> 00:10:06,040 Anda akan menemukan satu-mengindeks sedikit lebih alami. 194 00:10:06,040 --> 00:10:09,890 Karena Anda mulai menghitung pada 1 dalam kehidupan sehari-hari, bukan 0. 195 00:10:09,890 --> 00:10:13,260 >> Untuk-loop, ini mirip dengan foreach yang membangun di PHP, 196 00:10:13,260 --> 00:10:17,090 yang Anda akan mendapatkan untuk belajar in-- segera. 197 00:10:17,090 --> 00:10:22,540 Yang untuk nilai di vektor dan maka Anda dapat melakukan hal-hal dengan nilai. 198 00:10:22,540 --> 00:10:24,040 AUDIENCE: Itu datang dalam kuliah. 199 00:10:24,040 --> 00:10:26,248 Connor HARRIS: Oh, itu datang kuliah, baik. 200 00:10:26,248 --> 00:10:29,815 AUDIENCE: Tugas, itu seharusnya menunjuk dari kanan ke kiri? 201 00:10:29,815 --> 00:10:31,440 Connor HARRIS: Dari kanan ke kiri, ya. 202 00:10:31,440 --> 00:10:34,720 Anda dapat menganggapnya sebagai nilai pada hak mendorong ke variabel 203 00:10:34,720 --> 00:10:36,240 di kiri. 204 00:10:36,240 --> 00:10:36,781 AUDIENCE: OK. 205 00:10:36,781 --> 00:10:39,770 206 00:10:39,770 --> 00:10:42,330 >> Connor HARRIS: Dan akhirnya sintaks fungsi agak aneh. 207 00:10:42,330 --> 00:10:48,460 Anda memiliki foo nama fungsi, ditugaskan fungsi kata kunci ini, diikuti 208 00:10:48,460 --> 00:10:51,530 oleh semua argumen dan kemudian tubuh fungsi setelah itu. 209 00:10:51,530 --> 00:10:53,280 Sekali lagi hal ini mungkin tampak sedikit aneh. 210 00:10:53,280 --> 00:10:57,181 Mereka akan menjadi sifat kedua setelah Anda bekerja dengan bahasa untuk sedikit. 211 00:10:57,181 --> 00:10:58,930 Jadi vektor, jalan Anda membangun vektor 212 00:10:58,930 --> 00:11:04,550 adalah Anda tipe C, yang merupakan kata kunci, maka semua angka yang Anda inginkan atau string 213 00:11:04,550 --> 00:11:06,490 atau apapun. 214 00:11:06,490 --> 00:11:07,995 Argumen juga menjadi vektor. 215 00:11:07,995 --> 00:11:09,620 Tapi array yang dihasilkan akan diratakan. 216 00:11:09,620 --> 00:11:14,385 Jadi Anda tidak dapat memiliki array mana beberapa elemen yang nomor satu 217 00:11:14,385 --> 00:11:17,010 dan beberapa elemen yang array sendiri. 218 00:11:17,010 --> 00:11:20,010 >> Jadi jika Anda mencoba untuk membangun sebuah Array adalah elemen pertama adalah 4 219 00:11:20,010 --> 00:11:22,370 dan elemen kedua adalah 3,5 array yang Anda akan 220 00:11:22,370 --> 00:11:25,890 hanya mendapatkan array tiga unsur, 4,3,5. 221 00:11:25,890 --> 00:11:27,760 Mereka tidak bisa menjadi tipe campuran. 222 00:11:27,760 --> 00:11:32,290 Jika Anda mencoba untuk membaca atau menulis di luar batas-batas vektor 223 00:11:32,290 --> 00:11:36,640 Anda akan mendapatkan nilai ini disebut NA sebuah yang merupakan singkatan dari nilai yang hilang. 224 00:11:36,640 --> 00:11:39,900 Dan ini dimaksudkan untuk seperti statistik yang 225 00:11:39,900 --> 00:11:43,080 bekerja dengan set data yang tidak lengkap. 226 00:11:43,080 --> 00:11:46,460 >> Jika Anda menerapkan fungsi yang seharusnya untuk mengambil hanya satu nomor ke array 227 00:11:46,460 --> 00:11:49,220 maka apa yang akan Anda dapatkan adalah, yang Fungsi akan memetakan lebih array. 228 00:11:49,220 --> 00:11:52,130 Jadi jika fungsi Anda katakanlah mengambil nomor dan pengembalian itu persegi. 229 00:11:52,130 --> 00:11:58,170 Anda menerapkan bahwa untuk array 2,3,5 Apa yang akan anda dapatkan adalah array 4,9,25. 230 00:11:58,170 --> 00:12:00,010 >> Dan itu sangat berguna karena itu berarti Anda 231 00:12:00,010 --> 00:12:03,374 tidak perlu menulis untuk loop untuk melakukan hal-hal yang sangat sederhana seperti menerapkan 232 00:12:03,374 --> 00:12:05,040 fungsi untuk semua anggota dari kumpulan data. 233 00:12:05,040 --> 00:12:08,557 Yang jika Anda bekerja dengan besar set data, Anda harus melakukan banyak. 234 00:12:08,557 --> 00:12:10,390 Fungsi biner adalah diterapkan entri dengan entri. 235 00:12:10,390 --> 00:12:12,430 Aku akan masuk ke itu. 236 00:12:12,430 --> 00:12:16,750 Anda dapat mengaksesnya dengan array atau vektor dengan tanda kurung persegi. 237 00:12:16,750 --> 00:12:22,300 Kurung sehingga nama vektor persegi 1 akan memberikan elemen pertama. 238 00:12:22,300 --> 00:12:25,510 Nama vektor kurung 2 akan memberikan elemen kedua. 239 00:12:25,510 --> 00:12:27,530 >> Anda dapat lulus pada vektor indeks dan Anda akan 240 00:12:27,530 --> 00:12:29,640 kembali keluar pada dasarnya faktor sub. 241 00:12:29,640 --> 00:12:34,990 Sehingga Anda dapat melakukan vektor nama kurung C, 2,4 dan Anda akan mendapatkan sebuah vektor yang mengandung 242 00:12:34,990 --> 00:12:38,804 kedua dan keempat elemen array. 243 00:12:38,804 --> 00:12:40,720 Dan jika Anda ingin hanya Ringkasan statistik cepat 244 00:12:40,720 --> 00:12:47,529 dari vektor seperti interkuartil Kisaran, median, maksimum, apa pun, 245 00:12:47,529 --> 00:12:49,820 Anda hanya bisa mengetik Ringkasan Nama vektor dan yang keluar. 246 00:12:49,820 --> 00:12:52,680 Itu tidak benar-benar berguna dalam pemrograman tetapi jika Anda bermain 247 00:12:52,680 --> 00:12:55,990 sekitar set data, itu berguna. 248 00:12:55,990 --> 00:12:58,650 >> Matrices-- dasarnya array dimensi yang lebih tinggi. 249 00:12:58,650 --> 00:13:01,190 Mereka memiliki sintaks notasi khusus. 250 00:13:01,190 --> 00:13:07,620 Matriks dengan array yang mendapat diisi in-- maaf, matriks dengan data, 251 00:13:07,620 --> 00:13:09,780 jumlah baris, jumlah kolom. 252 00:13:09,780 --> 00:13:13,180 Bila Anda memiliki beberapa data, itu mengisi array pada dasarnya akan atas ke bawah 253 00:13:13,180 --> 00:13:13,380 pertama. 254 00:13:13,380 --> 00:13:14,190 Kemudian kiri ke kanan. 255 00:13:14,190 --> 00:13:15,030 Jadi, seperti itu. 256 00:13:15,030 --> 00:13:17,809 257 00:13:17,809 --> 00:13:19,600 Dan R telah dibangun di perkalian matriks, 258 00:13:19,600 --> 00:13:24,310 spektral dekomposisi, diagonalisasi, banyak hal. 259 00:13:24,310 --> 00:13:27,785 Jika Anda ingin dimensi yang lebih tinggi array, sehingga 3, 4, 5, 260 00:13:27,785 --> 00:13:29,410 atau dimensi apa pun yang Anda bisa melakukan itu. 261 00:13:29,410 --> 00:13:34,400 Sintaks array yang redup sama c, maka daftar dimensi. 262 00:13:34,400 --> 00:13:38,620 Jadi jika Anda ingin dimensi array 4 dengan dimensi 4, 7, 8, 9, array, 263 00:13:38,620 --> 00:13:45,470 dim sama c (4,7,8,9). 264 00:13:45,470 --> 00:13:51,180 >> Anda mengakses nilai tunggal dengan kurung pertama masuk koma entri kedua. 265 00:13:51,180 --> 00:13:54,870 Anda bisa mendapatkan seluruh irisan baris atau kolom. 266 00:13:54,870 --> 00:13:59,900 Dengan sintaks yang tidak lengkap ini itu hanya baris nomor koma atau kolom koma 267 00:13:59,900 --> 00:14:00,400 jumlah. 268 00:14:00,400 --> 00:14:02,874 269 00:14:02,874 --> 00:14:04,540 Jadi daftar adalah jenis array terkait. 270 00:14:04,540 --> 00:14:06,360 Mereka memiliki sintaks sendiri di sini. 271 00:14:06,360 --> 00:14:08,320 Sekali lagi tidak panik menyalin semua turun ini. 272 00:14:08,320 --> 00:14:11,370 Ini hanya supaya orang akan melalui slide nanti 273 00:14:11,370 --> 00:14:13,089 memiliki semua ini dalam referensi yang bagus. 274 00:14:13,089 --> 00:14:16,130 Dan ini akan menjadi sangat alami sekali Aku benar-benar berjalan melalui demo. 275 00:14:16,130 --> 00:14:19,295 276 00:14:19,295 --> 00:14:20,920 Jadi berisi daftar array pada dasarnya terkait. 277 00:14:20,920 --> 00:14:27,040 Anda dapat mengakses nilai dengan Nama daftar, tanda dolar, kunci. 278 00:14:27,040 --> 00:14:31,370 Jadi jika daftar bernama foo, maka Anda dapat mengaksesnya seperti itu. 279 00:14:31,370 --> 00:14:37,032 Anda bisa mendapatkan pasangan kunci-nilai seluruh dengan melewati indeks braket persegi. 280 00:14:37,032 --> 00:14:39,240 Jika Anda membaca dari tidak ada kunci, Anda akan mendapatkan nol. 281 00:14:39,240 --> 00:14:41,150 Ini tidak akan kesalahan. 282 00:14:41,150 --> 00:14:43,590 Masalahnya, R akan melakukan seperti banyak dengan nol karena dapat. 283 00:14:43,590 --> 00:14:46,580 Dan ini dapat berarti bahwa jika Anda tidak mengharapkan untuk mendapatkan nol keluar 284 00:14:46,580 --> 00:14:51,840 beberapa daftar membaca, Anda akan mendapatkan beberapa kesalahan tak terduga lebih bawah 285 00:14:51,840 --> 00:14:52,620 garis. 286 00:14:52,620 --> 00:14:54,890 >> Hal ini terjadi kepada saya saya pekerjaan musim panas ketika saya menggunakan R 287 00:14:54,890 --> 00:14:58,410 di mana saya mengubah cara tertentu daftar didefinisikan di satu tempat 288 00:14:58,410 --> 00:15:05,410 tapi tidak berubah nanti pada kode yang membaca nilai dari itu. 289 00:15:05,410 --> 00:15:10,190 Dan apa yang terjadi adalah saya membaca nilai null dari daftar ini, 290 00:15:10,190 --> 00:15:13,090 melewati mereka ke fungsi, dan menjadi sangat bingung 291 00:15:13,090 --> 00:15:16,000 ketika aku sampai segala macam infinities acak tanam 292 00:15:16,000 --> 00:15:16,790 dalam fungsi ini. 293 00:15:16,790 --> 00:15:20,730 Karena jika Anda menerapkan maksimum tertentu atau fungsi minimum untuk null, 294 00:15:20,730 --> 00:15:22,570 Anda akan mendapatkan nilai-nilai yang tak terbatas keluar. 295 00:15:22,570 --> 00:15:26,400 296 00:15:26,400 --> 00:15:29,180 >> Data frame, mereka subclass dari daftar. 297 00:15:29,180 --> 00:15:31,170 Setiap nilai merupakan vektor yang sama panjang. 298 00:15:31,170 --> 00:15:34,220 Dan mereka digunakan untuk menyajikan, pada dasarnya, tabel data. 299 00:15:34,220 --> 00:15:36,175 Ada sintaks inisialisasi ini. 300 00:15:36,175 --> 00:15:38,800 Ini semua akan, lagi, jauh jelas ketika Anda mendapatkan untuk demo. 301 00:15:38,800 --> 00:15:42,240 302 00:15:42,240 --> 00:15:44,240 Dan hal yang baik tentang frame data adalah bahwa Anda 303 00:15:44,240 --> 00:15:49,380 dapat memberikan nama untuk semua kolom dan nama untuk semua baris. 304 00:15:49,380 --> 00:15:53,890 Dan sehingga membuat mengakses mereka sedikit ramah. 305 00:15:53,890 --> 00:15:59,130 Juga ini adalah bagaimana sebagian besar fungsi yang membaca data dari spreadsheet Excel 306 00:15:59,130 --> 00:16:03,820 atau dari file teks, misalnya, akan membaca dalam data mereka. 307 00:16:03,820 --> 00:16:07,555 Mereka akan memasukkannya ke dalam semacam frame data. 308 00:16:07,555 --> 00:16:09,680 Jadi functions-- fungsi sintaks agak aneh. 309 00:16:09,680 --> 00:16:16,160 Sekali lagi itu adalah nama fungsi, menetapkan, fungsi kata kunci ini dan kemudian 310 00:16:16,160 --> 00:16:17,900 daftar argumen. 311 00:16:17,900 --> 00:16:24,080 Jadi ada beberapa hal bagus tentang bagaimana fungsi bekerja di sini. 312 00:16:24,080 --> 00:16:28,170 Untuk satu, Anda benar-benar dapat menetapkan nilai default untuk argumen tertentu. 313 00:16:28,170 --> 00:16:32,910 Jadi Anda bisa mengatakan R1 equals-- Anda bisa mengatakan foo 314 00:16:32,910 --> 00:16:38,290 adalah suatu fungsi dimana R1 sama dengan sesuatu secara default jika pengguna menentukan 315 00:16:38,290 --> 00:16:39,090 tanpa argumen. 316 00:16:39,090 --> 00:16:41,932 Jika tidak, itu apa pun yang dimasukkan ke dalam. 317 00:16:41,932 --> 00:16:44,140 Dan ini sangat berguna karena banyak fungsi kami 318 00:16:44,140 --> 00:16:47,910 memiliki puluhan atau sering ratusan argumen. 319 00:16:47,910 --> 00:16:51,210 Misalnya yang untuk merencanakan grafik atau merencanakan plot pencar 320 00:16:51,210 --> 00:16:54,430 memiliki argumen yang mengontrol segala sesuatu dari judul dan sumbu 321 00:16:54,430 --> 00:16:59,512 label dengan warna garis regresi. 322 00:16:59,512 --> 00:17:01,470 Dan jadi jika Anda tidak ingin untuk membuat orang menentukan 323 00:17:01,470 --> 00:17:04,050 setiap satu dari ini ratusan argumen 324 00:17:04,050 --> 00:17:07,674 mengendalikan setiap aspek dari plot atau kemunduran atau apa pun, 325 00:17:07,674 --> 00:17:09,299 itu bagus untuk memiliki nilai default ini. 326 00:17:09,299 --> 00:17:12,700 327 00:17:12,700 --> 00:17:19,146 >> Dan kemudian Anda benar-benar dapat menulis seperti yang Anda lihat kembali ke sini. 328 00:17:19,146 --> 00:17:22,869 Atau menemukan contoh yang lebih baik. 329 00:17:22,869 --> 00:17:28,690 Ketika Anda memanggil fungsi Anda benar-benar bisa memanggil mereka menggunakan nama-nama argumen. 330 00:17:28,690 --> 00:17:33,919 Jadi di sini adalah contoh konstruktor matriks. 331 00:17:33,919 --> 00:17:34,960 Dibutuhkan tiga argumen. 332 00:17:34,960 --> 00:17:36,760 Biasanya Anda memiliki data, yang merupakan vektor. 333 00:17:36,760 --> 00:17:38,920 Anda memiliki N baris, yang adalah jumlah baris. 334 00:17:38,920 --> 00:17:41,160 Anda memiliki N cols-- jumlah kolom. 335 00:17:41,160 --> 00:17:43,920 Masalahnya adalah jika Anda mengetik N baris sama dengan apa pun 336 00:17:43,920 --> 00:17:46,520 dan N col sama apa pun saat Anda memanggil fungsi ini, 337 00:17:46,520 --> 00:17:47,770 Anda benar-benar dapat membalikkan mereka. 338 00:17:47,770 --> 00:17:51,590 Sehingga Anda dapat menempatkan N col pertama dan N baris kedua dan itu akan membuat perbedaan. 339 00:17:51,590 --> 00:17:54,660 Jadi itulah fitur kecil yang menyenangkan. 340 00:17:54,660 --> 00:17:56,260 >> Melakukan impor dan ekspor. 341 00:17:56,260 --> 00:18:00,010 Hal ini dapat dilakukan, pada dasarnya. 342 00:18:00,010 --> 00:18:03,816 Ada juga fasilitas untuk menulis sewenang-wenang R objek ke file biner 343 00:18:03,816 --> 00:18:05,190 dan kemudian membacanya kembali nanti. 344 00:18:05,190 --> 00:18:08,030 Yang berguna jika Anda melakukan besar interaktif sesi R 345 00:18:08,030 --> 00:18:12,850 dan Anda perlu untuk menyimpan hal yang sangat cepat. 346 00:18:12,850 --> 00:18:16,460 Secara default R memiliki direktori kerja bahwa file bisa ditulis ke 347 00:18:16,460 --> 00:18:19,410 dan membaca kembali dari. 348 00:18:19,410 --> 00:18:22,350 Anda dapat melihat bahwa dengan getwg, mengubahnya dengan setdw. 349 00:18:22,350 --> 00:18:25,630 Tidak ada yang menarik di sini terutama 350 00:18:25,630 --> 00:18:28,270 >> Jadi sekarang statistik aktual stuff-- regresi multilinear. 351 00:18:28,270 --> 00:18:30,960 352 00:18:30,960 --> 00:18:34,910 Jadi sintaks biasa adalah sedikit rumit. 353 00:18:34,910 --> 00:18:37,260 Model adalah objek besar pada dasarnya. 354 00:18:37,260 --> 00:18:39,910 Itu akan ditugaskan untuk lm, yang merupakan fungsi panggilan. 355 00:18:39,910 --> 00:18:43,840 Elemen pertama, y x1 tilde ditambah apa pun. 356 00:18:43,840 --> 00:18:46,574 357 00:18:46,574 --> 00:18:47,990 Sintaks saya di sini adalah sedikit membingungkan. 358 00:18:47,990 --> 00:18:49,490 Aku cukup menyesal, ini adalah cara standar 359 00:18:49,490 --> 00:18:50,990 bahwa buku ilmu komputer melakukan hal ini. 360 00:18:50,990 --> 00:18:54,890 Tapi itu agak aneh. 361 00:18:54,890 --> 00:18:58,200 >> Jadi pada dasarnya, itu lm kurung, item pertama 362 00:18:58,200 --> 00:19:06,730 adalah variable-- maaf, tergantung x1 tilde variabel ditambah x2 ditambah 363 00:19:06,730 --> 00:19:10,910 namun banyak independen variabel yang Anda miliki. 364 00:19:10,910 --> 00:19:14,240 Dan kemudian ini baik dapat vektor, semua sama panjang. 365 00:19:14,240 --> 00:19:16,220 Atau mereka dapat kolom header dalam frame data 366 00:19:16,220 --> 00:19:18,553 Anda hanya menentukan di kedua argumen frame data. 367 00:19:18,553 --> 00:19:23,270 368 00:19:23,270 --> 00:19:26,380 >> Anda juga dapat menentukan formula yang lebih kompleks 369 00:19:26,380 --> 00:19:31,990 sehingga Anda tidak perlu linear regresi satu variabel dependen, 370 00:19:31,990 --> 00:19:34,440 atau satu vektor pada vektor yang sudah ada. 371 00:19:34,440 --> 00:19:38,070 Anda dapat melakukan, misalnya, komponen vektor y kuadrat ditambah 1 372 00:19:38,070 --> 00:19:42,100 dan regresi yang melawan log dari beberapa vektor lainnya. 373 00:19:42,100 --> 00:19:45,200 Anda dapat mencetak ringkasan dari model dengan perintah ini disebut 374 00:19:45,200 --> 00:19:48,607 summary-- hanya ringkasan parens Model. 375 00:19:48,607 --> 00:19:50,190 Sekali lagi hal lain yang harus menjelaskan. 376 00:19:50,190 --> 00:19:55,407 377 00:19:55,407 --> 00:19:58,615 Sesuatu yang lain yang akan mendapatkan dikoreksi ketika slide naik di internet. 378 00:19:58,615 --> 00:20:01,127 379 00:20:01,127 --> 00:20:03,210 Jika Anda hanya ingin menghitung korelasi sederhana 380 00:20:03,210 --> 00:20:09,170 Anda dapat menggunakan vektor korelasi 1 vektor 2 fungsi inti. 381 00:20:09,170 --> 00:20:11,856 Metode ini secara default Pearson korelasi. 382 00:20:11,856 --> 00:20:13,480 Mereka adalah orang-orang standar yang dapat Anda lakukan. 383 00:20:13,480 --> 00:20:15,990 Ada juga Spearman dan Kendell korelasi 384 00:20:15,990 --> 00:20:19,530 yang beberapa variasi Agar korelasi peringkat. 385 00:20:19,530 --> 00:20:23,600 Yah mereka tidak menghitung produk saat antara vektor sendiri, 386 00:20:23,600 --> 00:20:28,511 tapi pesanan peringkat vektor ini. 387 00:20:28,511 --> 00:20:29,510 Saya akan menjelaskan nanti. 388 00:20:29,510 --> 00:20:30,120 >> AUDIENCE: Pertanyaan Cepat 389 00:20:30,120 --> 00:20:30,360 >> CONNER HARRIS: Tentu. 390 00:20:30,360 --> 00:20:33,151 >> AUDIENCE: Jadi, ketika Anda sedang menghitung untuk korelasi sederhana lakukan 391 00:20:33,151 --> 00:20:37,655 Anda berasumsi bahwa ada statistik signifikansi untuk korelasi? 392 00:20:37,655 --> 00:20:39,030 CONNER HARRIS: Anda tidak perlu. 393 00:20:39,030 --> 00:20:41,840 394 00:20:41,840 --> 00:20:43,960 Sebuah lm pada dasarnya hanya sebuah mesin. 395 00:20:43,960 --> 00:20:47,690 Ini akan mengambil dalam dua hal dan itu akan memuntahkan 396 00:20:47,690 --> 00:20:49,770 koefisien untuk paling cocok line. 397 00:20:49,770 --> 00:20:52,310 Hal ini juga melaporkan standar kesalahan pada orang-koefisien. 398 00:20:52,310 --> 00:20:55,865 Dan akan memberitahu Anda, seperti adalah mencegat signifikan secara statistik 399 00:20:55,865 --> 00:20:56,740 atau perbedaan dari 0. 400 00:20:56,740 --> 00:20:59,400 Adalah kemiringan yang terbaik fit garis statistik 401 00:20:59,400 --> 00:21:01,510 berbeda dari nol, dan lain-lain. 402 00:21:01,510 --> 00:21:06,260 Jadi mengasumsikan apa-apa, saya pikir adalah jawaban terbaik untuk pertanyaan Anda. 403 00:21:06,260 --> 00:21:07,410 OKE. 404 00:21:07,410 --> 00:21:14,650 >> Plotting-- sehingga alasan utama Anda harus menggunakan R, seperti regresi multilinear. 405 00:21:14,650 --> 00:21:17,320 Pada dasarnya setiap bahasa memiliki beberapa fasilitas untuk itu. 406 00:21:17,320 --> 00:21:21,365 Dan sintaks jujur ​​R untuk regresi adalah rahasia sedikit. 407 00:21:21,365 --> 00:21:22,990 Tapi plotting adalah di mana ia benar-benar bersinar. 408 00:21:22,990 --> 00:21:28,090 >> Fungsi pekerja keras adalah petak dan dibutuhkan dua vektor, x dan y. 409 00:21:28,090 --> 00:21:33,010 Dan kemudian elips singkatan yang sangat sejumlah besar argumen opsional yang 410 00:21:33,010 --> 00:21:39,190 mengendalikan segala sesuatu dari judul untuk warna dari berbagai lini atau berbagai titik, 411 00:21:39,190 --> 00:21:40,200 dengan jenis plot. 412 00:21:40,200 --> 00:21:42,250 Anda dapat memiliki pencar plot atau plot line. 413 00:21:42,250 --> 00:21:47,900 414 00:21:47,900 --> 00:21:49,710 >> [Tidak terdengar] 2 vektor yang sama panjang. 415 00:21:49,710 --> 00:21:53,780 Anda dapat mendahului ini dengan melampirkan frame data dalam script Anda. 416 00:21:53,780 --> 00:22:01,220 Dan ini akan membiarkan Anda hanya menggunakan kolom header bukannya vektor terpisah. 417 00:22:01,220 --> 00:22:05,410 Anda dapat menambahkan baris paling cocok dan lokal kurva regresi untuk grafik Anda. 418 00:22:05,410 --> 00:22:09,390 >> Perintah-perintah ini tercantum di sini, ab line dan garis, 419 00:22:09,390 --> 00:22:11,640 secara default ini mendapatkan ditulis ke dalam jendela pop up 420 00:22:11,640 --> 00:22:15,560 karena mengasumsikan bahwa Anda menggunakan R interaktif. 421 00:22:15,560 --> 00:22:17,310 Jika Anda tidak Anda bisa menulis dua file yang 422 00:22:17,310 --> 00:22:21,600 berada di benar-benar format yang Anda inginkan. 423 00:22:21,600 --> 00:22:25,410 Maaf, saya memiliki kesalahan ketik saya baru sadar. 424 00:22:25,410 --> 00:22:30,887 425 00:22:30,887 --> 00:22:32,720 Jika Anda ingin membuka perangkat grafis lain 426 00:22:32,720 --> 00:22:39,200 Anda dapat menggunakan fungsi ini disebut PNG atau JPEG atau banyak format gambar lainnya. 427 00:22:39,200 --> 00:22:42,319 Dan Anda dapat menulis grafik untuk File apapun nama yang Anda tentukan. 428 00:22:42,319 --> 00:22:45,110 Untuk membatalkan bahwa Anda harus use-- Saya tidak menulis ini di slide-- yang 429 00:22:45,110 --> 00:22:49,650 tapi ada fungsi yang disebut dev dot off yang tidak mengambil argumen. 430 00:22:49,650 --> 00:22:51,517 >> Lalu ada fasilitas untuk 3D plotting 431 00:22:51,517 --> 00:22:53,350 dan untuk kontur merencanakan jika Anda ingin membuat 432 00:22:53,350 --> 00:22:55,700 grafik dari dua variabel independen. 433 00:22:55,700 --> 00:22:57,150 Saya tidak akan masuk ke ini sekarang. 434 00:22:57,150 --> 00:22:59,130 >> Ada juga beberapa Fasilitas untuk animasi 435 00:22:59,130 --> 00:23:01,300 mereka biasanya dikelola oleh pihak ketiga. 436 00:23:01,300 --> 00:23:06,330 Saya telah melakukan animasi dengan R grafik, tapi saya belum pernah menggunakan pihak ketiga tersebut 437 00:23:06,330 --> 00:23:06,940 perpustakaan. 438 00:23:06,940 --> 00:23:09,929 Jadi saya tidak bisa benar-benar membuktikan untuk seberapa baik mereka. 439 00:23:09,929 --> 00:23:12,220 Apa yang saya sarankan jika Anda ingin untuk membuat animasi menggunakan R 440 00:23:12,220 --> 00:23:16,480 adalah Anda dapat menulis semua frame untuk animasi 441 00:23:16,480 --> 00:23:18,470 dan kemudian Anda dapat menggunakan program-- pihak ketiga 442 00:23:18,470 --> 00:23:23,630 yang khas disebut FFmpeg atau ImageMagick-- untuk menjahit 443 00:23:23,630 --> 00:23:26,540 semua frame Anda ke dalam satu animasi. 444 00:23:26,540 --> 00:23:28,380 >> Jadi waktu untuk demo. 445 00:23:28,380 --> 00:23:31,030 446 00:23:31,030 --> 00:23:37,189 Jadi jika Anda menggunakan Unix seperti sistem yang Linux BSD tapi yang menggunakan BSD. 447 00:23:37,189 --> 00:23:39,730 OS X membuka jendela terminal dan ketik R pada command prompt. 448 00:23:39,730 --> 00:23:42,820 Jika Anda memiliki R studio atau sejenisnya, yang juga bekerja. 449 00:23:42,820 --> 00:23:46,270 Untuk pengguna Windows Anda harus dapat menemukan R di menu Start Anda. 450 00:23:46,270 --> 00:23:50,390 Itu harus disebut sesuatu seperti R x64 3 titik apapun. 451 00:23:50,390 --> 00:23:53,110 Terbuka yang di atas sana. 452 00:23:53,110 --> 00:23:58,850 >> Jadi sekarang saya hanya membuka jendela terminal. 453 00:23:58,850 --> 00:24:02,562 Baiklah, pencarian. 454 00:24:02,562 --> 00:24:03,520 AUDIENCE: Command-Space 455 00:24:03,520 --> 00:24:06,675 CONNER HARRIS: Command-Space, terima kasih. 456 00:24:06,675 --> 00:24:10,030 Saya tidak biasanya menggunakan Mac. 457 00:24:10,030 --> 00:24:13,310 Terminal, menunjukkan jendela baru. 458 00:24:13,310 --> 00:24:18,120 Jendela baru adalah pengaturan dasar, R. Jadi Anda harus mendapatkan 459 00:24:18,120 --> 00:24:22,230 pesan selamat datang, sesuatu seperti ini. 460 00:24:22,230 --> 00:24:31,060 >> Jadi saya menggunakan R interaktif. 461 00:24:31,060 --> 00:24:32,719 Anda juga dapat menulis skrip R tentu saja. 462 00:24:32,719 --> 00:24:34,510 Pada dasarnya script berjalan dengan cara yang sama persis seperti 463 00:24:34,510 --> 00:24:40,250 jika Anda sedang duduk di depan komputer mengetik di setiap baris satu per satu. 464 00:24:40,250 --> 00:24:42,660 Jadi mari kita mulai dengan membuat vektor. 465 00:24:42,660 --> 00:24:46,230 Sebuah panah C 1, 2. 466 00:24:46,230 --> 00:24:49,400 1, 2, 4. 467 00:24:49,400 --> 00:24:50,050 OK, yakin. 468 00:24:50,050 --> 00:24:51,630 Aku bisa membuat ukuran font yang lebih besar. 469 00:24:51,630 --> 00:24:53,030 >> AUDIENCE: Command-Plus 470 00:24:53,030 --> 00:24:53,650 >> CONNER HARRIS: Command-Plus. 471 00:24:53,650 --> 00:24:54,191 Perintah-Plus. 472 00:24:54,191 --> 00:24:57,610 473 00:24:57,610 --> 00:25:00,370 Baiklah, bagaimana itu? 474 00:25:00,370 --> 00:25:00,870 Baik? 475 00:25:00,870 --> 00:25:01,551 OKE. 476 00:25:01,551 --> 00:25:03,300 Jadi mari kita mulai dengan menyatakan daftar vektor. 477 00:25:03,300 --> 00:25:08,710 Lakukan, panah, C 1,2,4. 478 00:25:08,710 --> 00:25:11,181 Kita bisa melihat. 479 00:25:11,181 --> 00:25:12,680 Jangan khawatir tentang braket ada. 480 00:25:12,680 --> 00:25:18,590 Kurung begitu jika Anda mencetak array yang sangat panjang, kita dapat di mana Anda berada. 481 00:25:18,590 --> 00:25:26,987 Salah satu contoh akan jika saya hanya ingin kisaran 2-200. 482 00:25:26,987 --> 00:25:28,820 Jika saya mencetak sangat Array panjang, tanda kurung 483 00:25:28,820 --> 00:25:31,060 hanya jadi saya bisa menjaga track yang indeks 484 00:25:31,060 --> 00:25:33,250 kita berada di jika saya mencari melalui ini secara visual. 485 00:25:33,250 --> 00:25:36,570 486 00:25:36,570 --> 00:25:38,280 Jadi bagaimanapun, kami memiliki. 487 00:25:38,280 --> 00:25:43,326 >> Jadi saya katakan sebelumnya bahwa array berinteraksi sangat baik dengan, misalnya, 488 00:25:43,326 --> 00:25:44,450 operasi unary seperti ini. 489 00:25:44,450 --> 00:25:46,500 Jadi apa yang Anda pikirkan aku akan dapatkan jika saya ketik plus 1? 490 00:25:46,500 --> 00:25:49,630 491 00:25:49,630 --> 00:25:51,140 Ya. 492 00:25:51,140 --> 00:25:54,250 Baiklah, sekarang saya akan membuat Array yang berbeda ini. 493 00:25:54,250 --> 00:26:01,650 Katakanlah b c 20,40, 80. 494 00:26:01,650 --> 00:26:03,400 Jadi apa yang Anda pikirkan perintah ini akan melakukan? 495 00:26:03,400 --> 00:26:09,962 496 00:26:09,962 --> 00:26:10,670 Tambahkan elemen. 497 00:26:10,670 --> 00:26:14,950 Dan jadi pada dasarnya itulah apa yang dilakukannya. 498 00:26:14,950 --> 00:26:16,740 Jadi ini cukup nyaman. 499 00:26:16,740 --> 00:26:23,800 Jadi saya bagaimana saya melakukan ini. c adalah, katakanlah, 6 kali 1 sampai 10. 500 00:26:23,800 --> 00:26:26,789 501 00:26:26,789 --> 00:26:28,830 Jadi apa yang saya ingin melihat terkandung, menurut Anda? 502 00:26:28,830 --> 00:26:37,110 503 00:26:37,110 --> 00:26:38,110 Jadi semua kelipatan enam. 504 00:26:38,110 --> 00:26:42,170 Sekarang, apa yang Anda pikirkan akan terjadi jika saya melakukan ini? 505 00:26:42,170 --> 00:26:48,090 Aku akan membuat ini sedikit lebih jelas, c, c. 506 00:26:48,090 --> 00:26:50,365 Jadi apa yang terjadi, apakah Anda berpikir, jika saya melakukan ini? 507 00:26:50,365 --> 00:26:51,488 plus c. 508 00:26:51,488 --> 00:26:55,550 509 00:26:55,550 --> 00:26:56,050 [Tidak terdengar] 510 00:26:56,050 --> 00:26:58,552 511 00:26:58,552 --> 00:27:02,350 >> AUDIENCE: Entah kesalahan atau hanya menambah pertama tiga unsur. 512 00:27:02,350 --> 00:27:04,510 >> CONNER HARRIS: Tidak cukup. 513 00:27:04,510 --> 00:27:05,522 Ini adalah apa yang kita punya. 514 00:27:05,522 --> 00:27:08,910 Apa yang terjadi adalah lebih pendek array, sebuah, mendapat bersepeda. 515 00:27:08,910 --> 00:27:13,990 Jadi kita punya 124, 124, 124. 516 00:27:13,990 --> 00:27:15,710 Ya. 517 00:27:15,710 --> 00:27:18,940 Dan pada dasarnya, Anda dapat melihat perilaku ini sebelumnya, plus 1, 518 00:27:18,940 --> 00:27:22,190 sebagai subclass dari perilaku ini, di mana array terpendek hanya nomor 519 00:27:22,190 --> 00:27:25,410 1, yang merupakan array satu elemen. 520 00:27:25,410 --> 00:27:27,740 Saya hanya akan mengatakan vektor semua waktu bukan array, 521 00:27:27,740 --> 00:27:30,290 karena itulah yang r dokumentasi biasanya. 522 00:27:30,290 --> 00:27:33,070 Ini adalah kebiasaan yang mendarah daging c. 523 00:27:33,070 --> 00:27:37,590 >> OK, jadi sekarang kita memiliki array ini. 524 00:27:37,590 --> 00:27:38,830 Jadi kita memiliki array ini, c. 525 00:27:38,830 --> 00:27:41,380 Kita bisa mendapatkan ringkasan statistik c, ringkasan c. 526 00:27:41,380 --> 00:27:46,920 527 00:27:46,920 --> 00:27:48,280 Dan itu bagus. 528 00:27:48,280 --> 00:27:51,070 529 00:27:51,070 --> 00:27:52,670 Jadi sekarang mari kita melakukan beberapa hal matriks. 530 00:27:52,670 --> 00:27:56,160 Katakanlah m adalah matriks. 531 00:27:56,160 --> 00:27:57,780 Mari kita membuat tiga oleh tiga satu. 532 00:27:57,780 --> 00:28:01,630 Jadi nrows sama 3, dan ncols sama 3. 533 00:28:01,630 --> 00:28:04,190 534 00:28:04,190 --> 00:28:10,710 Dan untuk data mari do-- jadi apa Menurut Anda ini akan lakukan? 535 00:28:10,710 --> 00:28:15,310 536 00:28:15,310 --> 00:28:16,580 >> Benar, itu yang berikutnya. 537 00:28:16,580 --> 00:28:17,970 Ini nrow dan ncolumn. 538 00:28:17,970 --> 00:28:22,164 539 00:28:22,164 --> 00:28:24,580 Jadi apa yang saya lakukan adalah saya sudah menyatakan tiga oleh tiga matriks 540 00:28:24,580 --> 00:28:26,950 dan saya sudah berlalu dalam array sembilan elemen. 541 00:28:26,950 --> 00:28:30,530 Jadi logaritma dari semua elemen satu sampai sembilan. 542 00:28:30,530 --> 00:28:33,400 543 00:28:33,400 --> 00:28:37,285 Dan semua nilai-nilai mengisi up array-- maaf? 544 00:28:37,285 --> 00:28:38,660 AUDIENCE: Mereka adalah basis 10 log? 545 00:28:38,660 --> 00:28:41,284 CONNER HARRIS: Tidak, log logaritma natural, sehingga basis e. 546 00:28:41,284 --> 00:28:44,886 547 00:28:44,886 --> 00:28:47,010 Ya, jika Anda ingin dasar 10 log, saya pikir Anda akan memiliki 548 00:28:47,010 --> 00:28:51,620 login apapun, dibagi dengan log 10. 549 00:28:51,620 --> 00:28:56,750 Dan data dari [tidak terdengar] hanya mengisi array, sehingga atas ke bawah, 550 00:28:56,750 --> 00:28:59,490 kemudian kiri ke kanan. 551 00:28:59,490 --> 00:29:06,890 Dan jika Anda ingin melakukan beberapa lainnya array, katakanlah n adalah matriks. 552 00:29:06,890 --> 00:29:10,317 Mari kita lakukan, saya tidak tahu, 2-13. 553 00:29:10,317 --> 00:29:11,900 Atau aku akan melakukan sesuatu yang lebih menarik. 554 00:29:11,900 --> 00:29:13,770 Saya akan melakukan 2-4. 555 00:29:13,770 --> 00:29:15,780 nrow equals, katakanlah, 3. 556 00:29:15,780 --> 00:29:18,992 ncol sama dengan 4. 557 00:29:18,992 --> 00:29:20,360 n. 558 00:29:20,360 --> 00:29:22,090 Jadi kita punya ini. 559 00:29:22,090 --> 00:29:26,130 >> Dan jika kita ingin melipatgandakan ini, kita akan melakukan n persen kali persen, 560 00:29:26,130 --> 00:29:27,680 karena itulah n. 561 00:29:27,680 --> 00:29:30,234 562 00:29:30,234 --> 00:29:31,400 Dan kami memiliki produk matriks. 563 00:29:31,400 --> 00:29:33,970 564 00:29:33,970 --> 00:29:37,810 Oleh mereka cara, apakah Anda melihat bagaimana ketika saya menyatakan n, 2 sampai 4 565 00:29:37,810 --> 00:29:43,570 vektor mendapat bersepeda sampai itu mengisi semua n? 566 00:29:43,570 --> 00:29:45,710 Jika Anda ingin mengambil dekomposisi eigen, 567 00:29:45,710 --> 00:29:46,960 ini adalah sesuatu yang bisa kita lakukan dengan sangat mudah. 568 00:29:46,960 --> 00:29:47,709 Kita bisa melakukan eigen n. 569 00:29:47,709 --> 00:29:52,290 570 00:29:52,290 --> 00:29:54,600 Dan jadi ini adalah pertama kami perjumpaan dengan daftar. 571 00:29:54,600 --> 00:29:57,000 >> Jadi eigen n adalah daftar dengan dua tombol. 572 00:29:57,000 --> 00:29:58,430 Nilai-nilai, yang merupakan array ini di sini. 573 00:29:58,430 --> 00:30:01,030 Dan vektor, yang merupakan array ini di sini. 574 00:30:01,030 --> 00:30:08,240 Jadi jika Anda ingin mengambil, katakanlah, kolom ketiga ini 575 00:30:08,240 --> 00:30:13,080 dari vektor eigen matriks, karena vektor eigen adalah vektor kolom. 576 00:30:13,080 --> 00:30:24,400 Jadi kita bisa melakukan eigen vec tanda n dollar vektor, koma 3, dari [tidak terdengar]. 577 00:30:24,400 --> 00:30:29,800 578 00:30:29,800 --> 00:30:30,900 Vec. 579 00:30:30,900 --> 00:30:34,100 Apakah itu, seperti yang Anda harapkan. 580 00:30:34,100 --> 00:30:39,210 >> Kemudian katakan n kali persen kali vec. 581 00:30:39,210 --> 00:30:42,610 582 00:30:42,610 --> 00:30:48,320 Jadi hasilnya di sini jelas terlihat seperti jika kita mengambil nilai eigen ketiga di sini, 583 00:30:48,320 --> 00:30:50,390 yang sesuai dengan eigenvector ketiga. 584 00:30:50,390 --> 00:30:53,190 Itu hanya dikalikan segala sesuatu di eigenvector ini, komponen-bijaksana, 585 00:30:53,190 --> 00:30:53,990 oleh eigenvalue. 586 00:30:53,990 --> 00:30:57,760 Dan itulah apa yang kita harapkan, karena itulah yang eigen yang. 587 00:30:57,760 --> 00:31:00,890 Apakah ada orang di sini tidak diambil aljabar linier? 588 00:31:00,890 --> 00:31:02,530 Beberapa orang, OK. 589 00:31:02,530 --> 00:31:04,030 Hanya mengubah otak Anda off untuk sedikit. 590 00:31:04,030 --> 00:31:07,490 591 00:31:07,490 --> 00:31:20,720 Dan memang jika kita mengambil eigen n nilai tanda dolar 3 kali vec, 592 00:31:20,720 --> 00:31:21,810 juga mendapatkan hal yang sama. 593 00:31:21,810 --> 00:31:24,726 Ini diformat berbeda sebagai berturut-turut vektor bukan vektor kolom, 594 00:31:24,726 --> 00:31:25,640 tapi masalah besar. 595 00:31:25,640 --> 00:31:29,430 596 00:31:29,430 --> 00:31:35,170 Dan mereka pada dasarnya bagus hal-hal yang dapat kita lakukan dengan matriks, 597 00:31:35,170 --> 00:31:36,489 menunjukkan daftar. 598 00:31:36,489 --> 00:31:39,030 Aku harus menunjukkan bagus hal tentang fungsi juga. 599 00:31:39,030 --> 00:31:41,750 >> Jadi mari kita say-- [tidak terdengar] fungsi, panggilan mari 600 00:31:41,750 --> 00:31:51,960 itu func terhadap fungsi n n squared-- sebenarnya, itu tidak benar-benar yang terbaik. 601 00:31:51,960 --> 00:31:55,632 a, b, a kuadrat ditambah b. 602 00:31:55,632 --> 00:31:58,547 603 00:31:58,547 --> 00:32:00,380 Jadi satu hal tentang fungsi, sekali lagi, adalah mereka 604 00:32:00,380 --> 00:32:01,963 tidak perlu pernyataan kembali eksplisit. 605 00:32:01,963 --> 00:32:04,250 Jadi Anda dapat hanya-- yang Pernyataan terakhir dievaluasi 606 00:32:04,250 --> 00:32:07,502 akan menjadi pernyataan kembali, atau nilai kembali. 607 00:32:07,502 --> 00:32:10,460 Jadi dalam hal ini, kita hanya mengevaluasi satu pernyataan, sebuah kuadrat ditambah b. 608 00:32:10,460 --> 00:32:12,043 Itu akan menjadi nilai kembali default. 609 00:32:12,043 --> 00:32:14,530 Tidak ada salahnya untuk dimasukkan ke dalam kembali nilai-nilai secara eksplisit, 610 00:32:14,530 --> 00:32:16,880 terutama jika Anda sedang berhadapan dengan fungsi logika yang sangat rumit 611 00:32:16,880 --> 00:32:17,380 mengalir. 612 00:32:17,380 --> 00:32:18,450 Tapi Anda tidak membutuhkan mereka. 613 00:32:18,450 --> 00:32:24,890 Jadi sekarang kita bisa melakukan func 5, 1, dan ini pada dasarnya adalah apa yang Anda harapkan. 614 00:32:24,890 --> 00:32:29,146 615 00:32:29,146 --> 00:32:31,270 Hal lain yang bisa kita lakukan, kita benar-benar bisa melakukan func b 616 00:32:31,270 --> 00:32:33,260 sama dengan 1, yang sama dengan 5. 617 00:32:33,260 --> 00:32:36,870 618 00:32:36,870 --> 00:32:40,770 Jadi jika kita menentukan jumlah sini, yang argumen pergi ke mana argumen 619 00:32:40,770 --> 00:32:44,680 dalam fungsi, kita dapat flip sekitar nilai-nilai ini di mana pun kita inginkan. 620 00:32:44,680 --> 00:32:48,405 >> AUDIENCE: Apakah ada alasan untuk menulis itu dengan b 621 00:32:48,405 --> 00:32:52,404 sama sebagai lawan hanya menggunakan angka dan koma? 622 00:32:52,404 --> 00:32:54,820 CONNER HARRIS: Ya, biasanya melakukan hal ini jika Anda memiliki fungsi 623 00:32:54,820 --> 00:32:58,540 dengan banyak argumen. 624 00:32:58,540 --> 00:33:00,690 Yang mungkin sering seperti bendera yang hanya akan Anda 625 00:33:00,690 --> 00:33:03,130 ingin menggunakan di kesempatan langka. 626 00:33:03,130 --> 00:33:06,740 Dan cara ini Anda dapat only-- Anda dapat mengacu pada argumen tertentu 627 00:33:06,740 --> 00:33:09,110 bahwa Anda ingin menggunakan nilai non-default untuk, 628 00:33:09,110 --> 00:33:14,470 dan Anda tidak harus menulis sebuah sekelompok bendera sama palsu setelah mereka. 629 00:33:14,470 --> 00:33:19,710 Atau aku bisa menulis ini lagi dengan nilai default seperti b sama dengan 2. 630 00:33:19,710 --> 00:33:26,289 Dan kemudian saya bisa melakukan f func, Saya akan melakukan 4, 1 kali ini. 631 00:33:26,289 --> 00:33:28,580 Dan 17, yaitu 4 kuadrat ditambah 1, seperti yang Anda harapkan. 632 00:33:28,580 --> 00:33:34,290 >> Tapi saya juga bisa saja menyebutnya dengan func 4, 633 00:33:34,290 --> 00:33:36,970 dan saya akan mendapatkan 18, karena Saya tidak menentukan b. 634 00:33:36,970 --> 00:33:38,550 Jadi b mendapat nilai default dari 2. 635 00:33:38,550 --> 00:33:41,700 636 00:33:41,700 --> 00:33:47,200 >> OK, jadi sekarang jika Anda berikut bersama dengan demo, 637 00:33:47,200 --> 00:33:51,010 ketik baris ini di perintah Anda meminta dan lihat apa yang muncul. 638 00:33:51,010 --> 00:33:52,090 Sebenarnya, jangan lakukan itu. 639 00:33:52,090 --> 00:33:52,590 Ketik ini. 640 00:33:52,590 --> 00:33:57,780 641 00:33:57,780 --> 00:34:01,000 Anda harus mendapatkan sesuatu seperti ini. 642 00:34:01,000 --> 00:34:04,780 Jadi mtcars adalah dibangun dalam data ditetapkan untuk demonstrasi ini 643 00:34:04,780 --> 00:34:13,550 tujuan yang datang with-- yang datang di secara default dengan distribusi r Anda. 644 00:34:13,550 --> 00:34:19,211 Ini adalah kompilasi dari statistik dari a 1974 edisi majalah Motor Trend ini 645 00:34:19,211 --> 00:34:20,710 pada sejumlah model mobil yang berbeda. 646 00:34:20,710 --> 00:34:28,270 >> Jadi ada mil per galon, cylinders-- Saya lupa apa Disp is-- tenaga kuda. 647 00:34:28,270 --> 00:34:31,610 648 00:34:31,610 --> 00:34:32,420 Mungkin. 649 00:34:32,420 --> 00:34:36,920 Jika Anda hanya mobil Google MT, maka salah satu hasil pertama 650 00:34:36,920 --> 00:34:38,730 akan dari dokumentasi r resmi 651 00:34:38,730 --> 00:34:41,080 dan itu akan menjelaskan semua bidang data ini. 652 00:34:41,080 --> 00:34:47,020 Jadi berat badan is-- wt adalah berat mobil di ton. 653 00:34:47,020 --> 00:34:48,880 Q sec adalah waktu seperempat mil. 654 00:34:48,880 --> 00:34:52,409 655 00:34:52,409 --> 00:34:55,850 Jadi sekarang kita bisa melakukan beberapa hal menyenangkan tentang mobil MT adalah bidang data. 656 00:34:55,850 --> 00:35:01,640 >> Jadi kita bisa melakukan hal-hal seperti nama baris, mobil mt. 657 00:35:01,640 --> 00:35:05,490 Dan ini adalah daftar semua baris di kumpulan data yang nama-nama mobil. 658 00:35:05,490 --> 00:35:10,780 Kita bisa melakukan colnames, mobil mt ini. 659 00:35:10,780 --> 00:35:15,500 Jika Anda melakukan mobil mt, Indeks sub-numerik, seperti 2. 660 00:35:15,500 --> 00:35:18,177 kita mendapatkan kolom kedua dari ini, yang akan menjadi silinder. 661 00:35:18,177 --> 00:35:19,370 >> AUDIENCE: Apa yang Anda lakukan? 662 00:35:19,370 --> 00:35:21,570 >> CONNER HARRIS: Saya mengetik mt mobil, kurung e, 663 00:35:21,570 --> 00:35:24,180 yang memberi saya yang kedua kolom dari mobil mt. 664 00:35:24,180 --> 00:35:34,501 665 00:35:34,501 --> 00:35:38,110 Atau jika kita ingin berturut-turut, saya bisa mengetik mtcars koma 2, misalnya. 666 00:35:38,110 --> 00:35:41,850 667 00:35:41,850 --> 00:35:46,390 Sebaliknya 2 koma, seperti itu. 668 00:35:46,390 --> 00:35:48,880 Dan itu berlaku berturut-turut Anda. 669 00:35:48,880 --> 00:35:54,680 Ini di sini hanya memberi Anda kolom, tetapi kolom sebagai vektor. 670 00:35:54,680 --> 00:36:04,634 671 00:36:04,634 --> 00:36:06,425 Aku baru sadar sekarang saya lupa untuk menunjukkan 672 00:36:06,425 --> 00:36:09,150 beberapa hal keren tentang vektor yang dapat Anda lakukan dengan indeks. 673 00:36:09,150 --> 00:36:10,480 Jadi biarkan aku melakukan itu sekarang. 674 00:36:10,480 --> 00:36:17,130 Jadi mari kita lakukan c gets-- menempatkan ini pada pause-- 2 kali 1 sampai 10. 675 00:36:17,130 --> 00:36:21,360 Jadi c hanya akan menjadi vektor 2 melalui 20. 676 00:36:21,360 --> 00:36:24,640 Saya dapat mengambil elemen seperti ini, c2. 677 00:36:24,640 --> 00:36:30,942 Aku bisa lulus dalam vektor seperti ini, biarkan aku c-- 678 00:36:30,942 --> 00:36:34,470 menggunakan nama yang berbeda dari c, seperti vec c. 679 00:36:34,470 --> 00:36:37,591 680 00:36:37,591 --> 00:36:39,340 Pada dasarnya, aku melakukan ini sehingga Anda tidak mendapatkan 681 00:36:39,340 --> 00:36:45,010 bingung antara c sebagai Fungsi konstruksi vektor, 682 00:36:45,010 --> 00:36:48,800 dan kemudian c sebagai nama variabel. 683 00:36:48,800 --> 00:36:53,120 Kurung vec c 4, 5, 7. 684 00:36:53,120 --> 00:36:56,540 Ini akan mendapatkan saya keluar keempat, kelima, dan tujuh elemen array. 685 00:36:56,540 --> 00:37:01,740 Aku bisa melakukan vec, dimasukkan ke dalam negatif Indeks, seperti negatif 4. 686 00:37:01,740 --> 00:37:06,500 Itu akan membuat saya keluar dengan unsur keempat dihapus. 687 00:37:06,500 --> 00:37:10,140 Kemudian jika saya ingin melakukan irisan, Aku bisa melakukan vec 2 sampai 6. 688 00:37:10,140 --> 00:37:15,480 2 usus 6 hanyalah vektor, yaitu 2, 3, 4, 5, 6. 689 00:37:15,480 --> 00:37:18,230 Meludah keluar itu. 690 00:37:18,230 --> 00:37:20,770 >> Jadi bagaimanapun, kembali ke mobil mt. 691 00:37:20,770 --> 00:37:26,650 692 00:37:26,650 --> 00:37:28,450 Jadi mari kita melakukan beberapa regresi. 693 00:37:28,450 --> 00:37:34,240 Katakanlah Model gets-- mari linear regress-- Saya tidak tahu. 694 00:37:34,240 --> 00:37:41,780 Pertama mari kita jangan melampirkan mtcars, tentu saja. 695 00:37:41,780 --> 00:37:44,870 696 00:37:44,870 --> 00:38:00,010 Jadi [tidak terdengar] Model lm, mari kita mundur mil per galon pada berat tilde. 697 00:38:00,010 --> 00:38:03,300 Dan kemudian frame data adalah mtcars. 698 00:38:03,300 --> 00:38:06,830 Sehingga model summary. 699 00:38:06,830 --> 00:38:12,900 700 00:38:12,900 --> 00:38:15,595 >> OK, jadi ini terlihat sedikit rumit. 701 00:38:15,595 --> 00:38:19,380 Tapi pada dasarnya, melihat seolah-olah kita mencoba untuk mengekspresikan mil per galon 702 00:38:19,380 --> 00:38:23,970 sebagai fungsi linear dari berat badan, kemudian kami punya baris ini di sini, 703 00:38:23,970 --> 00:38:28,730 yang penyadapan di 37,28. 704 00:38:28,730 --> 00:38:33,830 37,28 akan menjadi mil teoritis per galon dari mobil yang beratnya nol. 705 00:38:33,830 --> 00:38:41,210 Dan kemudian untuk setiap ton tambahan, Anda mengetuk sekitar lima mil per galon 706 00:38:41,210 --> 00:38:42,440 off itu. 707 00:38:42,440 --> 00:38:45,120 Kedua koefisien ini Anda bisa melihat, kesalahan standar ada. 708 00:38:45,120 --> 00:38:47,870 Dan mereka sangat signifikan secara statistik. 709 00:38:47,870 --> 00:38:55,740 >> Jadi kita bisa sangat yakin untuk 1 e 10 ke negatif 10. 710 00:38:55,740 --> 00:38:59,510 Jadi 1 kali sesuatu ke negatif 10, bahwa jika Anda membuat mobil lebih berat, 711 00:38:59,510 --> 00:39:01,440 itu akan memiliki mil per galon lebih buruk. 712 00:39:01,440 --> 00:39:04,940 713 00:39:04,940 --> 00:39:07,250 Atau kita dapat menguji beberapa model lain. 714 00:39:07,250 --> 00:39:09,230 Seperti bukannya kemunduran ini pada berat badan, 715 00:39:09,230 --> 00:39:12,600 mari kita mundur pada log berat, karena mungkin berat efektif 716 00:39:12,600 --> 00:39:15,690 jarak tempuh entah bagaimana tidak linear. 717 00:39:15,690 --> 00:39:18,540 >> Ini memberi kami r kuadrat dari 0,7528. 718 00:39:18,540 --> 00:39:19,610 Jadi mari kita coba ini. 719 00:39:19,610 --> 00:39:21,485 Kali ini mari kita melakukan variabel yang berbeda, juga. 720 00:39:21,485 --> 00:39:22,500 Model2. 721 00:39:22,500 --> 00:39:24,800 Jadi Singkatnya, model2. 722 00:39:24,800 --> 00:39:28,200 723 00:39:28,200 --> 00:39:31,390 Baiklah, jadi sekali lagi, kita mendapat fit baris terbaik kami di sini. 724 00:39:31,390 --> 00:39:36,160 Dan ini time-- ini mengatakan, pada dasarnya bahwa setiap kali Anda 725 00:39:36,160 --> 00:39:38,090 meningkatkan berat mobil dengan faktor e 726 00:39:38,090 --> 00:39:40,580 Anda kehilangan ini banyak mil per galon. 727 00:39:40,580 --> 00:39:43,210 728 00:39:43,210 --> 00:39:50,326 >> Dan kali ini standar sisa kami kesalahan itu-- itu tidak masalah, benar-benar. 729 00:39:50,326 --> 00:39:53,540 Kesalahan residual standar pada dasarnya hanya standard error 730 00:39:53,540 --> 00:39:57,760 bahwa Anda telah meninggalkan setelah Anda mengambil garis tren. 731 00:39:57,760 --> 00:40:02,805 Dan r kami kuadrat sini adalah 0,81, yang sedikit lebih baik dari apa yang 732 00:40:02,805 --> 00:40:07,640 kita sebelumnya, 0,52. 733 00:40:07,640 --> 00:40:09,750 >> Dan jadi sekarang mari kita menambahkan istilah untuk regresi ini. 734 00:40:09,750 --> 00:40:13,020 Jadi mari kita mundur mil per galon baik di log dari bobot 735 00:40:13,020 --> 00:40:21,130 dan, mari kita lakukan, q mil, kuartal waktu mil. 736 00:40:21,130 --> 00:40:26,190 OK, itu harus memiliki the---apa, qsec. 737 00:40:26,190 --> 00:40:26,690 Qsec. 738 00:40:26,690 --> 00:40:30,630 739 00:40:30,630 --> 00:40:35,000 Actually-- maaf, apa? 740 00:40:35,000 --> 00:40:37,000 Biarkan saya menyebut sesuatu ini lain selain model2. 741 00:40:37,000 --> 00:40:38,000 Biarkan saya sebut model3 ini. 742 00:40:38,000 --> 00:40:40,860 743 00:40:40,860 --> 00:40:42,900 Dan jadi sekarang kita dapat melakukan Ringkasan model3. 744 00:40:42,900 --> 00:40:46,850 745 00:40:46,850 --> 00:40:49,100 Dan lagi, ini pada dasarnya adalah apa yang Anda harapkan. 746 00:40:49,100 --> 00:40:51,750 Anda memiliki mencegat positif. 747 00:40:51,750 --> 00:40:54,550 Efektif meningkatkan berat badan adalah negatif. 748 00:40:54,550 --> 00:40:58,490 Dan efektif meningkatkan kuartal waktu mil 749 00:40:58,490 --> 00:41:02,420 adalah positif, tapi meskipun kurang daripada berat badan. 750 00:41:02,420 --> 00:41:06,010 Sekarang intuitif, Anda dapat membuat rasa ini dengan mengatakan berpikir tentang mobil sport. 751 00:41:06,010 --> 00:41:08,950 Ada akselerasi sangat cepat, kali seperempat mil yang sangat singkat. 752 00:41:08,950 --> 00:41:13,729 Mereka juga akan menggunakan gas lebih, sedangkan mobil lebih masuk akal akan 753 00:41:13,729 --> 00:41:16,020 memiliki akselerasi lebih lambat, kali seperempat mil lebih tinggi, 754 00:41:16,020 --> 00:41:20,890 dan menggunakan gas kurang ,, jadi mil per galon lebih tinggi. 755 00:41:20,890 --> 00:41:21,390 Besar. 756 00:41:21,390 --> 00:41:23,431 Dan jadi sekarang saatnya untuk merencanakan sesuatu seperti ini. 757 00:41:23,431 --> 00:41:27,810 Jadi mari kita do-- begitu telanjang tulang yang bisa kita lakukan plots-- 758 00:41:27,810 --> 00:41:35,280 karena saya sudah melekat ini data frame before-- kita hanya bisa melakukan plot, mpg wt. 759 00:41:35,280 --> 00:41:38,762 760 00:41:38,762 --> 00:41:39,720 Jadikan ini sedikit lebih besar. 761 00:41:39,720 --> 00:41:55,050 762 00:41:55,050 --> 00:41:57,350 Ada, pada dasarnya kita memiliki scatter plot, tapi poin 763 00:41:57,350 --> 00:41:58,690 adalah agak sulit untuk melihat hal ini. 764 00:41:58,690 --> 00:42:04,860 765 00:42:04,860 --> 00:42:10,900 >> Saya tidak ingat begitu saja apa yang sintaks adalah untuk mengubah plot. 766 00:42:10,900 --> 00:42:14,100 Jadi saya kira ini akan menjadi waktu yang baik untuk membuka, 767 00:42:14,100 --> 00:42:18,000 ada bantuan builtin sangat bagus fitur, bantuan kutipan berfungsi nama. 768 00:42:18,000 --> 00:42:21,690 Kami akan membawa pada dasarnya apa pun yang Anda inginkan. 769 00:42:21,690 --> 00:42:28,010 770 00:42:28,010 --> 00:42:32,730 Saya pikir saya benar-benar akan melakukan ini Jenis sama p untuk poin plot. 771 00:42:32,730 --> 00:42:34,369 Apakah itu mengubah apa pun? 772 00:42:34,369 --> 00:42:35,160 Dan tidak, tidak benar-benar. 773 00:42:35,160 --> 00:42:39,160 774 00:42:39,160 --> 00:42:39,660 Baiklah. 775 00:42:39,660 --> 00:42:46,760 776 00:42:46,760 --> 00:42:49,580 >> Untuk beberapa alasan, ketika saya melakukan ini di komputer saya sendiri beberapa waktu lalu, 777 00:42:49,580 --> 00:42:52,080 semua poin pencar yang lebih jelas. 778 00:42:52,080 --> 00:43:06,390 779 00:43:06,390 --> 00:43:13,970 Bagaimanapun, adalah pencar jenis terlihat? 780 00:43:13,970 --> 00:43:15,124 Ada satu ada. 781 00:43:15,124 --> 00:43:16,165 Beberapa ada, beberapa di sana. 782 00:43:16,165 --> 00:43:18,860 783 00:43:18,860 --> 00:43:21,185 Anda dapat semacam melihat mereka, kan? 784 00:43:21,185 --> 00:43:24,310 Jadi jika kita ingin menambahkan cocok baris terbaik plot ini di sini, yang sedikit telanjang 785 00:43:24,310 --> 00:43:29,290 bones-- biarkan aku membuatnya sedikit lebih bagus. 786 00:43:29,290 --> 00:43:38,075 Main sama terhadap berat badan. 787 00:43:38,075 --> 00:43:46,322 788 00:43:46,322 --> 00:43:49,740 Mil per galon. 789 00:43:49,740 --> 00:43:53,570 Sekali lagi, Anda dapat melihat bagaimana berguna argumen opsional di sini dengan juga 790 00:43:53,570 --> 00:43:58,090 tidak harus meletakkan segala sesuatu dalam urutan tertentu dengan argumen Keyboard 791 00:43:58,090 --> 00:44:01,600 ketika Anda memiliki plot, karena ini mengambil banyak argumen. 792 00:44:01,600 --> 00:44:07,490 >> Xlab sama berat, berat, ton. 793 00:44:07,490 --> 00:44:10,091 794 00:44:10,091 --> 00:44:10,590 Baiklah. 795 00:44:10,590 --> 00:44:17,340 796 00:44:17,340 --> 00:44:21,480 OK, ya, perangkat ini sedang sedikit mengganggu. 797 00:44:21,480 --> 00:44:30,160 Tapi Anda bisa melihat semacam di atas sana, ada judul grafik di samping. 798 00:44:30,160 --> 00:44:35,260 Di sini there's-- di bagian bawah di sini ada label sumbu. 799 00:44:35,260 --> 00:44:37,700 Saya tidak ingat begitu saja apa perintah ars-- 800 00:44:37,700 --> 00:44:41,000 apa fungsi adalah untuk meningkatkan ukuran label-label dan judul, 801 00:44:41,000 --> 00:44:43,110 tapi mereka ada. 802 00:44:43,110 --> 00:44:46,625 >> Dan jika kita ingin menambahkan paling cocok line, 803 00:44:46,625 --> 00:44:49,250 kita bisa melakukan sesuatu like-- Saya memiliki sintaks yang ditulis di sini. 804 00:44:49,250 --> 00:44:52,280 805 00:44:52,280 --> 00:45:11,130 Jadi ingat kita hanya menambah model adalah mpg, berat badan, mtcars. 806 00:45:11,130 --> 00:45:16,470 Dan jadi jika saya ingin menambahkan cocok terbaik line, aku bisa melakukan model b line. 807 00:45:16,470 --> 00:45:18,556 Dan booming, kami memiliki garis cocok terbaik. 808 00:45:18,556 --> 00:45:19,970 Ini agak sulit untuk melihat lagi. 809 00:45:19,970 --> 00:45:22,178 Aku cukup menyesal tentang kesulitan teknologi. 810 00:45:22,178 --> 00:45:25,230 Tapi itu berjalan pada dasarnya atas kiri ke kanan bawah. 811 00:45:25,230 --> 00:45:27,550 >> Dan jika skala yang lebih besar, Anda bisa melihat 812 00:45:27,550 --> 00:45:31,260 yang mencegat adalah apa yang Anda bisa menemukan dari statistik ringkasan 813 00:45:31,260 --> 00:45:34,790 jika Anda mengetik Model summary. 814 00:45:34,790 --> 00:45:40,130 OK, jadi saya berharap semua orang mendapat sesuatu dari rasa apa 815 00:45:40,130 --> 00:45:42,030 R adalah, apa itu baik untuk. 816 00:45:42,030 --> 00:45:45,520 Anda bisa membuat plot jauh lebih bagus daripada ini pada waktu Anda sendiri, jika Anda suka. 817 00:45:45,520 --> 00:45:50,100 818 00:45:50,100 --> 00:45:53,950 >> Jadi antarmuka fungsi asing. 819 00:45:53,950 --> 00:46:00,330 Ini adalah sesuatu yang tidak biasanya tercakup dalam kuliah pengantar 820 00:46:00,330 --> 00:46:03,560 atau pengantar apa pun untuk r. 821 00:46:03,560 --> 00:46:05,584 Ini tidak mungkin Anda akan membutuhkannya. 822 00:46:05,584 --> 00:46:08,000 Namun, saya menemukan itu berguna dalam proyek saya sendiri di masa lalu. 823 00:46:08,000 --> 00:46:10,984 Dan tidak ada yang baik tutorial untuk itu secara online. 824 00:46:10,984 --> 00:46:12,900 Jadi aku hanya akan terburu-buru Anda semua melalui ini 825 00:46:12,900 --> 00:46:16,606 dan kemudian Anda bebas untuk pergi. 826 00:46:16,606 --> 00:46:18,480 Dan jadi asing antarmuka fungsi yang 827 00:46:18,480 --> 00:46:23,130 Anda dapat menggunakan untuk memanggil untuk melihat fungsi dengan R. internal, 828 00:46:23,130 --> 00:46:29,850 R dibangun pada aritmatika C. R adalah hanya C 64-bit floating point aritmatika, 829 00:46:29,850 --> 00:46:32,852 yang merupakan jenis double [tidak terdengar]. 830 00:46:32,852 --> 00:46:35,060 Dan Anda mungkin ingin melakukan ini untuk sekelompok alasan. 831 00:46:35,060 --> 00:46:39,250 Untuk satu, R ditafsirkan, itu tidak dikompilasi ke kode mesin. 832 00:46:39,250 --> 00:46:42,170 Sehingga Anda dapat menulis ulang Anda loop batin dalam C dan kemudian mendapatkan 833 00:46:42,170 --> 00:46:45,920 keuntungan dari menggunakan R. Seperti itu sedikit lebih mudah daripada C. 834 00:46:45,920 --> 00:46:48,899 Ini memiliki grafik yang lebih baik Fasilitas dan yang lainnya. 835 00:46:48,899 --> 00:46:51,690 Dan sementara masih bisa mendapatkan kecepatan tertinggi dari loop batin, 836 00:46:51,690 --> 00:46:53,650 yang mana Anda benar-benar membutuhkannya. 837 00:46:53,650 --> 00:46:56,330 >> Menggunakan kembali perpustakaan C yang ada, itu juga penting. 838 00:46:56,330 --> 00:47:00,320 Jika Anda memiliki beberapa perpustakaan C untuk seperti, Saya tidak tahu, transformasi Fourier, 839 00:47:00,320 --> 00:47:05,190 atau sangat Arkean Prosedur statistik yang digunakan 840 00:47:05,190 --> 00:47:09,470 dalam astrofisika energi tinggi atau sesuatu, saya tidak tahu. 841 00:47:09,470 --> 00:47:13,058 Energi astrofisika tinggi bahkan tidak berpikir, saya pikir. 842 00:47:13,058 --> 00:47:16,480 Tapi Anda bisa melakukan itu bukan memiliki menulis R pelabuhan asli mereka. 843 00:47:16,480 --> 00:47:22,725 Dan pada the-- dan lagi, seperti jika Anda terlihat di sebagian besar R default perpustakaan, 844 00:47:22,725 --> 00:47:25,600 di internal, internal yang akan menggunakan fungsi asing 845 00:47:25,600 --> 00:47:26,724 antarmuka yang sangat luas. 846 00:47:26,724 --> 00:47:31,630 Mereka akan memiliki hal-hal seperti Fourier mengubah atau komputasi korelasi 847 00:47:31,630 --> 00:47:34,890 koefisien ditulis dalam C, dan mereka akan hanya R bungkus sekitar mereka. 848 00:47:34,890 --> 00:47:38,230 Antarmuka adalah Agak sulit. kupikir 849 00:47:38,230 --> 00:47:43,750 Kesulitan yang berlebihan dalam banyak petunjuk Anda akan menemukan. 850 00:47:43,750 --> 00:47:46,200 Namun demikian, itu adalah sedikit membingungkan. 851 00:47:46,200 --> 00:47:48,650 Dan saya belum mampu menemukan tutorial yang baik untuk itu, 852 00:47:48,650 --> 00:47:51,980 jadi ini adalah sekarang. 853 00:47:51,980 --> 00:47:55,360 Sekali lagi, segmen ini seluruh lebih untuk referensi nanti. 854 00:47:55,360 --> 00:47:57,687 Jangan khawatir tentang menyalin semuanya turun sekarang. 855 00:47:57,687 --> 00:48:00,020 Jadi instruksi berikut adalah untuk sistem Unix-seperti, 856 00:48:00,020 --> 00:48:05,150 Linux, BSD, OS X. Saya tidak tahu bagaimana ini bekerja pada Windows, 857 00:48:05,150 --> 00:48:08,280 tapi tolong hanya tidak melakukan Anda tugas akhir pada Windows. 858 00:48:08,280 --> 00:48:10,790 859 00:48:10,790 --> 00:48:12,460 Anda benar-benar tidak ingin. 860 00:48:12,460 --> 00:48:14,770 Unix adalah set jauh lebih baik untuk pemrograman santai. 861 00:48:14,770 --> 00:48:19,320 862 00:48:19,320 --> 00:48:21,390 Jadi, pada dasarnya asing fungsi antarmuka. 863 00:48:21,390 --> 00:48:24,420 Jika Anda ingin menulis C fungsi untuk digunakan dengan R, 864 00:48:24,420 --> 00:48:27,250 itu harus mengambil semua argumen sebagai pointer. 865 00:48:27,250 --> 00:48:30,666 >> Jadi untuk nilai-nilai tunggal, ini berarti itu menunjuk ke nilai. 866 00:48:30,666 --> 00:48:33,040 Untuk array, ini adalah pointer ke elemen pertama, yang 867 00:48:33,040 --> 00:48:36,750 adalah apa nama array yang benar-benar berarti. 868 00:48:36,750 --> 00:48:40,140 Sekali lagi, ini adalah sesuatu yang Anda harus memiliki cukup benar-benar turun setelah p ditetapkan lima. 869 00:48:40,140 --> 00:48:43,334 Nama Array hanya pointer ke elemen pertama, 870 00:48:43,334 --> 00:48:44,750 Jenis floating-point adalah ganda. 871 00:48:44,750 --> 00:48:47,310 Dan fungsi Anda harus kembali batal. 872 00:48:47,310 --> 00:48:50,810 Satu-satunya cara yang bisa benar-benar tahu apa yang terjadi R 873 00:48:50,810 --> 00:48:54,410 adalah dengan memodifikasi memori yang R memberi untuk itu melalui fungsi asing 874 00:48:54,410 --> 00:48:54,910 antarmuka. 875 00:48:54,910 --> 00:48:58,180 876 00:48:58,180 --> 00:49:00,127 >> Jadi saya telah menulis ini contoh di sini, ini adalah 877 00:49:00,127 --> 00:49:02,460 fungsi yang menghitung penggunaan dot produk dari dua vektor. 878 00:49:02,460 --> 00:49:05,060 Dibutuhkan dua argumen, vec1, vec2, yang merupakan vektor sendiri, 879 00:49:05,060 --> 00:49:06,934 dan kemudian n, yang merupakan panjang, karena sekali lagi, 880 00:49:06,934 --> 00:49:12,630 R telah dibangun di [tidak terdengar] untuk mengetahui panjang vektor, tetapi C tidak. 881 00:49:12,630 --> 00:49:16,182 Dalam C, vektor adalah sewenang-wenang sepotong dipisahkan dari memori. 882 00:49:16,182 --> 00:49:17,890 Jadi cara yang Anda bisa menghitung dot produk 883 00:49:17,890 --> 00:49:23,470 hanya mengatur ini keluar parameter ke nol dan kemudian iterate melalui 884 00:49:23,470 --> 00:49:28,760 dari 1 untuk membintangi n, karena n adalah pointer ke panjang, 885 00:49:28,760 --> 00:49:32,929 hanya menambahkan sesuatu untuk parameter ini. 886 00:49:32,929 --> 00:49:34,970 Dan itu bisa menjadi latihan yang bagus jika Anda akan melakukan 887 00:49:34,970 --> 00:49:37,270 ini untuk menulis dua fungsi C terpisah. 888 00:49:37,270 --> 00:49:41,970 Salah satunya has-- salah satu dari mereka hanya mengambil argumen dan jenis 889 00:49:41,970 --> 00:49:43,970 bahwa mereka biasanya akan berada di C. 890 00:49:43,970 --> 00:49:47,780 >> Jadi Dibutuhkan array argumen sebagai pointer. 891 00:49:47,780 --> 00:49:57,090 Tapi satu-nilai argumen seperti n, itu hanya membutuhkan sebagai nilai-nilai oleh copy, 892 00:49:57,090 --> 00:49:57,917 tanpa petunjuk. 893 00:49:57,917 --> 00:49:59,750 Dan kemudian tidak [Tidak terdengar] keluar pointer. 894 00:49:59,750 --> 00:50:01,290 Dan kemudian Anda dapat memiliki berbeda, pada dasarnya, 895 00:50:01,290 --> 00:50:03,623 fungsi pembungkus yang pada dasarnya menangani persyaratan 896 00:50:03,623 --> 00:50:07,740 dari fungsi asing antarmuka untuk Anda. 897 00:50:07,740 --> 00:50:11,840 >> Cara Anda menyebutnya dalam R adalah, sekali Anda memiliki fungsi Anda ditulis dalam C, 898 00:50:11,840 --> 00:50:17,770 Anda mengetik R cmd shlib, R perintah shared library, 899 00:50:17,770 --> 00:50:20,110 foo dot c, atau apa pun nama file Anda, 900 00:50:20,110 --> 00:50:23,020 dan OS shell tidak di terminal R. 901 00:50:23,020 --> 00:50:25,200 Dan ini akan membuat perpustakaan disebut foo dot begitu. 902 00:50:25,200 --> 00:50:28,180 Dan kemudian Anda dapat memuat dalam script kami atau interaktif 903 00:50:28,180 --> 00:50:32,310 dengan perintah dyn dot beban. 904 00:50:32,310 --> 00:50:35,720 Lalu ada fungsi di R disebut dot c. 905 00:50:35,720 --> 00:50:39,310 >> Ini membutuhkan argumen yang pertama nama fungsi di C 906 00:50:39,310 --> 00:50:40,970 yang Anda ingin menyebutnya. 907 00:50:40,970 --> 00:50:43,920 Dan kemudian semua parameter untuk fungsi itu, 908 00:50:43,920 --> 00:50:45,420 mereka harus berada dalam urutan yang tepat. 909 00:50:45,420 --> 00:50:48,580 Anda harus menggunakan jenis ini fungsi pemaksaan sebagai integer, seperti 910 00:50:48,580 --> 00:50:52,050 ganda, sebagai karakter, dan sebagai logis. 911 00:50:52,050 --> 00:50:54,710 Dan kemudian ketika mengembalikan daftar, yang lagi-lagi hanya 912 00:50:54,710 --> 00:50:57,550 array terkait dari nama parameter dan nilai-nilai 913 00:50:57,550 --> 00:51:00,950 setelah fungsi telah menjalankan. 914 00:51:00,950 --> 00:51:08,520 >> Jadi dalam hal ini, karena dot prod memiliki argumen vec1, vec2, dan int n, n keluar. 915 00:51:08,520 --> 00:51:11,980 Untuk dot c kita memiliki dot prod, nama fungsi 916 00:51:11,980 --> 00:51:16,250 kita panggil, vec1, vec2, jenis memaksa. 917 00:51:16,250 --> 00:51:20,060 Panjang baik vektor, Aku hanya memilih vec1 sewenang-wenang. 918 00:51:20,060 --> 00:51:25,479 Ini akan menjadi lebih kuat untuk mengatakan s panjang min integer vec1, panjang vec2. 919 00:51:25,479 --> 00:51:27,520 Kemudian hanya sebagai nol ganda, karena kita tidak benar-benar 920 00:51:27,520 --> 00:51:29,644 peduli apa yang masuk ke keluar parameter karena kita 921 00:51:29,644 --> 00:51:32,270 pengaturan ke nol pula. 922 00:51:32,270 --> 00:51:37,560 >> Dan kemudian hasilnya akan menjadi Array terkait besar pada dasarnya 923 00:51:37,560 --> 00:51:42,090 vec1 adalah apa pun, vec2 adalah apa pun. 924 00:51:42,090 --> 00:51:44,330 Tapi kami tertarik keluar, sehingga kita bisa mendapatkan yang keluar. 925 00:51:44,330 --> 00:51:47,780 Ini lagi, mainan contoh yang sangat antarmuka fungsi asing. 926 00:51:47,780 --> 00:51:54,160 Tapi jika Anda harus menghitung dot produk dari vektor besar-besaran di loop, 927 00:51:54,160 --> 00:51:56,960 atau jika Anda harus melakukan sesuatu yang lain dalam satu lingkaran, 928 00:51:56,960 --> 00:51:59,850 dan Anda tidak ingin bergantung pada R, yang memang memiliki sedikit overhead 929 00:51:59,850 --> 00:52:02,830 dibangun ke dalamnya, ini dapat berguna. 930 00:52:02,830 --> 00:52:05,870 >> Sekali lagi, ini bukan biasanya topik pengantar ke R. 931 00:52:05,870 --> 00:52:08,571 Ini tidak didokumentasikan dengan baik. 932 00:52:08,571 --> 00:52:11,070 Aku hanya termasuk karena Saya menemukan itu berguna di masa lalu. 933 00:52:11,070 --> 00:52:13,654 Praktik Jadi, buruk. 934 00:52:13,654 --> 00:52:15,820 Saya menyebutkan bahwa ada untuk loop dalam fungsi. 935 00:52:15,820 --> 00:52:21,150 Umumnya Anda tidak harus, di bahasa, tidak menggunakannya. 936 00:52:21,150 --> 00:52:26,100 Berdasarkan bagaimana R menerapkan iterasi internal, bisa lambat. 937 00:52:26,100 --> 00:52:28,540 Mereka hanya juga terlihat jelek. 938 00:52:28,540 --> 00:52:32,410 >> R menangani vektor sangat baik, sehingga seringkali Anda tidak perlu menggunakannya. 939 00:52:32,410 --> 00:52:35,050 940 00:52:35,050 --> 00:52:38,900 Maka Anda biasanya dapat mengganti vektor sering 941 00:52:38,900 --> 00:52:42,490 dengan fungsi-fungsi ini disebut tinggi fungsi rangka, Peta, Reduce, 942 00:52:42,490 --> 00:52:44,404 Cari, atau Filter. 943 00:52:44,404 --> 00:52:46,320 Saya hanya akan memberikan beberapa contoh dari apa ini lakukan. 944 00:52:46,320 --> 00:52:49,957 Peta adalah fungsi yang lebih tinggi karena dibutuhkan fungsi sebagai argumen. 945 00:52:49,957 --> 00:52:52,290 Jadi Anda dapat memberikan fungsi, Anda dapat memberikan sebuah array, 946 00:52:52,290 --> 00:52:54,640 dan itu akan berlaku fungsi untuk setiap elemen array 947 00:52:54,640 --> 00:52:55,681 dan mengembalikan array baru. 948 00:52:55,681 --> 00:52:58,035 949 00:52:58,035 --> 00:53:00,160 Mengurangi, pada dasarnya Anda memberikan itu sebuah array, Anda memberikan 950 00:53:00,160 --> 00:53:02,930 fungsi yang mengambil dua argumen. 951 00:53:02,930 --> 00:53:07,100 Ini akan menerapkan fungsi pertama, Argumen pertama dengan beberapa nilai starter. 952 00:53:07,100 --> 00:53:09,440 Kemudian untuk yang menghasilkan kedua. 953 00:53:09,440 --> 00:53:12,590 Kemudian untuk hasil yang di ketiga, kemudian hasilnya di keempat. 954 00:53:12,590 --> 00:53:14,870 Dan kemudian kembali ketika sampai ke akhir. 955 00:53:14,870 --> 00:53:17,620 Jadi misalnya, jika Anda ingin menghitung jumlah dari semua elemen 956 00:53:17,620 --> 00:53:23,240 dalam array, daripada yang mungkin Anda sebut mengurangi dengan [tak terdengar] mengurangi tambahan 957 00:53:23,240 --> 00:53:26,620 fungsi, seperti func a, b, kembali plus b. 958 00:53:26,620 --> 00:53:28,960 Dan kemudian mulai nilai 0. 959 00:53:28,960 --> 00:53:32,950 >> Dan semua ini, Anda dapat menemukan mereka dijelaskan dalam dokumentasi R, 960 00:53:32,950 --> 00:53:35,720 dalam buku teks pada pemrograman fungsional. 961 00:53:35,720 --> 00:53:38,330 Ada juga kelas ini fungsi disebut menerapkan fungsi, 962 00:53:38,330 --> 00:53:42,807 yang saya don't-- mereka agak sulit untuk menjelaskan, 963 00:53:42,807 --> 00:53:45,640 tetapi jika Anda melihat di [tidak terdengar] memesan yang saya dikutip di awal, 964 00:53:45,640 --> 00:53:48,615 ia menjelaskan mereka cukup baik di Lampiran nya pada pemrograman R. 965 00:53:48,615 --> 00:53:51,599 966 00:53:51,599 --> 00:53:53,390 Lebih lanjut tentang praktik, menambahkan ke vektor. 967 00:53:53,390 --> 00:53:57,570 968 00:53:57,570 --> 00:53:58,070 Ya? 969 00:53:58,070 --> 00:54:01,651 970 00:54:01,651 --> 00:54:02,900 Saya pikir saya harus memperbaiki itu. 971 00:54:02,900 --> 00:54:07,450 Dalam baris pertama, panah vec, panah yang seharusnya tidak ada. 972 00:54:07,450 --> 00:54:10,920 Anda dapat menetapkan untuk vektor, lagi, oleh mengambil panjangnya ditambah 1 973 00:54:10,920 --> 00:54:13,220 dan menugaskan beberapa nilai untuk itu. 974 00:54:13,220 --> 00:54:18,970 Yang akan memperpanjang vektor, atau Anda dapat melakukan equals vec c, newValue vec. 975 00:54:18,970 --> 00:54:21,540 Sekali lagi, jika Anda menggunakan C dengan satu argumen sebagai vektor, 976 00:54:21,540 --> 00:54:23,300 hirarki yang dihasilkan akan diratakan. 977 00:54:23,300 --> 00:54:27,160 Jadi Anda hanya akan mendapatkan vektor yang diperpanjang oleh 1. 978 00:54:27,160 --> 00:54:30,410 Tidak pernah melakukan hal ini. 979 00:54:30,410 --> 00:54:33,330 >> Alasan mengapa Anda tidak harus melakukan ini adalah ini. 980 00:54:33,330 --> 00:54:37,430 Ketika Anda mengalokasikan vektor, itu memberikan sepotong tertentu memori. 981 00:54:37,430 --> 00:54:40,680 Jika Anda meningkatkan ukuran bahwa vektor, itu harus mengalokasikan vektor 982 00:54:40,680 --> 00:54:43,820 di tempat lain. 983 00:54:43,820 --> 00:54:46,980 Dan realokasi cukup mahal. 984 00:54:46,980 --> 00:54:50,530 Saya tidak akan masuk ke rincian tentang bagaimana penyalur memori diimplementasikan 985 00:54:50,530 --> 00:54:57,280 pada tingkat sistem operasi, namun butuh banyak waktu 986 00:54:57,280 --> 00:54:58,962 untuk menemukan sepotong baru memori. 987 00:54:58,962 --> 00:55:00,920 Dan juga, jika Anda re-mengalokasikan banyak dan banyak 988 00:55:00,920 --> 00:55:03,500 progresif yang lebih besar potongan, Anda berakhir 989 00:55:03,500 --> 00:55:06,420 dengan sesuatu yang disebut fragmentasi memori, 990 00:55:06,420 --> 00:55:09,390 di mana memori yang tersedia adalah dibagi menjadi banyak sedikit blok 991 00:55:09,390 --> 00:55:11,500 di penyalur memori sudut pandang. 992 00:55:11,500 --> 00:55:15,340 Dan itu semakin sulit dan sulit untuk menemukan memori untuk hal-hal lain. 993 00:55:15,340 --> 00:55:19,455 Jadi sebagai gantinya, jika Anda perlu untuk melakukan hal ini, jika Anda perlu untuk tumbuh vektor dari satu ujung 994 00:55:19,455 --> 00:55:24,240 ke depan, bukannya menambahkan untuk itu terus-menerus, Anda harus pra-mengalokasikan itu. 995 00:55:24,240 --> 00:55:29,310 Panah vec, panjang vektor sama dengan 1.000, atau apa pun. 996 00:55:29,310 --> 00:55:33,200 >> Dan kemudian Anda hanya dapat menetapkan dengan vektor nilai satu 997 00:55:33,200 --> 00:55:36,000 waktu setelah Anda dialokasikan sekali. 998 00:55:36,000 --> 00:55:40,140 Aku berlari ke dalam, lagi, pekerjaan musim panas saya ketika saya sedang menulis NRA diferensial 999 00:55:40,140 --> 00:55:42,120 persamaan solver. 1000 00:55:42,120 --> 00:55:43,180 Tidak simbolik numerik. 1001 00:55:43,180 --> 00:55:49,290 Idenya adalah bahwa setelah Anda memiliki satu nilai untuk solusi Anda, 1002 00:55:49,290 --> 00:55:51,240 Anda menggunakannya untuk menghitung yang berikutnya. 1003 00:55:51,240 --> 00:55:53,700 Jadi saya alami naif Kecenderungan adalah untuk mengatakan OK, 1004 00:55:53,700 --> 00:55:56,930 jadi saya akan mulai dengan vektor itu nilai yang besar. 1005 00:55:56,930 --> 00:56:01,260 Menghitung dari yang nilai berikutnya yang masuk ke vektor solusi saya, 1006 00:56:01,260 --> 00:56:02,630 dan menambahkan itu. 1007 00:56:02,630 --> 00:56:05,290 >> Buat sesuatu yang lain, tambahkan itu. 1008 00:56:05,290 --> 00:56:08,120 Itu berjalan sangat, sangat lambat. 1009 00:56:08,120 --> 00:56:11,540 Dan setelah saya menyadari ini dan saya mengubah sistem saya 1010 00:56:11,540 --> 00:56:16,020 dari menambahkan ke vektor ini seperti 10.000 sampai 100.000 kali, 1011 00:56:16,020 --> 00:56:18,910 hanya pra-mengalokasikan vektor dan hanya berjalan dengan itu. 1012 00:56:18,910 --> 00:56:22,100 Aku punya lebih dari 1.000 kali lipat kecepatan up. 1013 00:56:22,100 --> 00:56:26,280 Jadi ini adalah sangat umum perangkap untuk pemrograman R. 1014 00:56:26,280 --> 00:56:31,560 Jika Anda perlu untuk membangun sebuah vektor sepotong demi sepotong, pra-mengalokasikan itu. 1015 00:56:31,560 --> 00:56:35,360 1016 00:56:35,360 --> 00:56:40,240 >> Perjalanan umum lainnya up-- ini terakhir saya slide, tidak worry-- adalah penanganan error. 1017 00:56:40,240 --> 00:56:42,890 R, jujur, tidak benar-benar melakukan hal ini dengan sangat baik. 1018 00:56:42,890 --> 00:56:45,010 Ada banyak masalah yang bisa muncul. 1019 00:56:45,010 --> 00:56:48,360 Misalnya, jika Anda mendapatkan sebuah array atau vektor dari fungsi 1020 00:56:48,360 --> 00:56:52,377 Anda mengharapkan satu Nilai datang dari, atau sebaliknya, 1021 00:56:52,377 --> 00:56:55,460 dan Anda lulus yang menjadi fungsi yang Anda menulis mengharapkan nilai tunggal, 1022 00:56:55,460 --> 00:56:57,270 yang dapat menjadi masalah. 1023 00:56:57,270 --> 00:57:01,440 >> Fungsi tertentu kembali null seperti halnya, katakanlah, 1024 00:57:01,440 --> 00:57:05,560 membaca dari kunci tidak ada dalam daftar. 1025 00:57:05,560 --> 00:57:08,527 Tapi nol tidak seperti C di mana jika Anda mencoba untuk membaca 1026 00:57:08,527 --> 00:57:11,360 dari pointer tua, [tidak terdengar] null pointer, itu hanya kesalahan seg 1027 00:57:11,360 --> 00:57:14,109 dan jika Anda berada di debugger Anda itu memberitahu Anda tepat di mana Anda berada. 1028 00:57:14,109 --> 00:57:17,080 1029 00:57:17,080 --> 00:57:20,772 Sebaliknya, null akan do-- fungsi akan melakukan hal-hal tak terduga 1030 00:57:20,772 --> 00:57:21,730 jika mereka menyerahkan null. 1031 00:57:21,730 --> 00:57:24,575 Seperti jika Anda menyerahkan max null, itu akan memberi Anda tak terhingga negatif. 1032 00:57:24,575 --> 00:57:27,230 1033 00:57:27,230 --> 00:57:28,190 Dan sebagainya, ya. 1034 00:57:28,190 --> 00:57:30,880 1035 00:57:30,880 --> 00:57:32,630 Dan jadi ini terjadi saya sekali ketika aku 1036 00:57:32,630 --> 00:57:34,771 berubah sekelompok bidang dalam struktur daftar 1037 00:57:34,771 --> 00:57:37,520 sekali tanpa mengubah mereka di tempat lain ketika saya membaca dari mereka. 1038 00:57:37,520 --> 00:57:40,670 Dan kemudian saya mendapat segala macam acak Hasil infinity tanam 1039 00:57:40,670 --> 00:57:43,080 dan saya tidak tahu dari mana mereka berasal. 1040 00:57:43,080 --> 00:57:45,310 Dan sayangnya, ada ada R modus ketat nyata 1041 00:57:45,310 --> 00:57:48,940 di mana Anda dapat mengatakan jika sesuatu terlihat seperti itu mungkin kesalahan, 1042 00:57:48,940 --> 00:57:51,960 hanya berhenti di sana sehingga saya bisa disiplin dan memperbaikinya. 1043 00:57:51,960 --> 00:57:55,282 1044 00:57:55,282 --> 00:57:57,240 Namun, ada sesuatu disebut berhenti jika tidak. 1045 00:57:57,240 --> 00:58:00,480 Hal ini setara dengan menegaskan C, jika Anda sudah bicara tentang itu. 1046 00:58:00,480 --> 00:58:02,690 Saya tidak berpikir C menegaskan adalah topik kuliah, 1047 00:58:02,690 --> 00:58:06,370 tetapi pemimpin bagian Anda mungkin sudah lebih dari itu. 1048 00:58:06,370 --> 00:58:10,393 Dan berhenti jika tidak pada dasarnya mengambil setiap predikat, sehingga pernyataan apapun yang 1049 00:58:10,393 --> 00:58:11,824 bisa benar atau salah. 1050 00:58:11,824 --> 00:58:13,490 Dan jika itu palsu, berhenti programnya. 1051 00:58:13,490 --> 00:58:18,260 Ini memberitahu Anda apa yang Anda garis berada di dan apa kondisi gagal. 1052 00:58:18,260 --> 00:58:21,910 >> Dan ini sangat berguna, misalnya, memeriksa kewarasan, masukan fungsi. 1053 00:58:21,910 --> 00:58:25,110 Jadi jika Anda memiliki fungsi dan Anda harapkan, katakanlah, 1054 00:58:25,110 --> 00:58:29,640 jika Anda harus memberikan tanggal, saya ingin tanggal hanya vektor dengan panjang 1 1055 00:58:29,640 --> 00:58:31,735 dan di suatu tempat antara 1 dan 31. 1056 00:58:31,735 --> 00:58:34,420 1057 00:58:34,420 --> 00:58:36,170 Dan jika tidak, saya tahu sesuatu yang tidak beres. 1058 00:58:36,170 --> 00:58:40,280 Dan aku memilih untuk berhenti di situ sebelum ini memiliki ketukan acak pada efek dengan kode 1059 00:58:40,280 --> 00:58:44,190 yang lebih sulit untuk melacak melalui. 1060 00:58:44,190 --> 00:58:47,170 Jadi itu salah satu kemungkinan gunakan untuk berhenti jika tidak. 1061 00:58:47,170 --> 00:58:48,660 >> Bagaimanapun, OK. 1062 00:58:48,660 --> 00:58:49,690 Jadi itulah akhirnya. 1063 00:58:49,690 --> 00:58:51,290 Terima kasih banyak untuk datang. 1064 00:58:51,290 --> 00:58:53,710 Saya seorang amatir peringkat ini. 1065 00:58:53,710 --> 00:58:57,270 Jadi maaf jika Anda bosan atau bingung atau apa pun. 1066 00:58:57,270 --> 00:59:01,670 Saya senang untuk mengambil pertanyaan melalui email di connorharris@college.harvard.edu. 1067 00:59:01,670 --> 00:59:07,230 Ini berlaku juga untuk semua orang menonton hidup ini atau nanti. 1068 00:59:07,230 --> 00:59:10,190 Juga, meskipun aku tidak TF yang, saya juga sangat 1069 00:59:10,190 --> 00:59:13,900 bersedia untuk melayani sebagai tidak resmi penasihat untuk siapa saja yang 1070 00:59:13,900 --> 00:59:15,460 menggunakan R dalam proyek akhir. 1071 00:59:15,460 --> 00:59:19,900 >> Jika Anda ingin itu, kemudian hanya berbicara dengan TF Anda 1072 00:59:19,900 --> 00:59:23,750 dan kemudian menulis saya email sehingga Aku tahu apa yang sedang Anda kerjakan 1073 00:59:23,750 --> 00:59:26,680 dan jadi saya dapat mengatur pertemuan kali dengan Anda jika Anda ingin. 1074 00:59:26,680 --> 00:59:27,990 Jadi sekali lagi, terima kasih banyak. 1075 00:59:27,990 --> 00:59:28,960 Saya harap Anda menikmatinya. 1076 00:59:28,960 --> 00:59:29,450 >> AUDIENCE: [tidak terdengar]. 1077 00:59:29,450 --> 00:59:30,617 >> CONNER HARRIS: Tentu saja. 1078 00:59:30,617 --> 00:59:34,910 >> AUDIENCE: Apa jenis proyek akan seorang mahasiswa CS menggunakan R untuk? 1079 00:59:34,910 --> 00:59:37,427 1080 00:59:37,427 --> 00:59:40,510 CONNER HARRIS: Jadi jika Anda tidak sesuatu yang murni di data mining, 1081 00:59:40,510 --> 00:59:43,790 misalnya, dan ada banyak hal 1082 00:59:43,790 --> 00:59:46,692 Anda bisa melakukan dengan itu dengan data pertambangan dan mesin belajar. 1083 00:59:46,692 --> 00:59:48,900 Anda mungkin ingin menggunakan R untuk komponen dari sesuatu. 1084 00:59:48,900 --> 00:59:52,022 Aku dibesarkan, awalnya, misalnya dari jika Anda sedang menulis sebuah website 1085 00:59:52,022 --> 00:59:54,730 dan Anda ingin menjalankan otomatis analisis statistik server Anda 1086 00:59:54,730 --> 00:59:57,990 log pada waktu tertentu setiap hari, yang mungkin sesuatu yang 1087 00:59:57,990 --> 01:00:01,260 sangat mudah dilakukan hanya dalam singkat R script yang Anda dapat menjadwalkan 1088 01:00:01,260 --> 01:00:04,200 untuk menjalankan setiap malam, misalnya. 1089 01:00:04,200 --> 01:00:06,550 >> Dan aku yakin, jika ada alasan apapun Anda akan 1090 01:00:06,550 --> 01:00:11,520 ingin statistik atau kemampuan grafik dan memiliki run ini secara otomatis bukan 1091 01:00:11,520 --> 01:00:13,790 karena harus berinteraksi dengan hal-hal di Excel, 1092 01:00:13,790 --> 01:00:16,750 misalnya, itu sesuatu Anda mungkin ingin menggunakan R untuk. 1093 01:00:16,750 --> 01:00:21,190 Jadi pertanyaan lagi sebelum saya pergi? 1094 01:00:21,190 --> 01:00:21,690 Tidak? 1095 01:00:21,690 --> 01:00:24,960 Baiklah, baik, lagi, terima Anda sangat banyak untuk datang. 1096 01:00:24,960 --> 01:00:29,417