Connor HARRIS: Saya Masih pikir beberapa video yang menarik diproduksi oleh konsultan profesional yang menggunakan R banyak dalam pekerjaannya. Narator: Ada apa di balik statistik, analytics, dan visualisasi ilmuwan Data terang bahwa hari ini dan pemimpin bisnis bergantung pada untuk membuat keputusan yang kuat? Anda mungkin tidak selalu melihatnya. Tapi itu ada. Ini disebut R, open source r-- yang bahasa pemrograman statistik bahwa para ahli Data dunia atas penggunaan untuk semuanya dari pemetaan sosial yang luas dan tren pemasaran online untuk mengembangkan keuangan dan iklim model yang membantu mendorong ekonomi kita dan masyarakat. Tapi apa sebenarnya adalah R dan di mana R mulai? Nah awalnya, R mulai di sini dengan dua profesor yang ingin statistik yang lebih baik platform untuk siswa mereka. Jadi mereka menciptakan satu model setelah bahasa statistik S. Mereka, bersama dengan banyak orang lain, terus bekerja dan menggunakan R, menciptakan alat untuk R dan menemukan aplikasi baru untuk R setiap hari. Berkat ini usaha masyarakat di seluruh dunia, R terus tumbuh dengan ribuan dari yang dibuat pengguna perpustakaan dibangun untuk meningkatkan fungsionalitas dan R validasi kualitas orang-bersumber dan dukungan dari yang paling diakui pemimpin industri di setiap bidang yang menggunakan R. Yang sangat bagus, karena R adalah yang terbaik pada apa yang dilakukannya. Budding ahli dengan cepat dan mudah menafsirkan, berinteraksi dengan, dan memvisualisasikan data yang menunjukkan mereka cepat komunitas yang tumbuh dari pengguna di seluruh dunia R dan melihat bagaimana open source R terus membentuk masa depan statistik analisis dan ilmu data. Connor HARRIS: OK, besar. Jadi presentasi saya sendiri akan menjadi sedikit lebih sadar. Ini tidak akan melibatkan banyak musik latar belakang yang menarik. Tapi seperti yang Anda lihat di video, R adalah semacam dari program bahasa tujuan umum. Tapi itu diciptakan sebagian besar untuk pekerjaan statistik. Jadi itu dirancang untuk statistik, untuk analisis data, untuk data mining. Dan sehingga Anda dapat melihat hal ini dalam banyak pilihan desain yang pembuat R terbuat. Ini dirancang untuk sebagian besar, orang-orang yang tidak ahli dalam pemrograman, yang hanya mengambil pemrograman di sisi sehingga mereka dapat melakukan pekerjaan mereka dalam ilmu sosial atau dalam statistik atau apapun. Ini memiliki banyak sangat perbedaan penting dari C. Tetapi sintaks dan paradigma yang menggunakan secara luas yang sama. Dan Anda harus merasa cukup banyak di rumah langsung dari kelelawar. Ini bahasa imperatif. Jangan khawatir terlalu banyak tentang itu jika Anda tidak tahu istilah. Tapi ada perbedaan antara imperatif, deklaratif, dan fungsional. Penting hanya berarti Anda membuat pernyataan yang pada dasarnya perintah. Dan kemudian interpreter atau komputer berikut satu per satu. Ini lemah diketik, ada tidak ada deklarasi tipe di R. Dan kemudian garis antara berbagai jenis sedikit lebih longgar daripada mereka berada di C, misalnya. Dan seperti yang saya katakan ada fasilitas yang sangat luas untuk grafik, untuk statistik analisis, untuk data mining. Ini baik dibangun ke dalam bahasa dan, sebagai video mengatakan, ribuan perpustakaan pihak ketiga yang Anda dapat men-download dan digunakan secara gratis dengan kondisi lisensi yang sangat longgar. Jadi secara umum, saya akan merekomendasikan Anda melihat dua buku ini jika Anda akan bekerja pada R. Satu dari mereka adalah pejabat R pemula panduan. Ini dipelihara oleh pengembang inti R. Anda dapat men-download lagi, bebas dari biaya dan secara hukum di link di sana. Semua slide ini akan pergi di internet, di website CS50 setelah ini dilakukan. Jadi tidak perlu menyalin segalanya panik. Yang lain adalah buku oleh Cosma Shalizi, yang adalah seorang profesor statistik di Carnegie Mellon, disebut Data Lanjutan Analisis dari Dasar Point of View. Ini bukan terutama buku R. Ini adalah buku statistik dan itu buku analisis data. Tapi itu sangat mudah untuk orang-orang yang memiliki jumlah sedikit pengetahuan statistik. Saya tidak pernah mengambil kursus formal. Aku hanya tahu potongan-potongan dari berbagai mata pelajaran serumpun bahwa saya telah mengambil kursus di. Dan saya bisa memahami itu dengan baik. Semua angka yang diberikan di R. Mereka dibuat dalam R dan mereka juga memiliki daftar kode di bawah setiap gambar yang memberitahu Anda bagaimana Anda membuat setiap gambar dengan kode R. Dan itu sangat berguna jika Anda mencoba untuk meniru beberapa tokoh yang Anda lihat dalam sebuah buku. Dan lagi free download stat.cmu.edu/cshalizi/ Maaf, yang harus memangkas cshalizi tilde. Aku akan pastikan untuk memperbaiki yang ketika slide resmi naik. / ADAfaEPoV yang hanya akronim dari judul buku. Jadi umum caveats-- R memiliki banyak kemampuan. Aku hanya akan dapat menutupi permukaan banyak hal. Juga bagian pertama dari seminar akan menjadi sesuatu dari dump data. Aku cukup menyesal tentang itu. Pada dasarnya, aku akan memperkenalkan Anda untuk banyak hal langsung dari kelelawar, akan secepat mungkin. Dan kemudian kita bisa bagian yang menyenangkan, yang demo di mana saya dapat menampilkan semua bahwa kita telah berbicara tentang di layar. Dan Anda dapat bermain-main sendiri. Jadi ada akan menjadi banyak hal-hal teknis muntah di sini. Jangan khawatir tentang menyalin semua yang turun. Karena A, Anda bisa mendapatkan semua barang di website CS50 kemudian. Dan B, itu tidak benar-benar penting menghafal ini dari slide. Ini lebih penting bahwa Anda mendapatkan beberapa fasilitas intuitif dengan itu dan yang berasal dari hanya bermain-main. Jadi mengapa menggunakan R? Pada dasarnya, jika Anda memiliki sebuah proyek yang melibatkan pertambangan set data yang besar, data visualisasi, Anda harus menggunakan R. Jika Anda melakukan analisis statistik rumit, yang akan sulit untuk di Excel, misalnya, itu akan juga good-- juga jika Anda melakukan statistik analisis yang otomatis. Katakanlah Anda mempertahankan sebuah website. Dan Anda ingin membaca log server setiap hari dan mengkompilasi beberapa daftar, seperti negara atas yang pengguna Anda berasal, beberapa ringkasan statistik pada berapa lama mereka menghabiskan di website Anda atau apa pun. Dan Anda ingin menjalankan ini setiap hari. Sekarang jika Anda melakukan ini dalam Excel, Anda harus pergi ke log server Anda, impor yang menjadi Excel spreadsheet data, menjalankan semua analisis secara manual. Dengan R, Anda hanya dapat menulis satu naskah. Jadwalkan untuk berjalan setiap hari dari sistem operasi Anda. Dan kemudian setiap malam di 2:00, atau setiap kali Anda jadwalkan untuk berjalan, akan melihat melalui Anda lalu lintas internet untuk hari itu. Dan kemudian pada hari berikutnya, Anda akan memiliki mengkilap, laporan baru ini atau apa pun dengan semua informasi yang Anda minta. Jadi pada dasarnya R adalah untuk Cisco pemrograman dibandingkan analisis Cisco. Pendahuluan dilakukan. Mari kita masuk ke hal-hal yang nyata. Jadi ada tiga nyata jenis dalam bahasa. Ada tipe numerik. Ada semacam perbedaan antara bilangan bulat dan titik mengambang, tapi tidak benar-benar. Ada karakter mengetik, yang merupakan string. Dan ada logis mengetik, yang merupakan boolean. Dan Anda dapat mengkonversi antara jenis menggunakan fungsi ini sebagai numerik, sebagai karakter, sebagai logis. Jika Anda menelepon, misalnya, sebagai numerik pada string, itu akan mencoba untuk membaca string yang sebagai angka, dengan cara yang sama yang a2i dan scanf lakukan, dan C. Jika Anda menelepon sebagai numerik pada benar atau salah itu akan dikonversi ke 1 atau 0. Jika Anda menelepon sebagai karakter pada apa pun itu akan mengkonversi menjadi representasi string. Dan kemudian ada vektor dan matriks. Jadi vektor pada dasarnya 1 array dimensi. Mereka adalah apa yang kita sebut array di C. Matriks, 2 array dimensi. Dan kemudian lebih tinggi dimensi array Anda bisa memiliki 3, 4, 5 dimensi atau apa pun nilai-nilai numerik, string, nilai-nilai logis. Anda juga memiliki daftar yang semacam array asosiatif. Aku akan masuk ke yang sedikit. Jadi satu hal penting bahwa perjalanan orang di R adalah bahwa tidak ada nyata, jenis atom murni. Tidak ada perbedaan yang sebenarnya antara nomor, seperti nilai numerik, dan daftar nilai numerik. Nilai numerik sebenarnya sama dengan vektor dari panjang 1. Dan ini memiliki sejumlah implikasi penting. Satu, itu berarti bahwa Anda dapat melakukan hal yang sangat mudah yang melibatkan seperti menambahkan nomor ke vektor. R akan dasarnya angka tahu apa yang Anda maksud dengan itu. Dan aku akan mendapatkan bahwa dalam satu detik. Ini juga berarti bahwa tidak ada cara untuk tipe checker-- sejauh bahwa sesuatu seperti itu ada di R-- memberitahu ketika Anda sudah lulus dalam nilai tunggal ketika mengharapkan sebuah array atau sebaliknya. Dan yang dapat menyebabkan beberapa aneh masalah yang aku berlari ke dalam ketika Saya menggunakan R selama pekerjaan musim panas saya. Dan tidak ada campuran-jenis array. Jadi Anda tidak dapat memiliki sebuah array adalah elemen pertama, saya tidak tahu, string "John" dan Elemen kedua adalah nomor 42. Jika Anda mencoba untuk melakukan itu, maka Anda akan mendapatkan semuanya hanya dikonversi ke string. Jadi kita punya string John, tali 42. Sintaksis sangat luar biasa features-- paling R sintaks sangat mirip dengan C. Ada beberapa perbedaan penting. Mengetik sangat lemah. Jadi tidak ada deklarasi variabel. Penugasan menggunakan aneh Operator error kurang dari tanda hubung. Komentar adalah dengan tanda hash. Saya kira sekarang hari kita menyebutnya hashtag meskipun itu tidak benar-benar tidak accurate-- slash ganda. Residu modular yang dengan tanda-tanda %%. Pembagian integer adalah dengan% /% yang sangat sulit untuk membaca ketika itu diproyeksikan di layar. Anda bisa mendapatkan rentang bilangan bulat dengan usus besar. Jadi 2,5 akan memberikan vektor dari semua angka 2 sampai 5. Array satu-diindeks, yang sekrup banyak orang jika mereka dari lebih bahasa pemrograman yang khas, seperti C, di mana sebagian besar hal-hal yang nol-diindeks. Sekali lagi, ini adalah di mana warisan R sebagai bahasa untuk seperti tidak programmer profesional datang. Jika Anda seorang sosiolog atau seorang ekonom atau sesuatu dan Anda mencoba untuk menggunakan R pada dasarnya sebagai tambahan untuk Anda yang lebih penting kerja profesional, Anda akan menemukan satu-mengindeks sedikit lebih alami. Karena Anda mulai menghitung pada 1 dalam kehidupan sehari-hari, bukan 0. Untuk-loop, ini mirip dengan foreach yang membangun di PHP, yang Anda akan mendapatkan untuk belajar in-- segera. Yang untuk nilai di vektor dan maka Anda dapat melakukan hal-hal dengan nilai. AUDIENCE: Itu datang dalam kuliah. Connor HARRIS: Oh, itu datang kuliah, baik. AUDIENCE: Tugas, itu seharusnya menunjuk dari kanan ke kiri? Connor HARRIS: Dari kanan ke kiri, ya. Anda dapat menganggapnya sebagai nilai pada hak mendorong ke variabel di kiri. AUDIENCE: OK. Connor HARRIS: Dan akhirnya sintaks fungsi agak aneh. Anda memiliki foo nama fungsi, ditugaskan fungsi kata kunci ini, diikuti oleh semua argumen dan kemudian tubuh fungsi setelah itu. Sekali lagi hal ini mungkin tampak sedikit aneh. Mereka akan menjadi sifat kedua setelah Anda bekerja dengan bahasa untuk sedikit. Jadi vektor, jalan Anda membangun vektor adalah Anda tipe C, yang merupakan kata kunci, maka semua angka yang Anda inginkan atau string atau apapun. Argumen juga menjadi vektor. Tapi array yang dihasilkan akan diratakan. Jadi Anda tidak dapat memiliki array mana beberapa elemen yang nomor satu dan beberapa elemen yang array sendiri. Jadi jika Anda mencoba untuk membangun sebuah Array adalah elemen pertama adalah 4 dan elemen kedua adalah 3,5 array yang Anda akan hanya mendapatkan array tiga unsur, 4,3,5. Mereka tidak bisa menjadi tipe campuran. Jika Anda mencoba untuk membaca atau menulis di luar batas-batas vektor Anda akan mendapatkan nilai ini disebut NA sebuah yang merupakan singkatan dari nilai yang hilang. Dan ini dimaksudkan untuk seperti statistik yang bekerja dengan set data yang tidak lengkap. Jika Anda menerapkan fungsi yang seharusnya untuk mengambil hanya satu nomor ke array maka apa yang akan Anda dapatkan adalah, yang Fungsi akan memetakan lebih array. Jadi jika fungsi Anda katakanlah mengambil nomor dan pengembalian itu persegi. Anda menerapkan bahwa untuk array 2,3,5 Apa yang akan anda dapatkan adalah array 4,9,25. Dan itu sangat berguna karena itu berarti Anda tidak perlu menulis untuk loop untuk melakukan hal-hal yang sangat sederhana seperti menerapkan fungsi untuk semua anggota dari kumpulan data. Yang jika Anda bekerja dengan besar set data, Anda harus melakukan banyak. Fungsi biner adalah diterapkan entri dengan entri. Aku akan masuk ke itu. Anda dapat mengaksesnya dengan array atau vektor dengan tanda kurung persegi. Kurung sehingga nama vektor persegi 1 akan memberikan elemen pertama. Nama vektor kurung 2 akan memberikan elemen kedua. Anda dapat lulus pada vektor indeks dan Anda akan kembali keluar pada dasarnya faktor sub. Sehingga Anda dapat melakukan vektor nama kurung C, 2,4 dan Anda akan mendapatkan sebuah vektor yang mengandung kedua dan keempat elemen array. Dan jika Anda ingin hanya Ringkasan statistik cepat dari vektor seperti interkuartil Kisaran, median, maksimum, apa pun, Anda hanya bisa mengetik Ringkasan Nama vektor dan yang keluar. Itu tidak benar-benar berguna dalam pemrograman tetapi jika Anda bermain sekitar set data, itu berguna. Matrices-- dasarnya array dimensi yang lebih tinggi. Mereka memiliki sintaks notasi khusus. Matriks dengan array yang mendapat diisi in-- maaf, matriks dengan data, jumlah baris, jumlah kolom. Bila Anda memiliki beberapa data, itu mengisi array pada dasarnya akan atas ke bawah pertama. Kemudian kiri ke kanan. Jadi, seperti itu. Dan R telah dibangun di perkalian matriks, spektral dekomposisi, diagonalisasi, banyak hal. Jika Anda ingin dimensi yang lebih tinggi array, sehingga 3, 4, 5, atau dimensi apa pun yang Anda bisa melakukan itu. Sintaks array yang redup sama c, maka daftar dimensi. Jadi jika Anda ingin dimensi array 4 dengan dimensi 4, 7, 8, 9, array, dim sama c (4,7,8,9). Anda mengakses nilai tunggal dengan kurung pertama masuk koma entri kedua. Anda bisa mendapatkan seluruh irisan baris atau kolom. Dengan sintaks yang tidak lengkap ini itu hanya baris nomor koma atau kolom koma jumlah. Jadi daftar adalah jenis array terkait. Mereka memiliki sintaks sendiri di sini. Sekali lagi tidak panik menyalin semua turun ini. Ini hanya supaya orang akan melalui slide nanti memiliki semua ini dalam referensi yang bagus. Dan ini akan menjadi sangat alami sekali Aku benar-benar berjalan melalui demo. Jadi berisi daftar array pada dasarnya terkait. Anda dapat mengakses nilai dengan Nama daftar, tanda dolar, kunci. Jadi jika daftar bernama foo, maka Anda dapat mengaksesnya seperti itu. Anda bisa mendapatkan pasangan kunci-nilai seluruh dengan melewati indeks braket persegi. Jika Anda membaca dari tidak ada kunci, Anda akan mendapatkan nol. Ini tidak akan kesalahan. Masalahnya, R akan melakukan seperti banyak dengan nol karena dapat. Dan ini dapat berarti bahwa jika Anda tidak mengharapkan untuk mendapatkan nol keluar beberapa daftar membaca, Anda akan mendapatkan beberapa kesalahan tak terduga lebih bawah garis. Hal ini terjadi kepada saya saya pekerjaan musim panas ketika saya menggunakan R di mana saya mengubah cara tertentu daftar didefinisikan di satu tempat tapi tidak berubah nanti pada kode yang membaca nilai dari itu. Dan apa yang terjadi adalah saya membaca nilai null dari daftar ini, melewati mereka ke fungsi, dan menjadi sangat bingung ketika aku sampai segala macam infinities acak tanam dalam fungsi ini. Karena jika Anda menerapkan maksimum tertentu atau fungsi minimum untuk null, Anda akan mendapatkan nilai-nilai yang tak terbatas keluar. Data frame, mereka subclass dari daftar. Setiap nilai merupakan vektor yang sama panjang. Dan mereka digunakan untuk menyajikan, pada dasarnya, tabel data. Ada sintaks inisialisasi ini. Ini semua akan, lagi, jauh jelas ketika Anda mendapatkan untuk demo. Dan hal yang baik tentang frame data adalah bahwa Anda dapat memberikan nama untuk semua kolom dan nama untuk semua baris. Dan sehingga membuat mengakses mereka sedikit ramah. Juga ini adalah bagaimana sebagian besar fungsi yang membaca data dari spreadsheet Excel atau dari file teks, misalnya, akan membaca dalam data mereka. Mereka akan memasukkannya ke dalam semacam frame data. Jadi functions-- fungsi sintaks agak aneh. Sekali lagi itu adalah nama fungsi, menetapkan, fungsi kata kunci ini dan kemudian daftar argumen. Jadi ada beberapa hal bagus tentang bagaimana fungsi bekerja di sini. Untuk satu, Anda benar-benar dapat menetapkan nilai default untuk argumen tertentu. Jadi Anda bisa mengatakan R1 equals-- Anda bisa mengatakan foo adalah suatu fungsi dimana R1 sama dengan sesuatu secara default jika pengguna menentukan tanpa argumen. Jika tidak, itu apa pun yang dimasukkan ke dalam. Dan ini sangat berguna karena banyak fungsi kami memiliki puluhan atau sering ratusan argumen. Misalnya yang untuk merencanakan grafik atau merencanakan plot pencar memiliki argumen yang mengontrol segala sesuatu dari judul dan sumbu label dengan warna garis regresi. Dan jadi jika Anda tidak ingin untuk membuat orang menentukan setiap satu dari ini ratusan argumen mengendalikan setiap aspek dari plot atau kemunduran atau apa pun, itu bagus untuk memiliki nilai default ini. Dan kemudian Anda benar-benar dapat menulis seperti yang Anda lihat kembali ke sini. Atau menemukan contoh yang lebih baik. Ketika Anda memanggil fungsi Anda benar-benar bisa memanggil mereka menggunakan nama-nama argumen. Jadi di sini adalah contoh konstruktor matriks. Dibutuhkan tiga argumen. Biasanya Anda memiliki data, yang merupakan vektor. Anda memiliki N baris, yang adalah jumlah baris. Anda memiliki N cols-- jumlah kolom. Masalahnya adalah jika Anda mengetik N baris sama dengan apa pun dan N col sama apa pun saat Anda memanggil fungsi ini, Anda benar-benar dapat membalikkan mereka. Sehingga Anda dapat menempatkan N col pertama dan N baris kedua dan itu akan membuat perbedaan. Jadi itulah fitur kecil yang menyenangkan. Melakukan impor dan ekspor. Hal ini dapat dilakukan, pada dasarnya. Ada juga fasilitas untuk menulis sewenang-wenang R objek ke file biner dan kemudian membacanya kembali nanti. Yang berguna jika Anda melakukan besar interaktif sesi R dan Anda perlu untuk menyimpan hal yang sangat cepat. Secara default R memiliki direktori kerja bahwa file bisa ditulis ke dan membaca kembali dari. Anda dapat melihat bahwa dengan getwg, mengubahnya dengan setdw. Tidak ada yang menarik di sini terutama Jadi sekarang statistik aktual stuff-- regresi multilinear. Jadi sintaks biasa adalah sedikit rumit. Model adalah objek besar pada dasarnya. Itu akan ditugaskan untuk lm, yang merupakan fungsi panggilan. Elemen pertama, y x1 tilde ditambah apa pun. Sintaks saya di sini adalah sedikit membingungkan. Aku cukup menyesal, ini adalah cara standar bahwa buku ilmu komputer melakukan hal ini. Tapi itu agak aneh. Jadi pada dasarnya, itu lm kurung, item pertama adalah variable-- maaf, tergantung x1 tilde variabel ditambah x2 ditambah namun banyak independen variabel yang Anda miliki. Dan kemudian ini baik dapat vektor, semua sama panjang. Atau mereka dapat kolom header dalam frame data Anda hanya menentukan di kedua argumen frame data. Anda juga dapat menentukan formula yang lebih kompleks sehingga Anda tidak perlu linear regresi satu variabel dependen, atau satu vektor pada vektor yang sudah ada. Anda dapat melakukan, misalnya, komponen vektor y kuadrat ditambah 1 dan regresi yang melawan log dari beberapa vektor lainnya. Anda dapat mencetak ringkasan dari model dengan perintah ini disebut summary-- hanya ringkasan parens Model. Sekali lagi hal lain yang harus menjelaskan. Sesuatu yang lain yang akan mendapatkan dikoreksi ketika slide naik di internet. Jika Anda hanya ingin menghitung korelasi sederhana Anda dapat menggunakan vektor korelasi 1 vektor 2 fungsi inti. Metode ini secara default Pearson korelasi. Mereka adalah orang-orang standar yang dapat Anda lakukan. Ada juga Spearman dan Kendell korelasi yang beberapa variasi Agar korelasi peringkat. Yah mereka tidak menghitung produk saat antara vektor sendiri, tapi pesanan peringkat vektor ini. Saya akan menjelaskan nanti. AUDIENCE: Pertanyaan Cepat CONNER HARRIS: Tentu. AUDIENCE: Jadi, ketika Anda sedang menghitung untuk korelasi sederhana lakukan Anda berasumsi bahwa ada statistik signifikansi untuk korelasi? CONNER HARRIS: Anda tidak perlu. Sebuah lm pada dasarnya hanya sebuah mesin. Ini akan mengambil dalam dua hal dan itu akan memuntahkan koefisien untuk paling cocok line. Hal ini juga melaporkan standar kesalahan pada orang-koefisien. Dan akan memberitahu Anda, seperti adalah mencegat signifikan secara statistik atau perbedaan dari 0. Adalah kemiringan yang terbaik fit garis statistik berbeda dari nol, dan lain-lain. Jadi mengasumsikan apa-apa, saya pikir adalah jawaban terbaik untuk pertanyaan Anda. OKE. Plotting-- sehingga alasan utama Anda harus menggunakan R, seperti regresi multilinear. Pada dasarnya setiap bahasa memiliki beberapa fasilitas untuk itu. Dan sintaks jujur ​​R untuk regresi adalah rahasia sedikit. Tapi plotting adalah di mana ia benar-benar bersinar. Fungsi pekerja keras adalah petak dan dibutuhkan dua vektor, x dan y. Dan kemudian elips singkatan yang sangat sejumlah besar argumen opsional yang mengendalikan segala sesuatu dari judul untuk warna dari berbagai lini atau berbagai titik, dengan jenis plot. Anda dapat memiliki pencar plot atau plot line. [Tidak terdengar] 2 vektor yang sama panjang. Anda dapat mendahului ini dengan melampirkan frame data dalam script Anda. Dan ini akan membiarkan Anda hanya menggunakan kolom header bukannya vektor terpisah. Anda dapat menambahkan baris paling cocok dan lokal kurva regresi untuk grafik Anda. Perintah-perintah ini tercantum di sini, ab line dan garis, secara default ini mendapatkan ditulis ke dalam jendela pop up karena mengasumsikan bahwa Anda menggunakan R interaktif. Jika Anda tidak Anda bisa menulis dua file yang berada di benar-benar format yang Anda inginkan. Maaf, saya memiliki kesalahan ketik saya baru sadar. Jika Anda ingin membuka perangkat grafis lain Anda dapat menggunakan fungsi ini disebut PNG atau JPEG atau banyak format gambar lainnya. Dan Anda dapat menulis grafik untuk File apapun nama yang Anda tentukan. Untuk membatalkan bahwa Anda harus use-- Saya tidak menulis ini di slide-- yang tapi ada fungsi yang disebut dev dot off yang tidak mengambil argumen. Lalu ada fasilitas untuk 3D plotting dan untuk kontur merencanakan jika Anda ingin membuat grafik dari dua variabel independen. Saya tidak akan masuk ke ini sekarang. Ada juga beberapa Fasilitas untuk animasi mereka biasanya dikelola oleh pihak ketiga. Saya telah melakukan animasi dengan R grafik, tapi saya belum pernah menggunakan pihak ketiga tersebut perpustakaan. Jadi saya tidak bisa benar-benar membuktikan untuk seberapa baik mereka. Apa yang saya sarankan jika Anda ingin untuk membuat animasi menggunakan R adalah Anda dapat menulis semua frame untuk animasi dan kemudian Anda dapat menggunakan program-- pihak ketiga yang khas disebut FFmpeg atau ImageMagick-- untuk menjahit semua frame Anda ke dalam satu animasi. Jadi waktu untuk demo. Jadi jika Anda menggunakan Unix seperti sistem yang Linux BSD tapi yang menggunakan BSD. OS X membuka jendela terminal dan ketik R pada command prompt. Jika Anda memiliki R studio atau sejenisnya, yang juga bekerja. Untuk pengguna Windows Anda harus dapat menemukan R di menu Start Anda. Itu harus disebut sesuatu seperti R x64 3 titik apapun. Terbuka yang di atas sana. Jadi sekarang saya hanya membuka jendela terminal. Baiklah, pencarian. AUDIENCE: Command-Space CONNER HARRIS: Command-Space, terima kasih. Saya tidak biasanya menggunakan Mac. Terminal, menunjukkan jendela baru. Jendela baru adalah pengaturan dasar, R. Jadi Anda harus mendapatkan pesan selamat datang, sesuatu seperti ini. Jadi saya menggunakan R interaktif. Anda juga dapat menulis skrip R tentu saja. Pada dasarnya script berjalan dengan cara yang sama persis seperti jika Anda sedang duduk di depan komputer mengetik di setiap baris satu per satu. Jadi mari kita mulai dengan membuat vektor. Sebuah panah C 1, 2. 1, 2, 4. OK, yakin. Aku bisa membuat ukuran font yang lebih besar. AUDIENCE: Command-Plus CONNER HARRIS: Command-Plus. Perintah-Plus. Baiklah, bagaimana itu? Baik? OKE. Jadi mari kita mulai dengan menyatakan daftar vektor. Lakukan, panah, C 1,2,4. Kita bisa melihat. Jangan khawatir tentang braket ada. Kurung begitu jika Anda mencetak array yang sangat panjang, kita dapat di mana Anda berada. Salah satu contoh akan jika saya hanya ingin kisaran 2-200. Jika saya mencetak sangat Array panjang, tanda kurung hanya jadi saya bisa menjaga track yang indeks kita berada di jika saya mencari melalui ini secara visual. Jadi bagaimanapun, kami memiliki. Jadi saya katakan sebelumnya bahwa array berinteraksi sangat baik dengan, misalnya, operasi unary seperti ini. Jadi apa yang Anda pikirkan aku akan dapatkan jika saya ketik plus 1? Ya. Baiklah, sekarang saya akan membuat Array yang berbeda ini. Katakanlah b c 20,40, 80. Jadi apa yang Anda pikirkan perintah ini akan melakukan? Tambahkan elemen. Dan jadi pada dasarnya itulah apa yang dilakukannya. Jadi ini cukup nyaman. Jadi saya bagaimana saya melakukan ini. c adalah, katakanlah, 6 kali 1 sampai 10. Jadi apa yang saya ingin melihat terkandung, menurut Anda? Jadi semua kelipatan enam. Sekarang, apa yang Anda pikirkan akan terjadi jika saya melakukan ini? Aku akan membuat ini sedikit lebih jelas, c, c. Jadi apa yang terjadi, apakah Anda berpikir, jika saya melakukan ini? plus c. [Tidak terdengar] AUDIENCE: Entah kesalahan atau hanya menambah pertama tiga unsur. CONNER HARRIS: Tidak cukup. Ini adalah apa yang kita punya. Apa yang terjadi adalah lebih pendek array, sebuah, mendapat bersepeda. Jadi kita punya 124, 124, 124. Ya. Dan pada dasarnya, Anda dapat melihat perilaku ini sebelumnya, plus 1, sebagai subclass dari perilaku ini, di mana array terpendek hanya nomor 1, yang merupakan array satu elemen. Saya hanya akan mengatakan vektor semua waktu bukan array, karena itulah yang r dokumentasi biasanya. Ini adalah kebiasaan yang mendarah daging c. OK, jadi sekarang kita memiliki array ini. Jadi kita memiliki array ini, c. Kita bisa mendapatkan ringkasan statistik c, ringkasan c. Dan itu bagus. Jadi sekarang mari kita melakukan beberapa hal matriks. Katakanlah m adalah matriks. Mari kita membuat tiga oleh tiga satu. Jadi nrows sama 3, dan ncols sama 3. Dan untuk data mari do-- jadi apa Menurut Anda ini akan lakukan? Benar, itu yang berikutnya. Ini nrow dan ncolumn. Jadi apa yang saya lakukan adalah saya sudah menyatakan tiga oleh tiga matriks dan saya sudah berlalu dalam array sembilan elemen. Jadi logaritma dari semua elemen satu sampai sembilan. Dan semua nilai-nilai mengisi up array-- maaf? AUDIENCE: Mereka adalah basis 10 log? CONNER HARRIS: Tidak, log logaritma natural, sehingga basis e. Ya, jika Anda ingin dasar 10 log, saya pikir Anda akan memiliki login apapun, dibagi dengan log 10. Dan data dari [tidak terdengar] hanya mengisi array, sehingga atas ke bawah, kemudian kiri ke kanan. Dan jika Anda ingin melakukan beberapa lainnya array, katakanlah n adalah matriks. Mari kita lakukan, saya tidak tahu, 2-13. Atau aku akan melakukan sesuatu yang lebih menarik. Saya akan melakukan 2-4. nrow equals, katakanlah, 3. ncol sama dengan 4. n. Jadi kita punya ini. Dan jika kita ingin melipatgandakan ini, kita akan melakukan n persen kali persen, karena itulah n. Dan kami memiliki produk matriks. Oleh mereka cara, apakah Anda melihat bagaimana ketika saya menyatakan n, 2 sampai 4 vektor mendapat bersepeda sampai itu mengisi semua n? Jika Anda ingin mengambil dekomposisi eigen, ini adalah sesuatu yang bisa kita lakukan dengan sangat mudah. Kita bisa melakukan eigen n. Dan jadi ini adalah pertama kami perjumpaan dengan daftar. Jadi eigen n adalah daftar dengan dua tombol. Nilai-nilai, yang merupakan array ini di sini. Dan vektor, yang merupakan array ini di sini. Jadi jika Anda ingin mengambil, katakanlah, kolom ketiga ini dari vektor eigen matriks, karena vektor eigen adalah vektor kolom. Jadi kita bisa melakukan eigen vec tanda n dollar vektor, koma 3, dari [tidak terdengar]. Vec. Apakah itu, seperti yang Anda harapkan. Kemudian katakan n kali persen kali vec. Jadi hasilnya di sini jelas terlihat seperti jika kita mengambil nilai eigen ketiga di sini, yang sesuai dengan eigenvector ketiga. Itu hanya dikalikan segala sesuatu di eigenvector ini, komponen-bijaksana, oleh eigenvalue. Dan itulah apa yang kita harapkan, karena itulah yang eigen yang. Apakah ada orang di sini tidak diambil aljabar linier? Beberapa orang, OK. Hanya mengubah otak Anda off untuk sedikit. Dan memang jika kita mengambil eigen n nilai tanda dolar 3 kali vec, juga mendapatkan hal yang sama. Ini diformat berbeda sebagai berturut-turut vektor bukan vektor kolom, tapi masalah besar. Dan mereka pada dasarnya bagus hal-hal yang dapat kita lakukan dengan matriks, menunjukkan daftar. Aku harus menunjukkan bagus hal tentang fungsi juga. Jadi mari kita say-- [tidak terdengar] fungsi, panggilan mari itu func terhadap fungsi n n squared-- sebenarnya, itu tidak benar-benar yang terbaik. a, b, a kuadrat ditambah b. Jadi satu hal tentang fungsi, sekali lagi, adalah mereka tidak perlu pernyataan kembali eksplisit. Jadi Anda dapat hanya-- yang Pernyataan terakhir dievaluasi akan menjadi pernyataan kembali, atau nilai kembali. Jadi dalam hal ini, kita hanya mengevaluasi satu pernyataan, sebuah kuadrat ditambah b. Itu akan menjadi nilai kembali default. Tidak ada salahnya untuk dimasukkan ke dalam kembali nilai-nilai secara eksplisit, terutama jika Anda sedang berhadapan dengan fungsi logika yang sangat rumit mengalir. Tapi Anda tidak membutuhkan mereka. Jadi sekarang kita bisa melakukan func 5, 1, dan ini pada dasarnya adalah apa yang Anda harapkan. Hal lain yang bisa kita lakukan, kita benar-benar bisa melakukan func b sama dengan 1, yang sama dengan 5. Jadi jika kita menentukan jumlah sini, yang argumen pergi ke mana argumen dalam fungsi, kita dapat flip sekitar nilai-nilai ini di mana pun kita inginkan. AUDIENCE: Apakah ada alasan untuk menulis itu dengan b sama sebagai lawan hanya menggunakan angka dan koma? CONNER HARRIS: Ya, biasanya melakukan hal ini jika Anda memiliki fungsi dengan banyak argumen. Yang mungkin sering seperti bendera yang hanya akan Anda ingin menggunakan di kesempatan langka. Dan cara ini Anda dapat only-- Anda dapat mengacu pada argumen tertentu bahwa Anda ingin menggunakan nilai non-default untuk, dan Anda tidak harus menulis sebuah sekelompok bendera sama palsu setelah mereka. Atau aku bisa menulis ini lagi dengan nilai default seperti b sama dengan 2. Dan kemudian saya bisa melakukan f func, Saya akan melakukan 4, 1 kali ini. Dan 17, yaitu 4 kuadrat ditambah 1, seperti yang Anda harapkan. Tapi saya juga bisa saja menyebutnya dengan func 4, dan saya akan mendapatkan 18, karena Saya tidak menentukan b. Jadi b mendapat nilai default dari 2. OK, jadi sekarang jika Anda berikut bersama dengan demo, ketik baris ini di perintah Anda meminta dan lihat apa yang muncul. Sebenarnya, jangan lakukan itu. Ketik ini. Anda harus mendapatkan sesuatu seperti ini. Jadi mtcars adalah dibangun dalam data ditetapkan untuk demonstrasi ini tujuan yang datang with-- yang datang di secara default dengan distribusi r Anda. Ini adalah kompilasi dari statistik dari a 1974 edisi majalah Motor Trend ini pada sejumlah model mobil yang berbeda. Jadi ada mil per galon, cylinders-- Saya lupa apa Disp is-- tenaga kuda. Mungkin. Jika Anda hanya mobil Google MT, maka salah satu hasil pertama akan dari dokumentasi r resmi dan itu akan menjelaskan semua bidang data ini. Jadi berat badan is-- wt adalah berat mobil di ton. Q sec adalah waktu seperempat mil. Jadi sekarang kita bisa melakukan beberapa hal menyenangkan tentang mobil MT adalah bidang data. Jadi kita bisa melakukan hal-hal seperti nama baris, mobil mt. Dan ini adalah daftar semua baris di kumpulan data yang nama-nama mobil. Kita bisa melakukan colnames, mobil mt ini. Jika Anda melakukan mobil mt, Indeks sub-numerik, seperti 2. kita mendapatkan kolom kedua dari ini, yang akan menjadi silinder. AUDIENCE: Apa yang Anda lakukan? CONNER HARRIS: Saya mengetik mt mobil, kurung e, yang memberi saya yang kedua kolom dari mobil mt. Atau jika kita ingin berturut-turut, saya bisa mengetik mtcars koma 2, misalnya. Sebaliknya 2 koma, seperti itu. Dan itu berlaku berturut-turut Anda. Ini di sini hanya memberi Anda kolom, tetapi kolom sebagai vektor. Aku baru sadar sekarang saya lupa untuk menunjukkan beberapa hal keren tentang vektor yang dapat Anda lakukan dengan indeks. Jadi biarkan aku melakukan itu sekarang. Jadi mari kita lakukan c gets-- menempatkan ini pada pause-- 2 kali 1 sampai 10. Jadi c hanya akan menjadi vektor 2 melalui 20. Saya dapat mengambil elemen seperti ini, c2. Aku bisa lulus dalam vektor seperti ini, biarkan aku c-- menggunakan nama yang berbeda dari c, seperti vec c. Pada dasarnya, aku melakukan ini sehingga Anda tidak mendapatkan bingung antara c sebagai Fungsi konstruksi vektor, dan kemudian c sebagai nama variabel. Kurung vec c 4, 5, 7. Ini akan mendapatkan saya keluar keempat, kelima, dan tujuh elemen array. Aku bisa melakukan vec, dimasukkan ke dalam negatif Indeks, seperti negatif 4. Itu akan membuat saya keluar dengan unsur keempat dihapus. Kemudian jika saya ingin melakukan irisan, Aku bisa melakukan vec 2 sampai 6. 2 usus 6 hanyalah vektor, yaitu 2, 3, 4, 5, 6. Meludah keluar itu. Jadi bagaimanapun, kembali ke mobil mt. Jadi mari kita melakukan beberapa regresi. Katakanlah Model gets-- mari linear regress-- Saya tidak tahu. Pertama mari kita jangan melampirkan mtcars, tentu saja. Jadi [tidak terdengar] Model lm, mari kita mundur mil per galon pada berat tilde. Dan kemudian frame data adalah mtcars. Sehingga model summary. OK, jadi ini terlihat sedikit rumit. Tapi pada dasarnya, melihat seolah-olah kita mencoba untuk mengekspresikan mil per galon sebagai fungsi linear dari berat badan, kemudian kami punya baris ini di sini, yang penyadapan di 37,28. 37,28 akan menjadi mil teoritis per galon dari mobil yang beratnya nol. Dan kemudian untuk setiap ton tambahan, Anda mengetuk sekitar lima mil per galon off itu. Kedua koefisien ini Anda bisa melihat, kesalahan standar ada. Dan mereka sangat signifikan secara statistik. Jadi kita bisa sangat yakin untuk 1 e 10 ke negatif 10. Jadi 1 kali sesuatu ke negatif 10, bahwa jika Anda membuat mobil lebih berat, itu akan memiliki mil per galon lebih buruk. Atau kita dapat menguji beberapa model lain. Seperti bukannya kemunduran ini pada berat badan, mari kita mundur pada log berat, karena mungkin berat efektif jarak tempuh entah bagaimana tidak linear. Ini memberi kami r kuadrat dari 0,7528. Jadi mari kita coba ini. Kali ini mari kita melakukan variabel yang berbeda, juga. Model2. Jadi Singkatnya, model2. Baiklah, jadi sekali lagi, kita mendapat fit baris terbaik kami di sini. Dan ini time-- ini mengatakan, pada dasarnya bahwa setiap kali Anda meningkatkan berat mobil dengan faktor e Anda kehilangan ini banyak mil per galon. Dan kali ini standar sisa kami kesalahan itu-- itu tidak masalah, benar-benar. Kesalahan residual standar pada dasarnya hanya standard error bahwa Anda telah meninggalkan setelah Anda mengambil garis tren. Dan r kami kuadrat sini adalah 0,81, yang sedikit lebih baik dari apa yang kita sebelumnya, 0,52. Dan jadi sekarang mari kita menambahkan istilah untuk regresi ini. Jadi mari kita mundur mil per galon baik di log dari bobot dan, mari kita lakukan, q mil, kuartal waktu mil. OK, itu harus memiliki the---apa, qsec. Qsec. Actually-- maaf, apa? Biarkan saya menyebut sesuatu ini lain selain model2. Biarkan saya sebut model3 ini. Dan jadi sekarang kita dapat melakukan Ringkasan model3. Dan lagi, ini pada dasarnya adalah apa yang Anda harapkan. Anda memiliki mencegat positif. Efektif meningkatkan berat badan adalah negatif. Dan efektif meningkatkan kuartal waktu mil adalah positif, tapi meskipun kurang daripada berat badan. Sekarang intuitif, Anda dapat membuat rasa ini dengan mengatakan berpikir tentang mobil sport. Ada akselerasi sangat cepat, kali seperempat mil yang sangat singkat. Mereka juga akan menggunakan gas lebih, sedangkan mobil lebih masuk akal akan memiliki akselerasi lebih lambat, kali seperempat mil lebih tinggi, dan menggunakan gas kurang ,, jadi mil per galon lebih tinggi. Besar. Dan jadi sekarang saatnya untuk merencanakan sesuatu seperti ini. Jadi mari kita do-- begitu telanjang tulang yang bisa kita lakukan plots-- karena saya sudah melekat ini data frame before-- kita hanya bisa melakukan plot, mpg wt. Jadikan ini sedikit lebih besar. Ada, pada dasarnya kita memiliki scatter plot, tapi poin adalah agak sulit untuk melihat hal ini. Saya tidak ingat begitu saja apa yang sintaks adalah untuk mengubah plot. Jadi saya kira ini akan menjadi waktu yang baik untuk membuka, ada bantuan builtin sangat bagus fitur, bantuan kutipan berfungsi nama. Kami akan membawa pada dasarnya apa pun yang Anda inginkan. Saya pikir saya benar-benar akan melakukan ini Jenis sama p untuk poin plot. Apakah itu mengubah apa pun? Dan tidak, tidak benar-benar. Baiklah. Untuk beberapa alasan, ketika saya melakukan ini di komputer saya sendiri beberapa waktu lalu, semua poin pencar yang lebih jelas. Bagaimanapun, adalah pencar jenis terlihat? Ada satu ada. Beberapa ada, beberapa di sana. Anda dapat semacam melihat mereka, kan? Jadi jika kita ingin menambahkan cocok baris terbaik plot ini di sini, yang sedikit telanjang bones-- biarkan aku membuatnya sedikit lebih bagus. Main sama terhadap berat badan. Mil per galon. Sekali lagi, Anda dapat melihat bagaimana berguna argumen opsional di sini dengan juga tidak harus meletakkan segala sesuatu dalam urutan tertentu dengan argumen Keyboard ketika Anda memiliki plot, karena ini mengambil banyak argumen. Xlab sama berat, berat, ton. Baiklah. OK, ya, perangkat ini sedang sedikit mengganggu. Tapi Anda bisa melihat semacam di atas sana, ada judul grafik di samping. Di sini there's-- di bagian bawah di sini ada label sumbu. Saya tidak ingat begitu saja apa perintah ars-- apa fungsi adalah untuk meningkatkan ukuran label-label dan judul, tapi mereka ada. Dan jika kita ingin menambahkan paling cocok line, kita bisa melakukan sesuatu like-- Saya memiliki sintaks yang ditulis di sini. Jadi ingat kita hanya menambah model adalah mpg, berat badan, mtcars. Dan jadi jika saya ingin menambahkan cocok terbaik line, aku bisa melakukan model b line. Dan booming, kami memiliki garis cocok terbaik. Ini agak sulit untuk melihat lagi. Aku cukup menyesal tentang kesulitan teknologi. Tapi itu berjalan pada dasarnya atas kiri ke kanan bawah. Dan jika skala yang lebih besar, Anda bisa melihat yang mencegat adalah apa yang Anda bisa menemukan dari statistik ringkasan jika Anda mengetik Model summary. OK, jadi saya berharap semua orang mendapat sesuatu dari rasa apa R adalah, apa itu baik untuk. Anda bisa membuat plot jauh lebih bagus daripada ini pada waktu Anda sendiri, jika Anda suka. Jadi antarmuka fungsi asing. Ini adalah sesuatu yang tidak biasanya tercakup dalam kuliah pengantar atau pengantar apa pun untuk r. Ini tidak mungkin Anda akan membutuhkannya. Namun, saya menemukan itu berguna dalam proyek saya sendiri di masa lalu. Dan tidak ada yang baik tutorial untuk itu secara online. Jadi aku hanya akan terburu-buru Anda semua melalui ini dan kemudian Anda bebas untuk pergi. Dan jadi asing antarmuka fungsi yang Anda dapat menggunakan untuk memanggil untuk melihat fungsi dengan R. internal, R dibangun pada aritmatika C. R adalah hanya C 64-bit floating point aritmatika, yang merupakan jenis double [tidak terdengar]. Dan Anda mungkin ingin melakukan ini untuk sekelompok alasan. Untuk satu, R ditafsirkan, itu tidak dikompilasi ke kode mesin. Sehingga Anda dapat menulis ulang Anda loop batin dalam C dan kemudian mendapatkan keuntungan dari menggunakan R. Seperti itu sedikit lebih mudah daripada C. Ini memiliki grafik yang lebih baik Fasilitas dan yang lainnya. Dan sementara masih bisa mendapatkan kecepatan tertinggi dari loop batin, yang mana Anda benar-benar membutuhkannya. Menggunakan kembali perpustakaan C yang ada, itu juga penting. Jika Anda memiliki beberapa perpustakaan C untuk seperti, Saya tidak tahu, transformasi Fourier, atau sangat Arkean Prosedur statistik yang digunakan dalam astrofisika energi tinggi atau sesuatu, saya tidak tahu. Energi astrofisika tinggi bahkan tidak berpikir, saya pikir. Tapi Anda bisa melakukan itu bukan memiliki menulis R pelabuhan asli mereka. Dan pada the-- dan lagi, seperti jika Anda terlihat di sebagian besar R default perpustakaan, di internal, internal yang akan menggunakan fungsi asing antarmuka yang sangat luas. Mereka akan memiliki hal-hal seperti Fourier mengubah atau komputasi korelasi koefisien ditulis dalam C, dan mereka akan hanya R bungkus sekitar mereka. Antarmuka adalah Agak sulit. kupikir Kesulitan yang berlebihan dalam banyak petunjuk Anda akan menemukan. Namun demikian, itu adalah sedikit membingungkan. Dan saya belum mampu menemukan tutorial yang baik untuk itu, jadi ini adalah sekarang. Sekali lagi, segmen ini seluruh lebih untuk referensi nanti. Jangan khawatir tentang menyalin semuanya turun sekarang. Jadi instruksi berikut adalah untuk sistem Unix-seperti, Linux, BSD, OS X. Saya tidak tahu bagaimana ini bekerja pada Windows, tapi tolong hanya tidak melakukan Anda tugas akhir pada Windows. Anda benar-benar tidak ingin. Unix adalah set jauh lebih baik untuk pemrograman santai. Jadi, pada dasarnya asing fungsi antarmuka. Jika Anda ingin menulis C fungsi untuk digunakan dengan R, itu harus mengambil semua argumen sebagai pointer. Jadi untuk nilai-nilai tunggal, ini berarti itu menunjuk ke nilai. Untuk array, ini adalah pointer ke elemen pertama, yang adalah apa nama array yang benar-benar berarti. Sekali lagi, ini adalah sesuatu yang Anda harus memiliki cukup benar-benar turun setelah p ditetapkan lima. Nama Array hanya pointer ke elemen pertama, Jenis floating-point adalah ganda. Dan fungsi Anda harus kembali batal. Satu-satunya cara yang bisa benar-benar tahu apa yang terjadi R adalah dengan memodifikasi memori yang R memberi untuk itu melalui fungsi asing antarmuka. Jadi saya telah menulis ini contoh di sini, ini adalah fungsi yang menghitung penggunaan dot produk dari dua vektor. Dibutuhkan dua argumen, vec1, vec2, yang merupakan vektor sendiri, dan kemudian n, yang merupakan panjang, karena sekali lagi, R telah dibangun di [tidak terdengar] untuk mengetahui panjang vektor, tetapi C tidak. Dalam C, vektor adalah sewenang-wenang sepotong dipisahkan dari memori. Jadi cara yang Anda bisa menghitung dot produk hanya mengatur ini keluar parameter ke nol dan kemudian iterate melalui dari 1 untuk membintangi n, karena n adalah pointer ke panjang, hanya menambahkan sesuatu untuk parameter ini. Dan itu bisa menjadi latihan yang bagus jika Anda akan melakukan ini untuk menulis dua fungsi C terpisah. Salah satunya has-- salah satu dari mereka hanya mengambil argumen dan jenis bahwa mereka biasanya akan berada di C. Jadi Dibutuhkan array argumen sebagai pointer. Tapi satu-nilai argumen seperti n, itu hanya membutuhkan sebagai nilai-nilai oleh copy, tanpa petunjuk. Dan kemudian tidak [Tidak terdengar] keluar pointer. Dan kemudian Anda dapat memiliki berbeda, pada dasarnya, fungsi pembungkus yang pada dasarnya menangani persyaratan dari fungsi asing antarmuka untuk Anda. Cara Anda menyebutnya dalam R adalah, sekali Anda memiliki fungsi Anda ditulis dalam C, Anda mengetik R cmd shlib, R perintah shared library, foo dot c, atau apa pun nama file Anda, dan OS shell tidak di terminal R. Dan ini akan membuat perpustakaan disebut foo dot begitu. Dan kemudian Anda dapat memuat dalam script kami atau interaktif dengan perintah dyn dot beban. Lalu ada fungsi di R disebut dot c. Ini membutuhkan argumen yang pertama nama fungsi di C yang Anda ingin menyebutnya. Dan kemudian semua parameter untuk fungsi itu, mereka harus berada dalam urutan yang tepat. Anda harus menggunakan jenis ini fungsi pemaksaan sebagai integer, seperti ganda, sebagai karakter, dan sebagai logis. Dan kemudian ketika mengembalikan daftar, yang lagi-lagi hanya array terkait dari nama parameter dan nilai-nilai setelah fungsi telah menjalankan. Jadi dalam hal ini, karena dot prod memiliki argumen vec1, vec2, dan int n, n keluar. Untuk dot c kita memiliki dot prod, nama fungsi kita panggil, vec1, vec2, jenis memaksa. Panjang baik vektor, Aku hanya memilih vec1 sewenang-wenang. Ini akan menjadi lebih kuat untuk mengatakan s panjang min integer vec1, panjang vec2. Kemudian hanya sebagai nol ganda, karena kita tidak benar-benar peduli apa yang masuk ke keluar parameter karena kita pengaturan ke nol pula. Dan kemudian hasilnya akan menjadi Array terkait besar pada dasarnya vec1 adalah apa pun, vec2 adalah apa pun. Tapi kami tertarik keluar, sehingga kita bisa mendapatkan yang keluar. Ini lagi, mainan contoh yang sangat antarmuka fungsi asing. Tapi jika Anda harus menghitung dot produk dari vektor besar-besaran di loop, atau jika Anda harus melakukan sesuatu yang lain dalam satu lingkaran, dan Anda tidak ingin bergantung pada R, yang memang memiliki sedikit overhead dibangun ke dalamnya, ini dapat berguna. Sekali lagi, ini bukan biasanya topik pengantar ke R. Ini tidak didokumentasikan dengan baik. Aku hanya termasuk karena Saya menemukan itu berguna di masa lalu. Praktik Jadi, buruk. Saya menyebutkan bahwa ada untuk loop dalam fungsi. Umumnya Anda tidak harus, di bahasa, tidak menggunakannya. Berdasarkan bagaimana R menerapkan iterasi internal, bisa lambat. Mereka hanya juga terlihat jelek. R menangani vektor sangat baik, sehingga seringkali Anda tidak perlu menggunakannya. Maka Anda biasanya dapat mengganti vektor sering dengan fungsi-fungsi ini disebut tinggi fungsi rangka, Peta, Reduce, Cari, atau Filter. Saya hanya akan memberikan beberapa contoh dari apa ini lakukan. Peta adalah fungsi yang lebih tinggi karena dibutuhkan fungsi sebagai argumen. Jadi Anda dapat memberikan fungsi, Anda dapat memberikan sebuah array, dan itu akan berlaku fungsi untuk setiap elemen array dan mengembalikan array baru. Mengurangi, pada dasarnya Anda memberikan itu sebuah array, Anda memberikan fungsi yang mengambil dua argumen. Ini akan menerapkan fungsi pertama, Argumen pertama dengan beberapa nilai starter. Kemudian untuk yang menghasilkan kedua. Kemudian untuk hasil yang di ketiga, kemudian hasilnya di keempat. Dan kemudian kembali ketika sampai ke akhir. Jadi misalnya, jika Anda ingin menghitung jumlah dari semua elemen dalam array, daripada yang mungkin Anda sebut mengurangi dengan [tak terdengar] mengurangi tambahan fungsi, seperti func a, b, kembali plus b. Dan kemudian mulai nilai 0. Dan semua ini, Anda dapat menemukan mereka dijelaskan dalam dokumentasi R, dalam buku teks pada pemrograman fungsional. Ada juga kelas ini fungsi disebut menerapkan fungsi, yang saya don't-- mereka agak sulit untuk menjelaskan, tetapi jika Anda melihat di [tidak terdengar] memesan yang saya dikutip di awal, ia menjelaskan mereka cukup baik di Lampiran nya pada pemrograman R. Lebih lanjut tentang praktik, menambahkan ke vektor. Ya? Saya pikir saya harus memperbaiki itu. Dalam baris pertama, panah vec, panah yang seharusnya tidak ada. Anda dapat menetapkan untuk vektor, lagi, oleh mengambil panjangnya ditambah 1 dan menugaskan beberapa nilai untuk itu. Yang akan memperpanjang vektor, atau Anda dapat melakukan equals vec c, newValue vec. Sekali lagi, jika Anda menggunakan C dengan satu argumen sebagai vektor, hirarki yang dihasilkan akan diratakan. Jadi Anda hanya akan mendapatkan vektor yang diperpanjang oleh 1. Tidak pernah melakukan hal ini. Alasan mengapa Anda tidak harus melakukan ini adalah ini. Ketika Anda mengalokasikan vektor, itu memberikan sepotong tertentu memori. Jika Anda meningkatkan ukuran bahwa vektor, itu harus mengalokasikan vektor di tempat lain. Dan realokasi cukup mahal. Saya tidak akan masuk ke rincian tentang bagaimana penyalur memori diimplementasikan pada tingkat sistem operasi, namun butuh banyak waktu untuk menemukan sepotong baru memori. Dan juga, jika Anda re-mengalokasikan banyak dan banyak progresif yang lebih besar potongan, Anda berakhir dengan sesuatu yang disebut fragmentasi memori, di mana memori yang tersedia adalah dibagi menjadi banyak sedikit blok di penyalur memori sudut pandang. Dan itu semakin sulit dan sulit untuk menemukan memori untuk hal-hal lain. Jadi sebagai gantinya, jika Anda perlu untuk melakukan hal ini, jika Anda perlu untuk tumbuh vektor dari satu ujung ke depan, bukannya menambahkan untuk itu terus-menerus, Anda harus pra-mengalokasikan itu. Panah vec, panjang vektor sama dengan 1.000, atau apa pun. Dan kemudian Anda hanya dapat menetapkan dengan vektor nilai satu waktu setelah Anda dialokasikan sekali. Aku berlari ke dalam, lagi, pekerjaan musim panas saya ketika saya sedang menulis NRA diferensial persamaan solver. Tidak simbolik numerik. Idenya adalah bahwa setelah Anda memiliki satu nilai untuk solusi Anda, Anda menggunakannya untuk menghitung yang berikutnya. Jadi saya alami naif Kecenderungan adalah untuk mengatakan OK, jadi saya akan mulai dengan vektor itu nilai yang besar. Menghitung dari yang nilai berikutnya yang masuk ke vektor solusi saya, dan menambahkan itu. Buat sesuatu yang lain, tambahkan itu. Itu berjalan sangat, sangat lambat. Dan setelah saya menyadari ini dan saya mengubah sistem saya dari menambahkan ke vektor ini seperti 10.000 sampai 100.000 kali, hanya pra-mengalokasikan vektor dan hanya berjalan dengan itu. Aku punya lebih dari 1.000 kali lipat kecepatan up. Jadi ini adalah sangat umum perangkap untuk pemrograman R. Jika Anda perlu untuk membangun sebuah vektor sepotong demi sepotong, pra-mengalokasikan itu. Perjalanan umum lainnya up-- ini terakhir saya slide, tidak worry-- adalah penanganan error. R, jujur, tidak benar-benar melakukan hal ini dengan sangat baik. Ada banyak masalah yang bisa muncul. Misalnya, jika Anda mendapatkan sebuah array atau vektor dari fungsi Anda mengharapkan satu Nilai datang dari, atau sebaliknya, dan Anda lulus yang menjadi fungsi yang Anda menulis mengharapkan nilai tunggal, yang dapat menjadi masalah. Fungsi tertentu kembali null seperti halnya, katakanlah, membaca dari kunci tidak ada dalam daftar. Tapi nol tidak seperti C di mana jika Anda mencoba untuk membaca dari pointer tua, [tidak terdengar] null pointer, itu hanya kesalahan seg dan jika Anda berada di debugger Anda itu memberitahu Anda tepat di mana Anda berada. Sebaliknya, null akan do-- fungsi akan melakukan hal-hal tak terduga jika mereka menyerahkan null. Seperti jika Anda menyerahkan max null, itu akan memberi Anda tak terhingga negatif. Dan sebagainya, ya. Dan jadi ini terjadi saya sekali ketika aku berubah sekelompok bidang dalam struktur daftar sekali tanpa mengubah mereka di tempat lain ketika saya membaca dari mereka. Dan kemudian saya mendapat segala macam acak Hasil infinity tanam dan saya tidak tahu dari mana mereka berasal. Dan sayangnya, ada ada R modus ketat nyata di mana Anda dapat mengatakan jika sesuatu terlihat seperti itu mungkin kesalahan, hanya berhenti di sana sehingga saya bisa disiplin dan memperbaikinya. Namun, ada sesuatu disebut berhenti jika tidak. Hal ini setara dengan menegaskan C, jika Anda sudah bicara tentang itu. Saya tidak berpikir C menegaskan adalah topik kuliah, tetapi pemimpin bagian Anda mungkin sudah lebih dari itu. Dan berhenti jika tidak pada dasarnya mengambil setiap predikat, sehingga pernyataan apapun yang bisa benar atau salah. Dan jika itu palsu, berhenti programnya. Ini memberitahu Anda apa yang Anda garis berada di dan apa kondisi gagal. Dan ini sangat berguna, misalnya, memeriksa kewarasan, masukan fungsi. Jadi jika Anda memiliki fungsi dan Anda harapkan, katakanlah, jika Anda harus memberikan tanggal, saya ingin tanggal hanya vektor dengan panjang 1 dan di suatu tempat antara 1 dan 31. Dan jika tidak, saya tahu sesuatu yang tidak beres. Dan aku memilih untuk berhenti di situ sebelum ini memiliki ketukan acak pada efek dengan kode yang lebih sulit untuk melacak melalui. Jadi itu salah satu kemungkinan gunakan untuk berhenti jika tidak. Bagaimanapun, OK. Jadi itulah akhirnya. Terima kasih banyak untuk datang. Saya seorang amatir peringkat ini. Jadi maaf jika Anda bosan atau bingung atau apa pun. Saya senang untuk mengambil pertanyaan melalui email di connorharris@college.harvard.edu. Ini berlaku juga untuk semua orang menonton hidup ini atau nanti. Juga, meskipun aku tidak TF yang, saya juga sangat bersedia untuk melayani sebagai tidak resmi penasihat untuk siapa saja yang menggunakan R dalam proyek akhir. Jika Anda ingin itu, kemudian hanya berbicara dengan TF Anda dan kemudian menulis saya email sehingga Aku tahu apa yang sedang Anda kerjakan dan jadi saya dapat mengatur pertemuan kali dengan Anda jika Anda ingin. Jadi sekali lagi, terima kasih banyak. Saya harap Anda menikmatinya. AUDIENCE: [tidak terdengar]. CONNER HARRIS: Tentu saja. AUDIENCE: Apa jenis proyek akan seorang mahasiswa CS menggunakan R untuk? CONNER HARRIS: Jadi jika Anda tidak sesuatu yang murni di data mining, misalnya, dan ada banyak hal Anda bisa melakukan dengan itu dengan data pertambangan dan mesin belajar. Anda mungkin ingin menggunakan R untuk komponen dari sesuatu. Aku dibesarkan, awalnya, misalnya dari jika Anda sedang menulis sebuah website dan Anda ingin menjalankan otomatis analisis statistik server Anda log pada waktu tertentu setiap hari, yang mungkin sesuatu yang sangat mudah dilakukan hanya dalam singkat R script yang Anda dapat menjadwalkan untuk menjalankan setiap malam, misalnya. Dan aku yakin, jika ada alasan apapun Anda akan ingin statistik atau kemampuan grafik dan memiliki run ini secara otomatis bukan karena harus berinteraksi dengan hal-hal di Excel, misalnya, itu sesuatu Anda mungkin ingin menggunakan R untuk. Jadi pertanyaan lagi sebelum saya pergi? Tidak? Baiklah, baik, lagi, terima Anda sangat banyak untuk datang.