1 00:00:00,000 --> 00:00:05,691 2 00:00:05,691 --> 00:00:07,690 CONNOR HARRIS: Still I pense algún vídeo emocionante 3 00:00:07,690 --> 00:00:12,570 producido por unha empresa de consultoría profesional que usa R moito no seu traballo. 4 00:00:12,570 --> 00:00:16,329 >> Narrador: O que está detrás das estatísticas, as análises e as visualizacións 5 00:00:16,329 --> 00:00:19,770 máis brillantes científicos de datos que hoxe e líderes empresariais dependen 6 00:00:19,770 --> 00:00:22,012 para tomar decisións poderosos? 7 00:00:22,012 --> 00:00:23,540 Non poderá velo. 8 00:00:23,540 --> 00:00:24,790 Pero está aí. 9 00:00:24,790 --> 00:00:29,460 Chama-se R, de código aberto r-- o linguaxe de programación estatística 10 00:00:29,460 --> 00:00:32,630 que expertos de datos do mundo sobre o uso para todo 11 00:00:32,630 --> 00:00:35,350 de cartografía amplo sociais e tendencias de marketing en liña 12 00:00:35,350 --> 00:00:39,210 para o desenvolvemento da financeira e clima modelos que axudan a conducir as nosas economías 13 00:00:39,210 --> 00:00:40,780 e comunidades. 14 00:00:40,780 --> 00:00:44,910 >> Pero o que é exactamente R e onde R comezar? 15 00:00:44,910 --> 00:00:48,620 Ben orixinalmente, R iniciado aquí con dous profesores 16 00:00:48,620 --> 00:00:51,950 que quería unha mellor estatística plataforma para os seus alumnos. 17 00:00:51,950 --> 00:00:56,030 Entón, eles crearon un modelado despois da linguaxe estatística S. 18 00:00:56,030 --> 00:01:00,480 Eles, xunto con moitos outros, continuou traballando e utilizando R, 19 00:01:00,480 --> 00:01:05,489 creación de ferramentas para R e atopar novas aplicacións para R cada día. 20 00:01:05,489 --> 00:01:07,750 >> Grazas a esta é esforzo da comunidade mundial, 21 00:01:07,750 --> 00:01:11,850 R continuou crecendo con miles de bibliotecas creadas polo usuario construídas 22 00:01:11,850 --> 00:01:15,500 para mellorar a funcionalidade e R validación calidade crowdsourced 23 00:01:15,500 --> 00:01:19,740 e apoio do máis recoñecido líderes da industria en todos os campos que 24 00:01:19,740 --> 00:01:25,040 usa R. O que é óptimo, porque R é o mellor no que fai. 25 00:01:25,040 --> 00:01:28,540 Brotando expertos de xeito rápido e facilmente interpretar, interactuar con, 26 00:01:28,540 --> 00:01:33,790 e ver os datos que mostra a súa rápida crecente comunidade de usuarios en todo o mundo R 27 00:01:33,790 --> 00:01:36,380 para ver como código aberto R continúa a moldear 28 00:01:36,380 --> 00:01:39,340 o futuro da estatística análise e ciencia datos. 29 00:01:39,340 --> 00:01:44,660 30 00:01:44,660 --> 00:01:47,710 >> CONNOR HARRIS: OK, gran. 31 00:01:47,710 --> 00:01:50,360 Así, a miña propia presentación vai ser un pouco máis sobrio. 32 00:01:50,360 --> 00:01:54,380 Non vai implicar tanto música de fondo emocionante. 33 00:01:54,380 --> 00:01:59,160 Pero como viu no video, R é unha especie dunha linguaxe xeral do programa finalidade. 34 00:01:59,160 --> 00:02:03,720 Pero el foi creado principalmente para o traballo estatístico. 35 00:02:03,720 --> 00:02:07,980 >> Entón, el está deseñado para as estatísticas, para a análise de datos, para a minería de datos. 36 00:02:07,980 --> 00:02:12,420 E así pode ver iso en unha morea de as opcións de deseño que os fabricantes de R 37 00:02:12,420 --> 00:02:13,320 feita. 38 00:02:13,320 --> 00:02:15,472 Foi deseñado para en gran parte, persoas que non son 39 00:02:15,472 --> 00:02:17,930 especialistas en programación, que só está pegando programación 40 00:02:17,930 --> 00:02:23,460 na parte para que se poidan facer o seu traballo en ciencias sociais ou nas estatísticas 41 00:02:23,460 --> 00:02:25,440 ou o que quere. 42 00:02:25,440 --> 00:02:27,850 >> Ten unha morea de moi diferenzas importantes de C. 43 00:02:27,850 --> 00:02:33,200 Pero a sintaxe e os paradigmas que usa son practicamente as mesmas. 44 00:02:33,200 --> 00:02:36,830 E ten que sentirse fermosa tanto na casa logo de cara. 45 00:02:36,830 --> 00:02:38,520 É unha linguaxe imperativa. 46 00:02:38,520 --> 00:02:40,260 >> Non te preocupes moito con iso se non sabe o termo. 47 00:02:40,260 --> 00:02:42,676 Pero hai unha distinción entre imperativo, declarativa, 48 00:02:42,676 --> 00:02:43,810 e funcional. 49 00:02:43,810 --> 00:02:47,600 Imperativo significa só que faga declaracións que son basicamente as ordes. 50 00:02:47,600 --> 00:02:52,340 E, a continuación, o intérprete ou o ordenador segue os un a un. 51 00:02:52,340 --> 00:02:56,630 É feblemente tipado, existen non hai declaracións de tipo en R. 52 00:02:56,630 --> 00:02:59,130 >> E despois as liñas entre diferentes tipos 53 00:02:59,130 --> 00:03:03,920 son un pouco máis solto que son en C, por exemplo. 54 00:03:03,920 --> 00:03:06,450 E como dixen hai instalacións moi extensas 55 00:03:06,450 --> 00:03:15,610 para elaboración de gráficos, para fins estatísticos análise, para minería de datos. 56 00:03:15,610 --> 00:03:19,540 Estes son ambos construídos no linguaxe e, como dixo que o vídeo, 57 00:03:19,540 --> 00:03:23,680 miles de bibliotecas de terceiros que podes baixar e utilizar de balde 58 00:03:23,680 --> 00:03:25,340 con condicións de licenza moi soltas. 59 00:03:25,340 --> 00:03:28,800 60 00:03:28,800 --> 00:03:31,500 >> Así, en xeral, eu recomendado que mira para estes dous libros 61 00:03:31,500 --> 00:03:34,610 se está indo para traballar en R. One deles é o oficial de R novato 62 00:03:34,610 --> 00:03:35,110 guiar. 63 00:03:35,110 --> 00:03:38,660 É mantida pola desenvolvedores do núcleo de R. 64 00:03:38,660 --> 00:03:42,400 Pode baixa-lo de novo, libre de cobrar e legalmente naquel ligazón alí. 65 00:03:42,400 --> 00:03:45,430 66 00:03:45,430 --> 00:03:49,869 Todos estes diapositivas están a ir en internet, na páxina web CS50 67 00:03:49,869 --> 00:03:50,660 tras iso está feito. 68 00:03:50,660 --> 00:03:53,690 Entón non hai necesidade de copiar cousas para abaixo freneticamente. 69 00:03:53,690 --> 00:03:56,800 >> A outra é unha libro por Cosma Shalizi, 70 00:03:56,800 --> 00:04:00,100 que é profesor de estatísticas a Carnegie Mellon, chamado Advanced Data 71 00:04:00,100 --> 00:04:02,160 Análise dun Punto de Vista Elementary. 72 00:04:02,160 --> 00:04:04,010 Esta non é principalmente un libro de R. 73 00:04:04,010 --> 00:04:07,130 É un libro de estatísticas e é un libro de análise de datos. 74 00:04:07,130 --> 00:04:11,990 Pero é moi accesible para persoas que ter un mínimo de coñecemento de estatísticas. 75 00:04:11,990 --> 00:04:13,750 >> Nunca tomar un curso formal. 76 00:04:13,750 --> 00:04:17,269 Eu só sei anacos a partir de varios asuntos afíns 77 00:04:17,269 --> 00:04:18,579 que eu teño feito cursos in. 78 00:04:18,579 --> 00:04:21,839 E eu era capaz de entender perfectamente ben. 79 00:04:21,839 --> 00:04:25,630 >> Todas as figuras son dadas en R. Son feitos en I 80 00:04:25,630 --> 00:04:30,280 e eles tamén teñen listas de código por baixo de cada figura que dicirlle 81 00:04:30,280 --> 00:04:33,270 como fai cada figura con código R. 82 00:04:33,270 --> 00:04:37,400 E iso é moi útil se estás emular 83 00:04:37,400 --> 00:04:38,650 algunha figura que ve nun libro. 84 00:04:38,650 --> 00:04:47,840 >> E fai a descarga de novo libre stat.cmu.edu/cshalizi/ Sentímolo, 85 00:04:47,840 --> 00:04:50,230 que debe ser cortar cshalizi til. 86 00:04:50,230 --> 00:04:53,150 Vou ter a certeza de que corrixir cando os diapositivas oficiais subir. 87 00:04:53,150 --> 00:04:57,000 / ADAfaEPoV que é só o acrónimo do título do libro. 88 00:04:57,000 --> 00:04:59,850 89 00:04:59,850 --> 00:05:02,500 >> Entón xeral caveats-- R ten unha morea de recursos. 90 00:05:02,500 --> 00:05:05,331 Eu só vou ser capaz de cubrir a superficie dunha serie de cousas. 91 00:05:05,331 --> 00:05:08,580 Ademais, a primeira porción do seminario será algo dun desaloxo de datos. 92 00:05:08,580 --> 00:05:11,437 Estou moi triste con iso. 93 00:05:11,437 --> 00:05:13,770 Basicamente, eu vou presenta-lo a unha morea de cousas 94 00:05:13,770 --> 00:05:15,350 pronto de cara, indo tan axiña como sexa posible. 95 00:05:15,350 --> 00:05:17,058 E entón comezamos a a parte divertida, que é 96 00:05:17,058 --> 00:05:20,570 o demo onde eu poida amosar todo que xa falamos sobre a pantalla. 97 00:05:20,570 --> 00:05:23,321 E pode xogar no seu propio país. 98 00:05:23,321 --> 00:05:26,070 Entón alí vai ser unha morea de material técnico xogado ata aquí. 99 00:05:26,070 --> 00:05:28,060 Non se preocupe en copiar todo o que abaixo. 100 00:05:28,060 --> 00:05:31,740 Porque A, podes ver todas as material na web do CS50 máis tarde. 101 00:05:31,740 --> 00:05:37,780 E B, non é realmente tan importante Recordar esta dos diapositivas. 102 00:05:37,780 --> 00:05:40,462 É máis importante que obteña algunha facilidade intuitiva con el 103 00:05:40,462 --> 00:05:44,220 e que vén de só xogar. 104 00:05:44,220 --> 00:05:45,720 >> Entón, por que usar R? 105 00:05:45,720 --> 00:05:49,440 Basicamente, se ten un proxecto que implica minería grandes conxuntos de datos, os datos 106 00:05:49,440 --> 00:05:52,664 visualización, vostede usar R. Se é 107 00:05:52,664 --> 00:05:55,830 facendo análises estatísticas complicadas, que sería difícil en Excel, 108 00:05:55,830 --> 00:05:58,010 Por exemplo, sería tamén ser tamén boa-- 109 00:05:58,010 --> 00:06:00,506 se está facendo estatística análise que é automatizado. 110 00:06:00,506 --> 00:06:02,130 Imos dicir que está mantendo un sitio web. 111 00:06:02,130 --> 00:06:06,320 E quere ler o rexistro do servidor todos os días e compilar algúns lista, 112 00:06:06,320 --> 00:06:10,320 como os principais países que seus usuarios están vindo, 113 00:06:10,320 --> 00:06:15,100 algunhas estatísticas de resumo sobre canto tempo gastan no seu sitio web ou o que quere. 114 00:06:15,100 --> 00:06:16,910 E quere executar este día a día. 115 00:06:16,910 --> 00:06:20,280 >> Agora, se está a facer iso en Excel, que tería que ir ao seu rexistro do servidor, 116 00:06:20,280 --> 00:06:23,490 descargar que nun Folla de datos de Excel, 117 00:06:23,490 --> 00:06:24,910 executar toda a análise manual. 118 00:06:24,910 --> 00:06:27,100 Con R, pode só escribir un guión. 119 00:06:27,100 --> 00:06:29,520 Axenda lo para realizar todos os días a partir do seu ordenador. 120 00:06:29,520 --> 00:06:33,657 E, a continuación, cada noite ás 02:00, ou sempre que programa-lo para ser executado, 121 00:06:33,657 --> 00:06:35,990 vai ollar a través do seu tráfico de Internet para ese día. 122 00:06:35,990 --> 00:06:39,010 E entón, o día seguinte, vai ter esa brillante, novo informe 123 00:06:39,010 --> 00:06:41,710 ou o que quere que con toda información que pediu. 124 00:06:41,710 --> 00:06:44,960 125 00:06:44,960 --> 00:06:50,217 >> Entón, basicamente, o R é para Cisco programación versus análise de Cisco. 126 00:06:50,217 --> 00:06:51,050 Preliminar está feito. 127 00:06:51,050 --> 00:06:53,104 Imos entrar en cousas reais. 128 00:06:53,104 --> 00:06:55,020 Polo tanto, hai tres reais tipo na linguaxe. 129 00:06:55,020 --> 00:06:56,120 Hai tipo numérico. 130 00:06:56,120 --> 00:07:01,250 Hai unha especie de unha diferenza entre enteiros e puntos flotantes, 131 00:07:01,250 --> 00:07:02,769 pero non realmente. 132 00:07:02,769 --> 00:07:04,560 Hai un personaxe tipo, que é strings. 133 00:07:04,560 --> 00:07:07,100 E hai unha lóxica tipo, que é Booleans. 134 00:07:07,100 --> 00:07:11,080 >> E pode converter entre tipo usando estas funcións como numérico, 135 00:07:11,080 --> 00:07:15,220 como personaxe, como lóxico. 136 00:07:15,220 --> 00:07:17,510 Se chamar, por exemplo, como numérico nunha corda, 137 00:07:17,510 --> 00:07:20,030 vai tentar ler esa secuencia como un número, do mesmo xeito 138 00:07:20,030 --> 00:07:25,897 que A2i e scanf facer, e C. Se chama como numérico en verdadeiro ou falso 139 00:07:25,897 --> 00:07:26,980 ha converter a 1 ou 0. 140 00:07:26,980 --> 00:07:29,110 Se chamar como personaxe en calquera cousa que vai 141 00:07:29,110 --> 00:07:32,550 convertelo en un representación de cadea. 142 00:07:32,550 --> 00:07:34,990 >> E despois hai os vectores e matrices. 143 00:07:34,990 --> 00:07:37,580 Así, os vectores son basicamente 1 matrices dimensionais. 144 00:07:37,580 --> 00:07:40,600 Son o que chamamos matrices en C. Matrices, 2 matrices dimensionais. 145 00:07:40,600 --> 00:07:42,350 E entón maior matrices dimensionais que pode 146 00:07:42,350 --> 00:07:48,560 teñen 3, 4, 5 dimensións ou o que quere de valores numéricos, de cordas, 147 00:07:48,560 --> 00:07:52,860 valores de lóxicas. 148 00:07:52,860 --> 00:07:55,380 >> Tamén ten listas que son unha especie de matriz asociativa. 149 00:07:55,380 --> 00:07:57,390 Eu vou entrar niso un pouco. 150 00:07:57,390 --> 00:07:59,390 Entón, unha cousa importante que as viaxes de persoas en R 151 00:07:59,390 --> 00:08:01,470 é que non hai reais, tipos atómicos puros. 152 00:08:01,470 --> 00:08:05,870 Non hai distinción real entre un número, como un valor numérico, 153 00:08:05,870 --> 00:08:07,920 e unha lista de valores numéricos. 154 00:08:07,920 --> 00:08:12,370 Os valores numéricos son realmente o aínda que os vectores de lonxitude 1. 155 00:08:12,370 --> 00:08:14,959 E isto ten un número de implicacións importantes. 156 00:08:14,959 --> 00:08:17,500 Un deles, iso significa que pode facer cousas moi facilmente que envolven 157 00:08:17,500 --> 00:08:21,037 como a adición de un número a un vector. 158 00:08:21,037 --> 00:08:23,120 R será basicamente figura o que quere dicir con iso. 159 00:08:23,120 --> 00:08:24,610 E eu vou chegar a iso nun segundo. 160 00:08:24,610 --> 00:08:27,930 Isto tamén significa que non hai ningunha maneira para o tipo, na medida en checker-- 161 00:08:27,930 --> 00:08:30,530 que algo así existe en r-- para contar 162 00:08:30,530 --> 00:08:33,780 cando pasou por valor único cando se espera unha matriz ou viceversa. 163 00:08:33,780 --> 00:08:39,159 E iso pode causar algún estraño problemas que tiven cando 164 00:08:39,159 --> 00:08:42,252 Eu estaba usando R durante o meu traballo de verán. 165 00:08:42,252 --> 00:08:43,710 E non hai matrices de tipo mixto. 166 00:08:43,710 --> 00:08:46,543 Entón non pode ter unha matriz foron o primeiros elementos é, eu non sei, 167 00:08:46,543 --> 00:08:49,332 a cadea "John" ea segundo elemento é o número 42. 168 00:08:49,332 --> 00:08:52,540 Se tentar iso, entón vai ter todo só converter a unha cadea. 169 00:08:52,540 --> 00:08:54,760 Polo tanto, temos corda John, corda 42. 170 00:08:54,760 --> 00:08:58,250 171 00:08:58,250 --> 00:09:02,025 >> Sintáctica tan inusual features-- máis R sintaxe é moi semellante a C. 172 00:09:02,025 --> 00:09:04,690 Existen algunhas diferenzas importantes. 173 00:09:04,690 --> 00:09:05,620 A dixitación é moi feble. 174 00:09:05,620 --> 00:09:07,360 Polo tanto, non hai declaracións de variables. 175 00:09:07,360 --> 00:09:12,670 Recoñecemento usa o estraño operador de erro inferior ao guión. 176 00:09:12,670 --> 00:09:15,340 Comentarios están baixo a marca de hash. 177 00:09:15,340 --> 00:09:19,230 Creo que hoxe en día chamamos iso hashtag aínda que isto non é realmente non accurate-- 178 00:09:19,230 --> 00:09:21,810 a barra dobre. 179 00:09:21,810 --> 00:09:24,710 >> Residuos son modulares con %% sinais. 180 00:09:24,710 --> 00:09:30,172 División enteira é con% /%, o que é moi difícil de ler cando está deseñada 181 00:09:30,172 --> 00:09:30,880 up na pantalla. 182 00:09:30,880 --> 00:09:34,150 183 00:09:34,150 --> 00:09:37,200 Pode obter intervalos de números enteiros co colon. 184 00:09:37,200 --> 00:09:41,840 Así 2,5 lle vai dar un vector de todos os números de 2 a 5. 185 00:09:41,840 --> 00:09:44,530 >> Arrays son one-indexados, parafusos que unha morea de xente 186 00:09:44,530 --> 00:09:47,540 ata no caso de que están entre máis linguaxes de programación típicos, 187 00:09:47,540 --> 00:09:50,450 como C, onde a maioría as cousas son cero-indexada. 188 00:09:50,450 --> 00:09:54,420 Unha vez máis, este é o lugar onde a herdanza de R como unha linguaxe para como non 189 00:09:54,420 --> 00:09:56,560 programadores profesionais entra. 190 00:09:56,560 --> 00:09:59,680 Se vostede é un sociólogo ou un economista ou algo 191 00:09:59,680 --> 00:10:01,980 e está tentando usar R basicamente como subrogante 192 00:10:01,980 --> 00:10:03,832 ao seu máis importante traballo profesional, 193 00:10:03,832 --> 00:10:06,040 vai atopar one-indexar un pouco máis natural. 194 00:10:06,040 --> 00:10:09,890 Porque comezar a contar a 1 na vida cotiá, non 0. 195 00:10:09,890 --> 00:10:13,260 >> Para loops, isto é semellante ao a construción foreach en PHP, 196 00:10:13,260 --> 00:10:17,090 que vai ter que em-- aprender moi pronto. 197 00:10:17,090 --> 00:10:22,540 Que é para o valor no vector e a continuación, pode facer cousas con valor. 198 00:10:22,540 --> 00:10:24,040 Audiencia: Isto é chegar a charla. 199 00:10:24,040 --> 00:10:26,248 CONNOR HARRIS: Ah, iso é vir cara arriba conferencia, excelente. 200 00:10:26,248 --> 00:10:29,815 Audiencia: A asignación, é debería apuntar de dereita a esquerda? 201 00:10:29,815 --> 00:10:31,440 CONNOR HARRIS: Da dereita á esquerda, si. 202 00:10:31,440 --> 00:10:34,720 Podes pensar niso como o valor en dereito empurrado para a variable 203 00:10:34,720 --> 00:10:36,240 á esquerda. 204 00:10:36,240 --> 00:10:36,781 Audiencia: Aceptar. 205 00:10:36,781 --> 00:10:39,770 206 00:10:39,770 --> 00:10:42,330 >> CONNOR HARRIS: E finalmente sintaxe da función é un pouco raro. 207 00:10:42,330 --> 00:10:48,460 Ten a foo nome da función, atribuída para esta función clave, seguido 208 00:10:48,460 --> 00:10:51,530 por todos os argumentos e, a continuación, o corpo da función tras iso. 209 00:10:51,530 --> 00:10:53,280 De novo, estas cousas poden parece un pouco raro. 210 00:10:53,280 --> 00:10:57,181 Eles van facer unha segunda natureza despois traballa coa linguaxe un pouco. 211 00:10:57,181 --> 00:10:58,930 Así, os vectores, o xeito construír un vector 212 00:10:58,930 --> 00:11:04,550 é vostede tipo C, que é unha palabra clave, a continuación, todos os números desexados ou cordas 213 00:11:04,550 --> 00:11:06,490 ou o que quere. 214 00:11:06,490 --> 00:11:07,995 Argumentos tamén ser vectores. 215 00:11:07,995 --> 00:11:09,620 Pero a matriz resultante queda achatada. 216 00:11:09,620 --> 00:11:14,385 Entón non pode ter matrices onde algúns elementos son números individuais 217 00:11:14,385 --> 00:11:17,010 e algúns elementos son propias matrices. 218 00:11:17,010 --> 00:11:20,010 >> Entón, se tentar construír un foron matriz do primeiro elemento é 4 219 00:11:20,010 --> 00:11:22,370 eo segundo elemento é a matriz de 3,5 vostede 220 00:11:22,370 --> 00:11:25,890 é só incorporarse unha matriz de tres elementos, 4,3,5. 221 00:11:25,890 --> 00:11:27,760 Elas non poden ser de tipo mixto. 222 00:11:27,760 --> 00:11:32,290 Se tentar ler ou escribir fóra dos límites dun vector 223 00:11:32,290 --> 00:11:36,640 vai ter ese valor chamado NA unha que representa un valor en falta. 224 00:11:36,640 --> 00:11:39,900 E está dirixida a esta como estatísticos que 225 00:11:39,900 --> 00:11:43,080 están a traballar con conxuntos de datos incompletos. 226 00:11:43,080 --> 00:11:46,460 >> Se aplicar unha función que debería para dar só un número a unha matriz 227 00:11:46,460 --> 00:11:49,220 entón o que vai ter é o función pode mapear todo o array. 228 00:11:49,220 --> 00:11:52,130 Entón, se a súa función, digamos que leva un número e devolve-lo cadrados. 229 00:11:52,130 --> 00:11:58,170 Aplicar iso a matriz 2,3,5 O que vai ter é a matriz 4,9,25. 230 00:11:58,170 --> 00:12:00,010 >> E iso é moi útil porque significa que 231 00:12:00,010 --> 00:12:03,374 Non ten que escribir para loops para facendo cousas moi simples como aplicar 232 00:12:03,374 --> 00:12:05,040 unha función para todos os membros dun conxunto de datos. 233 00:12:05,040 --> 00:12:08,557 Que se está a traballar con gran conxuntos de datos, ten que facer unha chea. 234 00:12:08,557 --> 00:12:10,390 Funcións binarias son entrada aplicada pola entrada. 235 00:12:10,390 --> 00:12:12,430 Eu vou entrar niso. 236 00:12:12,430 --> 00:12:16,750 Pode acceder a eles con matrices ou vectores con corchetes. 237 00:12:16,750 --> 00:12:22,300 Entón soportes nome do vector cadrados 1 lle vai dar o primeiro elemento. 238 00:12:22,300 --> 00:12:25,510 Nome do vector corchetes 2 lle dará o segundo elemento. 239 00:12:25,510 --> 00:12:27,530 >> Pode pasar un vector de índices e vai 240 00:12:27,530 --> 00:12:29,640 volver para fóra, basicamente, un factor de sub. 241 00:12:29,640 --> 00:12:34,990 Para que poida facer vector de nomes de soportes C, 2,4 e vai saír un vector que contén 242 00:12:34,990 --> 00:12:38,804 o segundo eo cuarto elementos da matriz. 243 00:12:38,804 --> 00:12:40,720 E se quere só unha rápida estatística resumida 244 00:12:40,720 --> 00:12:47,529 dun vector como interquartile gama, mediana, máximo, sexa cal sexa, 245 00:12:47,529 --> 00:12:49,820 pode simplemente escribir resumo nome do vector e sacar iso. 246 00:12:49,820 --> 00:12:52,680 Iso non é realmente útil en programación, pero se está xogando 247 00:12:52,680 --> 00:12:55,990 en torno aos conxuntos de datos, é útil. 248 00:12:55,990 --> 00:12:58,650 >> Matrices-- basicamente matrices de dimensións máis elevadas. 249 00:12:58,650 --> 00:13:01,190 Teñen esa sintaxe especial notación. 250 00:13:01,190 --> 00:13:07,620 Matrix cunha matriz que queda cuberto em-- Sentímolo, matriz cos datos, 251 00:13:07,620 --> 00:13:09,780 número de liñas, número de columnas. 252 00:13:09,780 --> 00:13:13,180 Cando ten algúns datos, enche a matriz basicamente vai de arriba abaixo 253 00:13:13,180 --> 00:13:13,380 en primeiro lugar. 254 00:13:13,380 --> 00:13:14,190 Despois á esquerda para a dereita. 255 00:13:14,190 --> 00:13:15,030 Así, así. 256 00:13:15,030 --> 00:13:17,809 257 00:13:17,809 --> 00:13:19,600 E R ten construído en multiplicacións matriz, 258 00:13:19,600 --> 00:13:24,310 descomposición espectral, diagonalization, unha morea de cousas. 259 00:13:24,310 --> 00:13:27,785 Se quere máis dimensional matrices, para 3, 4, 5, 260 00:13:27,785 --> 00:13:29,410 ou o que quere dimensións que pode facelo. 261 00:13:29,410 --> 00:13:34,400 A sintaxe é igual a c matriz din, a continuación, a lista das dimensións. 262 00:13:34,400 --> 00:13:38,620 Entón se queres unha matriz dimensional 4 con dimensións 4, 7, 8, 9, a matriz, 263 00:13:38,620 --> 00:13:45,470 din é igual a c (4,7,8,9). 264 00:13:45,470 --> 00:13:51,180 >> Acceder valores individuais con soportes primeira coma entrada segunda entrada. 265 00:13:51,180 --> 00:13:54,870 Pode obter franxas enteiras de filas ou columnas. 266 00:13:54,870 --> 00:13:59,900 Con esta sintaxe é incompleta só remar número coma ou columna coma 267 00:13:59,900 --> 00:14:00,400 número. 268 00:14:00,400 --> 00:14:02,874 269 00:14:02,874 --> 00:14:04,540 Así, as listas son un tipo de matriz asociada. 270 00:14:04,540 --> 00:14:06,360 Teñen a súa propia sintaxe aquí. 271 00:14:06,360 --> 00:14:08,320 Unha vez máis non freneticamente copiar todo isto para abaixo. 272 00:14:08,320 --> 00:14:11,370 Este é só para que a xente pasando as diapositivas despois 273 00:14:11,370 --> 00:14:13,089 ter todo isto nunha fermosa referencia. 274 00:14:13,089 --> 00:14:16,130 E iso vai facer unha vez moi natural Realmente andar a través dos demos. 275 00:14:16,130 --> 00:14:19,295 276 00:14:19,295 --> 00:14:20,920 Entón lista de matrices basicamente asociados. 277 00:14:20,920 --> 00:14:27,040 Pode acceder os valores con nome da lista, sinal de dólar, clave. 278 00:14:27,040 --> 00:14:31,370 Polo tanto, se a súa lista é nomeada foo, entón podes acceder a ela así. 279 00:14:31,370 --> 00:14:37,032 Pode obter un par clave-valor enteiro pasando o índice de paréntese. 280 00:14:37,032 --> 00:14:39,240 Se ler a partir dun non-existente clave, vai ter nulo. 281 00:14:39,240 --> 00:14:41,150 Non será erro. 282 00:14:41,150 --> 00:14:43,590 Cousa é, R vai facer como moito con nulo, xa que pode. 283 00:14:43,590 --> 00:14:46,580 E iso pode significar que se está non que esperan para nulo fóra 284 00:14:46,580 --> 00:14:51,840 dalgunha lista de lectura, vai ter algúns erros imprevisibles máis abaixo 285 00:14:51,840 --> 00:14:52,620 a liña. 286 00:14:52,620 --> 00:14:54,890 >> Isto aconteceu-me o meu cando traballo de verán que eu estaba usando R 287 00:14:54,890 --> 00:14:58,410 onde eu mudei como un certo lista foi definida nun punto 288 00:14:58,410 --> 00:15:05,410 pero non se alterou trala código que ler valores a partir del. 289 00:15:05,410 --> 00:15:10,190 E entón o que pasou foi que era lendo valores nulos fóra desta lista, 290 00:15:10,190 --> 00:15:13,090 pasando os en funcións, e ser moi confuso 291 00:15:13,090 --> 00:15:16,000 cando cheguei a todo tipo de infinidade aleatorios xurdindo 292 00:15:16,000 --> 00:15:16,790 nesta función. 293 00:15:16,790 --> 00:15:20,730 Porque se aplicar determinadas máximo ou funcións mínimas para null, 294 00:15:20,730 --> 00:15:22,570 pode obter valores infinitos para fóra. 295 00:15:22,570 --> 00:15:26,400 296 00:15:26,400 --> 00:15:29,180 >> Os cadros de datos, son unha subclase de lista. 297 00:15:29,180 --> 00:15:31,170 Cada valor é un vector da mesma lonxitude. 298 00:15:31,170 --> 00:15:34,220 E son usados ​​para a presentación, basicamente, táboas de datos. 299 00:15:34,220 --> 00:15:36,175 Hai esa sintaxe de arranque. 300 00:15:36,175 --> 00:15:38,800 Isto todo vai, unha vez máis, ser moi máis claro cando comeza a demo. 301 00:15:38,800 --> 00:15:42,240 302 00:15:42,240 --> 00:15:44,240 E a cousa agradable sobre cadros de datos é que 303 00:15:44,240 --> 00:15:49,380 pode dar nomes a todas as columnas e nomes para todas as liñas. 304 00:15:49,380 --> 00:15:53,890 E así que fai o acceso Los un pouco máis volto. 305 00:15:53,890 --> 00:15:59,130 Tamén é así que a maioría das funcións que ler datos de follas de cálculo de Excel 306 00:15:59,130 --> 00:16:03,820 ou a partir de arquivos de texto, por exemplo, vai ler nos seus datos. 307 00:16:03,820 --> 00:16:07,555 Van poñelas algún tipo de estrutura de datos. 308 00:16:07,555 --> 00:16:09,680 Así, as funcións no funcións sintaxe é un pouco raro. 309 00:16:09,680 --> 00:16:16,160 De novo, é o nome da función, asignar, esta función contrasinal e, a continuación, 310 00:16:16,160 --> 00:16:17,900 a lista de argumentos. 311 00:16:17,900 --> 00:16:24,080 Polo tanto, hai algunhas cousas agradables sobre como funciona a traballar aquí. 312 00:16:24,080 --> 00:16:28,170 Por unha banda, pode realmente asignar valores por defecto para certos argumentos. 313 00:16:28,170 --> 00:16:32,910 Entón pode dicir R1 equals-- pode dicir foo 314 00:16:32,910 --> 00:16:38,290 é unha función onde R1 é igual a algo por defecto, se o usuario especifica 315 00:16:38,290 --> 00:16:39,090 non hai argumentos. 316 00:16:39,090 --> 00:16:41,932 Se non, é todo o que colocou. 317 00:16:41,932 --> 00:16:44,140 E iso é moi útil porque moitas das nosas funcións 318 00:16:44,140 --> 00:16:47,910 teñen moitas veces decenas ou centos de argumentos. 319 00:16:47,910 --> 00:16:51,210 Por exemplo os de conspirar gráficos ou gráficos de dispersión de plotagem 320 00:16:51,210 --> 00:16:54,430 ter argumentos que controlan todo dende o título e do eixe 321 00:16:54,430 --> 00:16:59,512 etiquetas para a cor das liñas de regresión. 322 00:16:59,512 --> 00:17:01,470 E por iso, se non quere para facer a xente especificar 323 00:17:01,470 --> 00:17:04,050 cada un destes centos de argumentos 324 00:17:04,050 --> 00:17:07,674 controlar cada aspecto da un terreo ou unha regresión ou o que quere, 325 00:17:07,674 --> 00:17:09,299 é bo ter eses valores por defecto. 326 00:17:09,299 --> 00:17:12,700 327 00:17:12,700 --> 00:17:19,146 >> E entón realmente pode escribir como viu aquí. 328 00:17:19,146 --> 00:17:22,869 Ou atopar un mellor exemplo. 329 00:17:22,869 --> 00:17:28,690 Cando chamar funcións que realmente pode chamalos usando os nomes de argumentos. 330 00:17:28,690 --> 00:17:33,919 Entón aquí está un exemplo de o constructor matriz. 331 00:17:33,919 --> 00:17:34,960 Leva tres argumentos. 332 00:17:34,960 --> 00:17:36,760 Normalmente ten datos, que é un vector. 333 00:17:36,760 --> 00:17:38,920 Ten N liña, que é o número de liñas. 334 00:17:38,920 --> 00:17:41,160 Ten N cols-- número de columnas. 335 00:17:41,160 --> 00:17:43,920 A cousa é se escribe N é igual a liña que quere 336 00:17:43,920 --> 00:17:46,520 e N é igual a calquera que sexa cando col está chamando esa función, 337 00:17:46,520 --> 00:17:47,770 realmente pode desfacer a eles. 338 00:17:47,770 --> 00:17:51,590 Entón pode pór N col primeira fileira e N segunda e vai facer ningunha diferenza. 339 00:17:51,590 --> 00:17:54,660 Entón esta é unha característica pouco agradable. 340 00:17:54,660 --> 00:17:56,260 >> Fixo importación e exportación. 341 00:17:56,260 --> 00:18:00,010 Isto pódese facer, basicamente. 342 00:18:00,010 --> 00:18:03,816 Hai tamén instalacións para escribir fóra arbitraria R obxectos nun ficheiro binario 343 00:18:03,816 --> 00:18:05,190 e, a continuación, le-los de volta máis tarde. 344 00:18:05,190 --> 00:18:08,030 Que é útil se está facendo unha gran sesión de R interactivo 345 00:18:08,030 --> 00:18:12,850 e precisa para salvar cousas moi rapidamente. 346 00:18:12,850 --> 00:18:16,460 Por defecto R ten un directorio de traballo que os arquivos son escritos para fóra 347 00:18:16,460 --> 00:18:19,410 e ler de novo a partir. 348 00:18:19,410 --> 00:18:22,350 Podes ver que con getwg, cambia-lo con setdw. 349 00:18:22,350 --> 00:18:25,630 Nada especialmente interesante aquí 350 00:18:25,630 --> 00:18:28,270 >> Entón, agora as estatísticas reais stuff-- regresión multilinear. 351 00:18:28,270 --> 00:18:30,960 352 00:18:30,960 --> 00:18:34,910 Así, a sintaxe usual é un pouco complicado. 353 00:18:34,910 --> 00:18:37,260 O modelo é un gran obxecto basicamente. 354 00:18:37,260 --> 00:18:39,910 El se lle atribúe a lm, que é unha chamada de función. 355 00:18:39,910 --> 00:18:43,840 O primeiro elemento, a y- x1 til máis o que. 356 00:18:43,840 --> 00:18:46,574 357 00:18:46,574 --> 00:18:47,990 Meu sintaxe aquí é un pouco confuso. 358 00:18:47,990 --> 00:18:49,490 Estou moi triste, iso é a forma estándar 359 00:18:49,490 --> 00:18:50,990 que os libros de ciencia da computación facelo. 360 00:18:50,990 --> 00:18:54,890 Pero é un pouco raro. 361 00:18:54,890 --> 00:18:58,200 >> Entón, basicamente, é lm parénteses, primeiro elemento 362 00:18:58,200 --> 00:19:06,730 é variable-- Sentímolo, dependente x1 til variable máis x2 máis 363 00:19:06,730 --> 00:19:10,910 porén moitos independente variables que ten. 364 00:19:10,910 --> 00:19:14,240 E, a continuación, estes poden ser tanto vectores, todo a mesma lonxitude. 365 00:19:14,240 --> 00:19:16,220 Ou poden ser columna cabeceiras nun cadro de datos 366 00:19:16,220 --> 00:19:18,553 que acaba de indicar o segundo cadro datos argumento. 367 00:19:18,553 --> 00:19:23,270 368 00:19:23,270 --> 00:19:26,380 >> Tamén pode especificar unha fórmula máis complexa 369 00:19:26,380 --> 00:19:31,990 así que non ten que linearmente retroceder unha variable dependente un, 370 00:19:31,990 --> 00:19:34,440 ou un vector nun vector preexistente. 371 00:19:34,440 --> 00:19:38,070 Pode facer, por exemplo, un compoñente vector y ao cadrado máis 1 372 00:19:38,070 --> 00:19:42,100 e retroceder que contra o rexistro dalgún outro vector. 373 00:19:42,100 --> 00:19:45,200 Pode imprimir os resumos da modelo con este comando chamada 374 00:19:45,200 --> 00:19:48,607 summary-- só resumo parens modelo. 375 00:19:48,607 --> 00:19:50,190 Novo outra cousa que eu debería aclarar. 376 00:19:50,190 --> 00:19:55,407 377 00:19:55,407 --> 00:19:58,615 Outra cousa que vai corrixido cando os diapositivas subir en internet. 378 00:19:58,615 --> 00:20:01,127 379 00:20:01,127 --> 00:20:03,210 Se quere só para calcular unha correlación simple 380 00:20:03,210 --> 00:20:09,170 pode usar vector correlación 1 vector 2 función central. 381 00:20:09,170 --> 00:20:11,856 Método é, por defecto Correlacións de Pearson. 382 00:20:11,856 --> 00:20:13,480 Estes son os patróns que podes facer. 383 00:20:13,480 --> 00:20:15,990 Hai tamén Spearman e Correlacións Kendell 384 00:20:15,990 --> 00:20:19,530 que son algúns variedade de correlación orde de clasificación. 385 00:20:19,530 --> 00:20:23,600 Ben, eles non calculan produto momentos entre os propios vectores, 386 00:20:23,600 --> 00:20:28,511 pero de ordes de clasificación do vector. 387 00:20:28,511 --> 00:20:29,510 Vou explicar iso máis tarde. 388 00:20:29,510 --> 00:20:30,120 >> Audiencia: Pregunta rápida 389 00:20:30,120 --> 00:20:30,360 >> CONNER HARRIS: Claro. 390 00:20:30,360 --> 00:20:33,151 >> Audiencia: Entón, cando está calculando para as correlacións simple facer 391 00:20:33,151 --> 00:20:37,655 asumir que hai unha estatística significado para a correlación? 392 00:20:37,655 --> 00:20:39,030 CONNER HARRIS: Non ten que. 393 00:20:39,030 --> 00:20:41,840 394 00:20:41,840 --> 00:20:43,960 Unha película é basicamente só unha máquina. 395 00:20:43,960 --> 00:20:47,690 Terá en dúas cousas e só pode cuspir 396 00:20:47,690 --> 00:20:49,770 coeficientes para a mellor liña de axuste. 397 00:20:49,770 --> 00:20:52,310 Tamén relata estándar erros neses coeficientes. 398 00:20:52,310 --> 00:20:55,865 E só pode dicir, como é o secuestro estatisticamente significativa 399 00:20:55,865 --> 00:20:56,740 ou a diferenza entre 0. 400 00:20:56,740 --> 00:20:59,400 É a inclinación da mellor fit liña estatisticamente 401 00:20:59,400 --> 00:21:01,510 distinto de cero, etcétera. 402 00:21:01,510 --> 00:21:06,260 Por iso, asume nada, creo é mellor resposta para a súa pregunta. 403 00:21:06,260 --> 00:21:07,410 Aceptar. 404 00:21:07,410 --> 00:21:14,650 >> Plotting-- así a razón principal que debería usar R, como regresión múltiple. 405 00:21:14,650 --> 00:21:17,320 Basicamente todas as linguas Ten algunha facilidade para que. 406 00:21:17,320 --> 00:21:21,365 E honestamente sintaxe de R para regresión é un pouco misterioso. 407 00:21:21,365 --> 00:21:22,990 Pero plotagem é onde realmente brilla. 408 00:21:22,990 --> 00:21:28,090 >> A función é laborioso enredo e leva dous vectores, xe y. 409 00:21:28,090 --> 00:21:33,010 E, a continuación, as elipses representa un moi gran número de argumentos opcionais que 410 00:21:33,010 --> 00:21:39,190 controlar todo dende títulos de cores de varias liñas ou varios puntos, 411 00:21:39,190 --> 00:21:40,200 para o tipo de trama. 412 00:21:40,200 --> 00:21:42,250 Pode que de dispersión parcelas ou lotes de liña. 413 00:21:42,250 --> 00:21:47,900 414 00:21:47,900 --> 00:21:49,710 >> [Inaudível] 2 vectores da mesma lonxitude. 415 00:21:49,710 --> 00:21:53,780 Pode preceder esta con achegar cadro de datos no seu guión. 416 00:21:53,780 --> 00:22:01,220 E iso permitirá que acaba de usar columna cabeceiras en vez de vectores separados. 417 00:22:01,220 --> 00:22:05,410 Podes engadir mellores liñas de axuste e locais curvas de regresión para a súa gráfica. 418 00:22:05,410 --> 00:22:09,390 >> Estes comandos listada aquí, liña e liñas ab, 419 00:22:09,390 --> 00:22:11,640 Por defecto estes chegar escrito en fiestras emerxentes 420 00:22:11,640 --> 00:22:15,560 porque asume que está a usar R interactivamente. 421 00:22:15,560 --> 00:22:17,310 Se non é posible escribir dous arquivos que 422 00:22:17,310 --> 00:22:21,600 realmente están en calquera formato que desexa. 423 00:22:21,600 --> 00:22:25,410 Sentímolo, eu teño un erro de dixitación Eu só entender. 424 00:22:25,410 --> 00:22:30,887 425 00:22:30,887 --> 00:22:32,720 Se desexa abrir outro dispositivo gráfico 426 00:22:32,720 --> 00:22:39,200 pode usar esta función chamada ou PNG JPEG ou unha morea de outros formatos de imaxe. 427 00:22:39,200 --> 00:22:42,319 E pode escribir gráficos para calquera nome de ficheiro que se especifica. 428 00:22:42,319 --> 00:22:45,110 Para cancelar o que tes que use-- Non escribín iso no slide-- 429 00:22:45,110 --> 00:22:49,650 pero hai unha función chamada dev dot off que leva sen argumentos. 430 00:22:49,650 --> 00:22:51,517 >> Despois, hai instalacións para plotagem 3D 431 00:22:51,517 --> 00:22:53,350 e para contorno trazando se quere facer 432 00:22:53,350 --> 00:22:55,700 gráficos de dúas variables independentes. 433 00:22:55,700 --> 00:22:57,150 Non vou entrar neses agora. 434 00:22:57,150 --> 00:22:59,130 >> Hai tamén algúns son instalacións para animación 435 00:22:59,130 --> 00:23:01,300 aqueles son xeralmente mantidos por terceiros. 436 00:23:01,300 --> 00:23:06,330 Fixen animacións con gráficos de P, pero eu non usei eses terceiros 437 00:23:06,330 --> 00:23:06,940 bibliotecas. 438 00:23:06,940 --> 00:23:09,929 Entón, realmente non podo afirma de como son bos. 439 00:23:09,929 --> 00:23:12,220 O que eu recomendo se quere para facer animacións usando R 440 00:23:12,220 --> 00:23:16,480 é que pode escribir para fóra todos os cadros para as animacións 441 00:23:16,480 --> 00:23:18,470 e entón pode usar un program-- terceiro partido 442 00:23:18,470 --> 00:23:23,630 os típicos son chamados FFmpeg ou ImageMagick-- para costura 443 00:23:23,630 --> 00:23:26,540 todos os seus cadros nunha animación. 444 00:23:26,540 --> 00:23:28,380 >> Así, o tempo para demostración. 445 00:23:28,380 --> 00:23:31,030 446 00:23:31,030 --> 00:23:37,189 Entón, se está a usar calquera Unix como sistema que é Linux BSD pero quen usa BSD. 447 00:23:37,189 --> 00:23:39,730 X abrir unha fiestra de terminal e escriba R na liña de comandos. 448 00:23:39,730 --> 00:23:42,820 Se tes R estudo ou semellantes, que tamén funciona. 449 00:23:42,820 --> 00:23:46,270 Para usuarios de Windows, ten que ser capaz de atopar R no seu menú Inicio. 450 00:23:46,270 --> 00:23:50,390 Debe ser chamado algo como R x64 3 puntos que sexa. 451 00:23:50,390 --> 00:23:53,110 Abre que alí enriba. 452 00:23:53,110 --> 00:23:58,850 >> Entón, agora déixeme só abra unha xanela de terminal. 453 00:23:58,850 --> 00:24:02,562 Todo ben, busca. 454 00:24:02,562 --> 00:24:03,520 Audiencia: -Space Command 455 00:24:03,520 --> 00:24:06,675 CONNER HARRIS: Command-Espazo, grazas. 456 00:24:06,675 --> 00:24:10,030 Eu normalmente non usan Macs. 457 00:24:10,030 --> 00:24:13,310 Terminal, amosar nova ventá. 458 00:24:13,310 --> 00:24:18,120 New window é definicións básico, R. Polo tanto, ten que obter 459 00:24:18,120 --> 00:24:22,230 unha mensaxe de benvida, algo así. 460 00:24:22,230 --> 00:24:31,060 >> Entón, eu estou usando R interactivamente. 461 00:24:31,060 --> 00:24:32,719 Tamén pode escribir guións de R curso. 462 00:24:32,719 --> 00:24:34,510 Basicamente scripts son executados exactamente da mesma maneira en que 463 00:24:34,510 --> 00:24:40,250 se está sentado fronte ao ordenador escribindo cada liña dunha de cada vez. 464 00:24:40,250 --> 00:24:42,660 Entón, imos comezar por facer un vector. 465 00:24:42,660 --> 00:24:46,230 Unha frecha 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, con certeza. 468 00:24:50,050 --> 00:24:51,630 Podo facer o tamaño do tipo de letra máis grande. 469 00:24:51,630 --> 00:24:53,030 >> Audiencia: Command-Plus 470 00:24:53,030 --> 00:24:53,650 >> CONNER HARRIS: Command-Plus. 471 00:24:53,650 --> 00:24:54,191 Command-Plus. 472 00:24:54,191 --> 00:24:57,610 473 00:24:57,610 --> 00:25:00,370 Todo ben, que tal? 474 00:25:00,370 --> 00:25:00,870 Bo? 475 00:25:00,870 --> 00:25:01,551 Aceptar. 476 00:25:01,551 --> 00:25:03,300 Entón, imos comezar por declarando a lista vector. 477 00:25:03,300 --> 00:25:08,710 Facer, unha frecha, C 1,2,4. 478 00:25:08,710 --> 00:25:11,181 Vemos a. 479 00:25:11,181 --> 00:25:12,680 Non te preocupes co soporte de alí. 480 00:25:12,680 --> 00:25:18,590 Os soportes son por iso, se imprimir matrices moi longas, podemos onde está. 481 00:25:18,590 --> 00:25:26,987 Un exemplo sería se eu só quero intervalo 2-200. 482 00:25:26,987 --> 00:25:28,820 Se eu impreso moi longo matriz, os soportes 483 00:25:28,820 --> 00:25:31,060 son só para que eu poida manter o control de cal índice 484 00:25:31,060 --> 00:25:33,250 en que estamos Se eu estou buscando a través deste visualmente. 485 00:25:33,250 --> 00:25:36,570 486 00:25:36,570 --> 00:25:38,280 Entón, de calquera forma, temos un. 487 00:25:38,280 --> 00:25:43,326 >> Entón eu dixen antes que as matrices de interacción moi ben con, por exemplo, 488 00:25:43,326 --> 00:25:44,450 operacións unários como este. 489 00:25:44,450 --> 00:25:46,500 Entón, o que pensas que eu vou obter si escribir un plus 1? 490 00:25:46,500 --> 00:25:49,630 491 00:25:49,630 --> 00:25:51,140 Yep. 492 00:25:51,140 --> 00:25:54,250 Seguro, agora eu vou facer esa matriz diferente. 493 00:25:54,250 --> 00:26:01,650 Digamos b c 20,40, 80. 494 00:26:01,650 --> 00:26:03,400 Entón, o que pensas este comando pode facer? 495 00:26:03,400 --> 00:26:09,962 496 00:26:09,962 --> 00:26:10,670 Engadir os elementos. 497 00:26:10,670 --> 00:26:14,950 E entón basicamente iso é o que fai. 498 00:26:14,950 --> 00:26:16,740 Entón iso é moi cómodo. 499 00:26:16,740 --> 00:26:23,800 Entón, eu como sobre fago iso. c é, digamos, 6 veces 1-10. 500 00:26:23,800 --> 00:26:26,789 501 00:26:26,789 --> 00:26:28,830 Entón o que quero ver contido, que pensas? 502 00:26:28,830 --> 00:26:37,110 503 00:26:37,110 --> 00:26:38,110 Así, todos múltiplos de seis. 504 00:26:38,110 --> 00:26:42,170 Agora, o que pensas Qué acontece se eu fago isto? 505 00:26:42,170 --> 00:26:48,090 Eu vou facelo un pouco máis claro, c, c. 506 00:26:48,090 --> 00:26:50,365 Entón o que ocorre, creo que, se fago iso? 507 00:26:50,365 --> 00:26:51,488 unha vantaxe C. 508 00:26:51,488 --> 00:26:55,550 509 00:26:55,550 --> 00:26:56,050 [Inaudível] 510 00:26:56,050 --> 00:26:58,552 511 00:26:58,552 --> 00:27:02,350 >> Audiencia: Calquera erro ou que só engade os primeiros tres elementos. 512 00:27:02,350 --> 00:27:04,510 >> CONNER HARRIS: Non é ben así. 513 00:27:04,510 --> 00:27:05,522 Isto é o que temos. 514 00:27:05,522 --> 00:27:08,910 O que pasa é un máis curto array, un, ten un ciclo. 515 00:27:08,910 --> 00:27:13,990 Entón, nós temos 124, 124, 124. 516 00:27:13,990 --> 00:27:15,710 Si. 517 00:27:15,710 --> 00:27:18,940 E, basicamente, pode ver este comportamento antes, un plus 1, 518 00:27:18,940 --> 00:27:22,190 como unha subclase desta conduta, onde a matriz máis curta é só o número 519 00:27:22,190 --> 00:27:25,410 1, que é unha matriz de un elemento. 520 00:27:25,410 --> 00:27:27,740 Só estar dicindo vector todo tempo, no canto da matriz, 521 00:27:27,740 --> 00:27:30,290 porque iso é o que a r documentación normalmente fai. 522 00:27:30,290 --> 00:27:33,070 É un costume arraigado c. 523 00:27:33,070 --> 00:27:37,590 >> OK, e entón agora temos esa matriz. 524 00:27:37,590 --> 00:27:38,830 Polo tanto, temos esa matriz, c. 525 00:27:38,830 --> 00:27:41,380 Podemos obter resumo estatísticas de c, resumo c. 526 00:27:41,380 --> 00:27:46,920 527 00:27:46,920 --> 00:27:48,280 E iso é bo. 528 00:27:48,280 --> 00:27:51,070 529 00:27:51,070 --> 00:27:52,670 Entón agora imos facer algunhas cousas da matriz. 530 00:27:52,670 --> 00:27:56,160 Imos dicir que é unha matriz m. 531 00:27:56,160 --> 00:27:57,780 Imos facelo un tres por tres un. 532 00:27:57,780 --> 00:28:01,630 Así nRows é igual a 3, e ncols é igual a 3. 533 00:28:01,630 --> 00:28:04,190 534 00:28:04,190 --> 00:28:10,710 E para os datos imos fazer-- entón o que pensas que iso vai facer? 535 00:28:10,710 --> 00:28:15,310 536 00:28:15,310 --> 00:28:16,580 >> Correcto, é o seguinte. 537 00:28:16,580 --> 00:28:17,970 É nrow e nColumn. 538 00:28:17,970 --> 00:28:22,164 539 00:28:22,164 --> 00:28:24,580 Entón o que eu fixen é que eu teño declarou unha matriz tres por tres 540 00:28:24,580 --> 00:28:26,950 e eu pase nunha matriz de nove elementos. 541 00:28:26,950 --> 00:28:30,530 Así, o logaritmo de todo o elementos dun a nove. 542 00:28:30,530 --> 00:28:33,400 543 00:28:33,400 --> 00:28:37,285 E todos eses valores cubrir o array-- arrepentido? 544 00:28:37,285 --> 00:28:38,660 Audiencia: Estas son base 10 rexistros? 545 00:28:38,660 --> 00:28:41,284 CONNER HARRIS: Non, é rexistro logaritmos naturais, de xeito base e. 546 00:28:41,284 --> 00:28:44,886 547 00:28:44,886 --> 00:28:47,010 Si, se quería de base 10 log, eu creo que ten 548 00:28:47,010 --> 00:28:51,620 para rexistrar o que quere, dividido por rexistro 10. 549 00:28:51,620 --> 00:28:56,750 E así os datos do [inaudível] só énchese a matriz, para arriba para abaixo, 550 00:28:56,750 --> 00:28:59,490 despois á esquerda para a dereita. 551 00:28:59,490 --> 00:29:06,890 E se quería facer algunha outra array, digamos que n é a matriz. 552 00:29:06,890 --> 00:29:10,317 Imos facer, eu non sei, 2-13. 553 00:29:10,317 --> 00:29:11,900 Ou eu vou facer algo máis interesante. 554 00:29:11,900 --> 00:29:13,770 Vou facer 2-4. 555 00:29:13,770 --> 00:29:15,780 nrow é igual a, digamos, tres. 556 00:29:15,780 --> 00:29:18,992 Ncol é igual a 4. 557 00:29:18,992 --> 00:29:20,360 n. 558 00:29:20,360 --> 00:29:22,090 Entón, nós temos iso. 559 00:29:22,090 --> 00:29:26,130 >> E agora, se queremos multiplicar estes, fariamos veces n cento por cento, 560 00:29:26,130 --> 00:29:27,680 porque iso n. 561 00:29:27,680 --> 00:29:30,234 562 00:29:30,234 --> 00:29:31,400 E nós temos produtos de matriz. 563 00:29:31,400 --> 00:29:33,970 564 00:29:33,970 --> 00:29:37,810 Por que forma, viu como cando eu declarei n, a 2-4 565 00:29:37,810 --> 00:29:43,570 vector foi pedaleando ata que encheu todos n? 566 00:29:43,570 --> 00:29:45,710 Se quería tomar descomposición de valores propios, 567 00:29:45,710 --> 00:29:46,960 iso é algo que podemos facer moi facilmente. 568 00:29:46,960 --> 00:29:47,709 Podemos facer eigen n. 569 00:29:47,709 --> 00:29:52,290 570 00:29:52,290 --> 00:29:54,600 E así, este é o noso primeiro atopou con unha lista. 571 00:29:54,600 --> 00:29:57,000 >> Entón eigen n é unha lista con dúas chaves. 572 00:29:57,000 --> 00:29:58,430 Valores, o que é esa matriz aquí. 573 00:29:58,430 --> 00:30:01,030 E vectores, que é esa matriz aquí. 574 00:30:01,030 --> 00:30:08,240 Entón, se quería extraer, digamos, esta terceira columna 575 00:30:08,240 --> 00:30:13,080 desde a matriz de vectores propios, porque os vectores propios son vectores columna. 576 00:30:13,080 --> 00:30:24,400 Entón o que podemos facer eigen vec sinal n dólar vectores, coma 3, do [inaudível]. 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 É que, como podería esperar. 580 00:30:34,100 --> 00:30:39,210 >> Entón diga n veces veces por cento VEC. 581 00:30:39,210 --> 00:30:42,610 582 00:30:42,610 --> 00:30:48,320 Así, o resultado aquí certamente parece se tomássemos terceiro valor propio aquí, 583 00:30:48,320 --> 00:30:50,390 que corresponde o terceiro vector propio. 584 00:30:50,390 --> 00:30:53,190 El só multiplicado todo este eigenvector, -componente sabio, 585 00:30:53,190 --> 00:30:53,990 polo valor propio. 586 00:30:53,990 --> 00:30:57,760 E iso é o que era de esperar, porque iso é o que son valores propios. 587 00:30:57,760 --> 00:31:00,890 Ten alguén aquí non tomado álxebra lineal? 588 00:31:00,890 --> 00:31:02,530 Unha parella de persoas, Aceptar. 589 00:31:02,530 --> 00:31:04,030 Pode conectar o seu cerebro fóra por un tempo. 590 00:31:04,030 --> 00:31:07,490 591 00:31:07,490 --> 00:31:20,720 E, de feito, se tomamos eigen n valores sinal de dólar 3 veces VEC, 592 00:31:20,720 --> 00:31:21,810 ben obter o mesmo. 593 00:31:21,810 --> 00:31:24,726 É formato de forma diferente como unha liña vector, en vez de un vector de columna, 594 00:31:24,726 --> 00:31:25,640 pero é gran cousa. 595 00:31:25,640 --> 00:31:29,430 596 00:31:29,430 --> 00:31:35,170 E así estes son basicamente o bo cousas que podemos facer con matrices, 597 00:31:35,170 --> 00:31:36,489 listas demostrados. 598 00:31:36,489 --> 00:31:39,030 I debe demostrar o bo cousas sobre funcións tamén. 599 00:31:39,030 --> 00:31:41,750 >> Entón, imos dizer-- [inaudível] función, chamada de let 600 00:31:41,750 --> 00:31:51,960 que func contra función n n ao cadrado en realidade, iso non é realmente o mellor. 601 00:31:51,960 --> 00:31:55,632 a, b, un cadrado máis b. 602 00:31:55,632 --> 00:31:58,547 603 00:31:58,547 --> 00:32:00,380 Entón, unha cousa sobre funcións, de novo, é que 604 00:32:00,380 --> 00:32:01,963 Non precisa de instrucións de retorno explícitos. 605 00:32:01,963 --> 00:32:04,250 Así, pode só-- o última declaración avaliado 606 00:32:04,250 --> 00:32:07,502 será devolto a declaración, ou o valor devolto. 607 00:32:07,502 --> 00:32:10,460 Polo tanto, neste caso, estamos avaliando única unha declaración, un cadrado máis b. 608 00:32:10,460 --> 00:32:12,043 Ese será o valor de retorno defecto. 609 00:32:12,043 --> 00:32:14,530 Non custa nada para poñer en devolver valores explicitamente, 610 00:32:14,530 --> 00:32:16,880 especialmente se está lidando cun función da lóxica moi complicado 611 00:32:16,880 --> 00:32:17,380 fluír. 612 00:32:17,380 --> 00:32:18,450 Pero non precisa deles. 613 00:32:18,450 --> 00:32:24,890 Entón, agora podemos facer func 5, 1, e iso é basicamente o que esperar. 614 00:32:24,890 --> 00:32:29,146 615 00:32:29,146 --> 00:32:31,270 Outra cousa que podemos facer, podemos realmente facer func b 616 00:32:31,270 --> 00:32:33,260 é igual a 1, a é igual a 5. 617 00:32:33,260 --> 00:32:36,870 618 00:32:36,870 --> 00:32:40,770 Entón, se nós especificar cal o número aquí, que argumento ao que argumento 619 00:32:40,770 --> 00:32:44,680 na función, podemos virar ao redor estes valores onde queiramos. 620 00:32:44,680 --> 00:32:48,405 >> Audiencia: Existe unha razón para gravala-lo para fóra co b 621 00:32:48,405 --> 00:32:52,404 é igual en vez de só usar os números ea vírgula? 622 00:32:52,404 --> 00:32:54,820 CONNER HARRIS: Si, normalmente facelo se ten funcións 623 00:32:54,820 --> 00:32:58,540 con unha morea de argumentos. 624 00:32:58,540 --> 00:33:00,690 Isto pode adoitan ser como bandeiras que só 625 00:33:00,690 --> 00:33:03,130 quere que o raras ocasións. 626 00:33:03,130 --> 00:33:06,740 E deste xeito pode only-- vostede pode referirse aos argumentos específicos 627 00:33:06,740 --> 00:33:09,110 que quere empregar valores non estándar para, 628 00:33:09,110 --> 00:33:14,470 e non ten que escribir un banda de bandeiras é igual a false despois deles. 629 00:33:14,470 --> 00:33:19,710 Ou podo escribir isto de novo con un valor estándar como b é igual a 2. 630 00:33:19,710 --> 00:33:26,289 E entón eu podería facer f func, Vou facer 4, 1 polo de agora. 631 00:33:26,289 --> 00:33:28,580 E 17, que é 4 cadrado máis 1, como se podería esperar. 632 00:33:28,580 --> 00:33:34,290 >> Pero eu tamén podería só chamar esta con func 4, 633 00:33:34,290 --> 00:33:36,970 e eu vou estar 18, porque Non especificar b. 634 00:33:36,970 --> 00:33:38,550 Entón b recibe o valor por defecto de 2. 635 00:33:38,550 --> 00:33:41,700 636 00:33:41,700 --> 00:33:47,200 >> OK, entón agora se está a continuación, xunto co demo, 637 00:33:47,200 --> 00:33:51,010 escriba esta liña no seu comando solicitar e ver o que xorde. 638 00:33:51,010 --> 00:33:52,090 En realidade, non fagas iso. 639 00:33:52,090 --> 00:33:52,590 Escribe iso. 640 00:33:52,590 --> 00:33:57,780 641 00:33:57,780 --> 00:34:01,000 Ten que obter algo así. 642 00:34:01,000 --> 00:34:04,780 Entón mtcars é un construído en datos definir a esta demostración 643 00:34:04,780 --> 00:34:13,550 fins que vén com-- que vén por defecto coa súa distribución r. 644 00:34:13,550 --> 00:34:19,211 Esta é unha compilación de estatísticas de unha edición da revista Motor Trend 1974 645 00:34:19,211 --> 00:34:20,710 sobre unha serie de diferentes modelos de coches. 646 00:34:20,710 --> 00:34:28,270 >> Polo tanto, hai millas por gala, cylinders-- Eu esquezo o que dispo é-- cabalos de potencia. 647 00:34:28,270 --> 00:34:31,610 648 00:34:31,610 --> 00:34:32,420 Probablemente. 649 00:34:32,420 --> 00:34:36,920 Se acaba de coches Google MT, a continuación, un dos primeiros resultados 650 00:34:36,920 --> 00:34:38,730 será a partir da documentación oficial r 651 00:34:38,730 --> 00:34:41,080 e vai explicar todos estes campos de datos. 652 00:34:41,080 --> 00:34:47,020 Polo tanto, o peso é-- peso é peso do coche en toneladas. 653 00:34:47,020 --> 00:34:48,880 Q sec é o tempo de cuarto de milla. 654 00:34:48,880 --> 00:34:52,409 655 00:34:52,409 --> 00:34:55,850 Entón, agora podemos facer algunhas cousas divertido sobre coches MT é un campo de datos. 656 00:34:55,850 --> 00:35:01,640 >> Así, podemos facer cousas como nomes de liña, coches mt. 657 00:35:01,640 --> 00:35:05,490 E esta é unha lista de todas as liñas en o conxunto de datos que son nomes de coches. 658 00:35:05,490 --> 00:35:10,780 Podemos facer COLNAMES, coches mt esta. 659 00:35:10,780 --> 00:35:15,500 Se fai coches MT, índice de sub-numérica, como 2. 660 00:35:15,500 --> 00:35:18,177 estivemos coa segunda columna de este, que sería cilindros. 661 00:35:18,177 --> 00:35:19,370 >> Audiencia: O que fixo? 662 00:35:19,370 --> 00:35:21,570 >> CONNER HARRIS: Eu escriba mt coches, soportes e, 663 00:35:21,570 --> 00:35:24,180 o que me deu o segundo columna de coches mt. 664 00:35:24,180 --> 00:35:34,501 665 00:35:34,501 --> 00:35:38,110 Ou, se queremos unha liña, podo escribir mtcars coma 2, por exemplo. 666 00:35:38,110 --> 00:35:41,850 667 00:35:41,850 --> 00:35:46,390 Outro round 2 coma, así. 668 00:35:46,390 --> 00:35:48,880 E iso vale na súa liña. 669 00:35:48,880 --> 00:35:54,680 Este aquí só dálle unha columna, pero como un vector de columna. 670 00:35:54,680 --> 00:36:04,634 671 00:36:04,634 --> 00:36:06,425 Eu só entender agora esqueceuse de demostrar 672 00:36:06,425 --> 00:36:09,150 algunhas cousas legais sobre vectores que se pode facer con índices. 673 00:36:09,150 --> 00:36:10,480 Entón deixe-me facelo agora. 674 00:36:10,480 --> 00:36:17,130 Entón imos facer c poñendo gets-- isto pause-- 2 veces 1 a 10. 675 00:36:17,130 --> 00:36:21,360 Así, c é só será o vector de 2 a 20. 676 00:36:21,360 --> 00:36:24,640 Podo tomar elementos como este, c2. 677 00:36:24,640 --> 00:36:30,942 I pode pasar nun vector así, C-- deixarme 678 00:36:30,942 --> 00:36:34,470 usar o nome diferente do que c, como vec c. 679 00:36:34,470 --> 00:36:37,591 680 00:36:37,591 --> 00:36:39,340 Basicamente, eu estou facendo iso para que non quede 681 00:36:39,340 --> 00:36:45,010 confundido como un C entre función da construción do vector, 682 00:36:45,010 --> 00:36:48,800 e, a continuación, c como un nome de variable. 683 00:36:48,800 --> 00:36:53,120 Soportes vec C 4, 5, 7. 684 00:36:53,120 --> 00:36:56,540 Isto vai me sacar do cuarto, quinto, e sete elementos da matriz. 685 00:36:56,540 --> 00:37:01,740 Podo facer VEC, poñer nun negativo índice, como negativa 4. 686 00:37:01,740 --> 00:37:06,500 Isto vai me aproveitar iso con o cuarto elemento eliminado. 687 00:37:06,500 --> 00:37:10,140 Entón, se eu quería facer franxas, Podo facer vec 2 a 6. 688 00:37:10,140 --> 00:37:15,480 2 colonos 6 é só un vector, que é 2, 3, 4, 5, 6. 689 00:37:15,480 --> 00:37:18,230 Cospe iso. 690 00:37:18,230 --> 00:37:20,770 >> Entón, de calquera forma, de volta aos coches mt. 691 00:37:20,770 --> 00:37:26,650 692 00:37:26,650 --> 00:37:28,450 Entón imos facer algunhas regresións. 693 00:37:28,450 --> 00:37:34,240 Digamos modelo gets-- imos linearmente regress-- Non sei. 694 00:37:34,240 --> 00:37:41,780 Primeiro imos facer achegar mtcars, por suposto. 695 00:37:41,780 --> 00:37:44,870 696 00:37:44,870 --> 00:38:00,010 Entón, [inaudível] modelo lm, imos retroceder millas por gala sobre o peso til. 697 00:38:00,010 --> 00:38:03,300 E entón cadro de datos é mtcars. 698 00:38:03,300 --> 00:38:06,830 Entón modelo de resumo. 699 00:38:06,830 --> 00:38:12,900 700 00:38:12,900 --> 00:38:15,595 >> OK, entón iso parece un pouco complicado. 701 00:38:15,595 --> 00:38:19,380 Pero, basicamente, a ver como se nós tentar expresar millas por gala 702 00:38:19,380 --> 00:38:23,970 como unha función lineal de peso, entón temos esta liña aquí, 703 00:38:23,970 --> 00:38:28,730 que intercepta a 37,28. 704 00:38:28,730 --> 00:38:33,830 37.28 serían as millas teóricas por gala dun coche que pesa cero. 705 00:38:33,830 --> 00:38:41,210 E, a continuación, para cada tonelada adicional, bater uns cinco millas por gala 706 00:38:41,210 --> 00:38:42,440 fóra diso. 707 00:38:42,440 --> 00:38:45,120 Ambos estes coeficientes vostede pode ver, hai erros estándar. 708 00:38:45,120 --> 00:38:47,870 E son moi estatisticamente significativa. 709 00:38:47,870 --> 00:38:55,740 >> Así, podemos estar moi seguro de 1 e 10 a 10 para negativo. 710 00:38:55,740 --> 00:38:59,510 Así 1 veces algo para o negativo 10, que se fai un coche máis pesado, 711 00:38:59,510 --> 00:39:01,440 terá peores millas por gala. 712 00:39:01,440 --> 00:39:04,940 713 00:39:04,940 --> 00:39:07,250 Ou podemos probar algún outro modelo. 714 00:39:07,250 --> 00:39:09,230 Como en vez de regredindo iso en peso, 715 00:39:09,230 --> 00:39:12,600 imos retroceder-lo no rexistro de peso, porque quizais o peso eficaz 716 00:39:12,600 --> 00:39:15,690 na milhagem non é dalgunha forma lineal. 717 00:39:15,690 --> 00:39:18,540 >> Isto nos deu unha r ao cadrado de 0,7528. 718 00:39:18,540 --> 00:39:19,610 Entón, imos tentar iso. 719 00:39:19,610 --> 00:39:21,485 Esta vez imos facer un variable diferente, tamén. 720 00:39:21,485 --> 00:39:22,500 Model2. 721 00:39:22,500 --> 00:39:24,800 Así resumo, model2. 722 00:39:24,800 --> 00:39:28,200 723 00:39:28,200 --> 00:39:31,390 Todo ben, entón, de novo, temos a nosa mellor liña de axuste aquí. 724 00:39:31,390 --> 00:39:36,160 E este tempo-- este está dicindo: basicamente, que cada vez que 725 00:39:36,160 --> 00:39:38,090 aumentar o peso un coche por un factor de e 726 00:39:38,090 --> 00:39:40,580 perde iso moitas millas por gala. 727 00:39:40,580 --> 00:39:43,210 728 00:39:43,210 --> 00:39:50,326 >> E por iso esta vez o noso patrón residual erro ele-- que non importa, realmente. 729 00:39:50,326 --> 00:39:53,540 O erro estándar residual é basicamente, só o erro estándar 730 00:39:53,540 --> 00:39:57,760 que deixou tras tomar a liña de tendencia de distancia. 731 00:39:57,760 --> 00:40:02,805 E o noso r ao cadrado aquí é de 0,81, que é un pouco mellor que o 732 00:40:02,805 --> 00:40:07,640 que tiñamos antes, 0,52. 733 00:40:07,640 --> 00:40:09,750 >> E agora imos engadir un termo a esta regresión. 734 00:40:09,750 --> 00:40:13,020 Entón, imos retroceder millas por gala tanto no rexistro dos pesos 735 00:40:13,020 --> 00:40:21,130 e, imos facer, q millas, tempo de cuarto de milla. 736 00:40:21,130 --> 00:40:26,190 OK, debe ter as-- todo ben, 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-- Sentímolo, o que? 740 00:40:35,000 --> 00:40:37,000 Deixe-me chamar ese algo máis aló model2. 741 00:40:37,000 --> 00:40:38,000 Deixe-me chamar ese model3. 742 00:40:38,000 --> 00:40:40,860 743 00:40:40,860 --> 00:40:42,900 E entón agora podemos facer resumo model3. 744 00:40:42,900 --> 00:40:46,850 745 00:40:46,850 --> 00:40:49,100 E entón, de novo, este é basicamente o que podería esperar. 746 00:40:49,100 --> 00:40:51,750 Ten interceptar positivo. 747 00:40:51,750 --> 00:40:54,550 O efectivo aumento peso é negativo. 748 00:40:54,550 --> 00:40:58,490 E a eficaz aumentando o tempo de cuarto de milla 749 00:40:58,490 --> 00:41:02,420 é positivo, pero aínda menos que o peso. 750 00:41:02,420 --> 00:41:06,010 Agora intuitivamente, pode facer o sentido de iso dicindo pensar en coches deportivos. 751 00:41:06,010 --> 00:41:08,950 Hai unha aceleración moi rápida, Un moi curta veces cuarto de milla. 752 00:41:08,950 --> 00:41:13,729 Eles están indo a usar máis gas, Considerando coches máis sensibles van 753 00:41:13,729 --> 00:41:16,020 ter aceleración máis lenta, cuarto de milla veces máis elevados, 754 00:41:16,020 --> 00:41:20,890 e usan menos gas ,, así millas por gala máis elevados. 755 00:41:20,890 --> 00:41:21,390 Gran. 756 00:41:21,390 --> 00:41:23,431 E entón agora é o momento de tramar algo así. 757 00:41:23,431 --> 00:41:27,810 Entón, imos fazer-- tan espida osos que podemos facer plots-- 758 00:41:27,810 --> 00:41:35,280 porque eu teño conectado este cadro de datos antes-- podemos só facer parcelas, mpg en peso. 759 00:41:35,280 --> 00:41:38,762 760 00:41:38,762 --> 00:41:39,720 Fai deste un pouco maior. 761 00:41:39,720 --> 00:41:55,050 762 00:41:55,050 --> 00:41:57,350 Alí, temos basicamente unha gráfico de dispersión, pero os puntos 763 00:41:57,350 --> 00:41:58,690 son medio difícil de ver sobre este asunto. 764 00:41:58,690 --> 00:42:04,860 765 00:42:04,860 --> 00:42:10,900 >> Eu non me lembro o que o improvisar sintaxe é para cambiar a trama. 766 00:42:10,900 --> 00:42:14,100 Entón eu creo que iso vai ser un bo momento para traer, 767 00:42:14,100 --> 00:42:18,000 hai unha moi agradable axuda builtin recurso, citas de axuda funcionar nome. 768 00:42:18,000 --> 00:42:21,690 Nós imos causar-se, basicamente, calquera cousa que quere. 769 00:42:21,690 --> 00:42:28,010 770 00:42:28,010 --> 00:42:32,730 Eu creo que realmente vou facelo Tipo de igual a p puntos parcelas. 771 00:42:32,730 --> 00:42:34,369 Será que isto cambia algo? 772 00:42:34,369 --> 00:42:35,160 E non, non realmente. 773 00:42:35,160 --> 00:42:39,160 774 00:42:39,160 --> 00:42:39,660 Todo ben. 775 00:42:39,660 --> 00:42:46,760 776 00:42:46,760 --> 00:42:49,580 >> Por algunha razón, cando eu fixen iso no meu propio ordenador hai un tempo, 777 00:42:49,580 --> 00:42:52,080 Todos os puntos de dispersión eran moito máis clara. 778 00:42:52,080 --> 00:43:06,390 779 00:43:06,390 --> 00:43:13,970 En calquera caso, son o tipo de dispersión de visible? 780 00:43:13,970 --> 00:43:15,124 Non hai ninguén alí. 781 00:43:15,124 --> 00:43:16,165 Algúns alí, algúns alí. 782 00:43:16,165 --> 00:43:18,860 783 00:43:18,860 --> 00:43:21,185 Pode clasificar de velos, non? 784 00:43:21,185 --> 00:43:24,310 Polo tanto, se queremos engadir unha liña de mellor axuste para este lote aquí, o que é un pouco espida 785 00:43:24,310 --> 00:43:29,290 bones-- déixeme facer-lle un pouco máis agradable. 786 00:43:29,290 --> 00:43:38,075 Principal igual contra peso. 787 00:43:38,075 --> 00:43:46,322 788 00:43:46,322 --> 00:43:49,740 Millas por gala. 789 00:43:49,740 --> 00:43:53,570 Unha vez máis, podes ver o quão útil argumentos opcionais están aquí tamén 790 00:43:53,570 --> 00:43:58,090 non ter que poñer as cousas nun certa orde con argumentos de teclado 791 00:43:58,090 --> 00:44:01,600 cando ten parcelas, pois estes toman unha morea de argumentos. 792 00:44:01,600 --> 00:44:07,490 >> Xlab igual peso, peso, toneladas. 793 00:44:07,490 --> 00:44:10,091 794 00:44:10,091 --> 00:44:10,590 Todo ben. 795 00:44:10,590 --> 00:44:17,340 796 00:44:17,340 --> 00:44:21,480 OK, si, este dispositivo está a ser un pouco aburrido. 797 00:44:21,480 --> 00:44:30,160 Pero podes ver tipo de alí enriba, hai un título da gráfica do lado. 798 00:44:30,160 --> 00:44:35,260 Por aquí there's-- no fondo aquí hai etiquetas de eixo. 799 00:44:35,260 --> 00:44:37,700 Eu non me lembro de improvisar o que os mandos ars-- 800 00:44:37,700 --> 00:44:41,000 que as funcións son para aumentar o tamaño destes rótulos e títulos, 801 00:44:41,000 --> 00:44:43,110 pero eles están alí. 802 00:44:43,110 --> 00:44:46,625 >> E así, se queremos engade a mellor liña de axuste, 803 00:44:46,625 --> 00:44:49,250 poderíamos facer algo como-- I ten a sintaxe escrito aquí enriba. 804 00:44:49,250 --> 00:44:52,280 805 00:44:52,280 --> 00:45:11,130 Entón lembre que acabamos de engadir modelo foi mpg, peso, mtcars. 806 00:45:11,130 --> 00:45:16,470 E así se eu quería engadir un mellor axuste liña, eu podería facer un modelo b liña. 807 00:45:16,470 --> 00:45:18,556 E o crecemento, temos unha liña de mellor axuste. 808 00:45:18,556 --> 00:45:19,970 É medio difícil de ver de novo. 809 00:45:19,970 --> 00:45:22,178 Estou moi triste no dificultades tecnolóxicas. 810 00:45:22,178 --> 00:45:25,230 Pero é executado basicamente esquina superior esquerda para ángulo inferior dereito. 811 00:45:25,230 --> 00:45:27,550 >> E se a escala foron maior, podería ver 812 00:45:27,550 --> 00:45:31,260 que a interceptación é o que pode atopar a partir das estatísticas de resumo 813 00:45:31,260 --> 00:45:34,790 se insire modelo de resumo. 814 00:45:34,790 --> 00:45:40,130 OK, entón eu espero que todo o mundo está algo de unha sensación de que 815 00:45:40,130 --> 00:45:42,030 R é, o que é bo para. 816 00:45:42,030 --> 00:45:45,520 Vostede podería facer moito mellor que parcelas iso no seu propio tempo, se lle gusta. 817 00:45:45,520 --> 00:45:50,100 818 00:45:50,100 --> 00:45:53,950 >> Así, a interface de función externa. 819 00:45:53,950 --> 00:46:00,330 Isto é algo que non é tipicamente cuberto de conferencias introdutória 820 00:46:00,330 --> 00:46:03,560 ou algo introdutorio para r. 821 00:46:03,560 --> 00:46:05,584 Non é probable que vai ter del. 822 00:46:05,584 --> 00:46:08,000 Con todo, eu penso que sería útil en meus propios proxectos no pasado. 823 00:46:08,000 --> 00:46:10,984 E non hai ningunha boa tutorial para el en liña. 824 00:46:10,984 --> 00:46:12,900 Entón, eu estou indo só para apresura-lo durante todo este 825 00:46:12,900 --> 00:46:16,606 e entón está libre para saír. 826 00:46:16,606 --> 00:46:18,480 E así o estranxeiro interface de función que está 827 00:46:18,480 --> 00:46:23,130 pode usar para chamar a ver funcións cun R. Internamente, 828 00:46:23,130 --> 00:46:29,850 R está construído sobre aritmética de C. R é só 64 bits aritmética de punto flotante de C, 829 00:46:29,850 --> 00:46:32,852 que é o tipo double [inaudível]. 830 00:46:32,852 --> 00:46:35,060 E pode querer facer isto por unha morea de razóns. 831 00:46:35,060 --> 00:46:39,250 Por unha banda, R é interpretado, é non compilado abaixo para código de máquina. 832 00:46:39,250 --> 00:46:42,170 Así, pode reescribir o seu presillas internas en C e a continuación, obter 833 00:46:42,170 --> 00:46:45,920 a vantaxe de utilizar como R. é un pouco máis cómodo que C. 834 00:46:45,920 --> 00:46:48,899 Ten a mellor gráfica instalacións e outros enfeites. 835 00:46:48,899 --> 00:46:51,690 E mentres aínda está a ser capaz de obter velocidade máxima fóra das presillas internas, 836 00:46:51,690 --> 00:46:53,650 que é onde realmente precisa del. 837 00:46:53,650 --> 00:46:56,330 >> Reutilizar bibliotecas C existentes, que tamén é importante. 838 00:46:56,330 --> 00:47:00,320 Se ten algunha biblioteca C para como, Non sei, transformadas de Fourier, 839 00:47:00,320 --> 00:47:05,190 ou algún moi Arqueano procedemento estatístico utilizado 840 00:47:05,190 --> 00:47:09,470 en alta astrofísica enerxía ou algo así, eu non sei. 841 00:47:09,470 --> 00:47:13,058 Alta enerxía astrofísica non é nin sequera un pensamento, eu creo. 842 00:47:13,058 --> 00:47:16,480 Pero pode facelo en vez de ter para escribir un porto R nativa deles. 843 00:47:16,480 --> 00:47:22,725 E no as-- e outra vez, como se ollar na maioría das bibliotecas estándar do R, 844 00:47:22,725 --> 00:47:25,600 sobre os internos, os internos son vai utilizar a función externa 845 00:47:25,600 --> 00:47:26,724 interface moi extensivamente. 846 00:47:26,724 --> 00:47:31,630 Teñen cousas como Fourier transforma computación ou correlación 847 00:47:31,630 --> 00:47:34,890 coeficientes escrito en C, e só ten R wrappers en torno a eles. 848 00:47:34,890 --> 00:47:38,230 A interface é un pouco difícil. penso 849 00:47:38,230 --> 00:47:43,750 súa dificultade é esaxerada nun Moitas das instrucións que vai atopar. 850 00:47:43,750 --> 00:47:46,200 Pero, con todo, é un pouco confuso. 851 00:47:46,200 --> 00:47:48,650 E eu non teño sido capaz de atopar un bo tutorial para el, 852 00:47:48,650 --> 00:47:51,980 Entón é iso agora. 853 00:47:51,980 --> 00:47:55,360 Unha vez máis, este segmento enteiro é máis para referencia futura. 854 00:47:55,360 --> 00:47:57,687 Non hai problema con copia todo para abaixo no momento. 855 00:47:57,687 --> 00:48:00,020 Así, as seguintes instrucións son para sistemas Unix-like, 856 00:48:00,020 --> 00:48:05,150 Linux, BSD, VOS X. Non sei como funciona en Windows, 857 00:48:05,150 --> 00:48:08,280 pero por favor, non faga o proxecto final en Windows. 858 00:48:08,280 --> 00:48:10,790 859 00:48:10,790 --> 00:48:12,460 Realmente non quere. 860 00:48:12,460 --> 00:48:14,770 Unix é moito mellor conxunto para programación casual. 861 00:48:14,770 --> 00:48:19,320 862 00:48:19,320 --> 00:48:21,390 Entón, basicamente estranxeira interface de función. 863 00:48:21,390 --> 00:48:24,420 Se queres escribir un C función para uso con R, 864 00:48:24,420 --> 00:48:27,250 ten que tomar todo o argumentos como punteiros. 865 00:48:27,250 --> 00:48:30,666 >> Así, para valores individuais, esta significa que está apuntado para o valor. 866 00:48:30,666 --> 00:48:33,040 Para matrices, é dicir unha ligazón ao primeiro elemento, que 867 00:48:33,040 --> 00:48:36,750 é o que realmente significan os nomes de arrays. 868 00:48:36,750 --> 00:48:40,140 De novo, iso é algo que ten que ter pretty totalmente abaixo despois de p definir cinco. 869 00:48:40,140 --> 00:48:43,334 Nomes de arrays son só enlaces ao primeiro elemento, 870 00:48:43,334 --> 00:48:44,750 O tipo de punto flotante é o dobre. 871 00:48:44,750 --> 00:48:47,310 E a súa función debe volver void. 872 00:48:47,310 --> 00:48:50,810 O único xeito que pode realmente dicir o que pasou R 873 00:48:50,810 --> 00:48:54,410 é por modificación da memoria que R deron a el a través da función externa 874 00:48:54,410 --> 00:48:54,910 interface. 875 00:48:54,910 --> 00:48:58,180 876 00:48:58,180 --> 00:49:00,127 >> Entón eu escribín este exemplo aquí, este é 877 00:49:00,127 --> 00:49:02,460 unha función que calcula uso produto escalar de dous vectores. 878 00:49:02,460 --> 00:49:05,060 Recibe dous argumentos, vec1, vec2, que son os propios vectores, 879 00:49:05,060 --> 00:49:06,934 e, a continuación, n, que é un lonxitude, porque unha vez máis, 880 00:49:06,934 --> 00:49:12,630 R foi construído en [inaudível] para descubrir a lonxitude de vectores, pero non fai C. 881 00:49:12,630 --> 00:49:16,182 En C, vectores é unha arbitraria delimitado anaco de memoria. 882 00:49:16,182 --> 00:49:17,890 Así, o xeito que poida calcular produtos de punto 883 00:49:17,890 --> 00:49:23,470 é só definir este parámetro para fóra a cero e entón percorrer 884 00:49:23,470 --> 00:49:28,760 a partir do 1 para protagonizar n, porque n é un punteiro para a lonxitude, 885 00:49:28,760 --> 00:49:32,929 basta engadir algo a iso parámetro. 886 00:49:32,929 --> 00:49:34,970 E iso pode ser unha boa práctica se está indo para facer 887 00:49:34,970 --> 00:49:37,270 esta a escribir dúas funcións C separados. 888 00:49:37,270 --> 00:49:41,970 Un deles has-- un deles só leva os argumentos e tipo 889 00:49:41,970 --> 00:49:43,970 que sería normalmente en C. 890 00:49:43,970 --> 00:49:47,780 >> Entón Leva unha matriz argumentos como punteiros. 891 00:49:47,780 --> 00:49:57,090 Pero os argumentos de valor único como n, el só ten como valores por copia, 892 00:49:57,090 --> 00:49:57,917 sen agullas. 893 00:49:57,917 --> 00:49:59,750 E entón iso non acontecer Punteiro [inaudível] fóra. 894 00:49:59,750 --> 00:50:01,290 E entón vostede pode ter unha persoa diferente, basicamente, 895 00:50:01,290 --> 00:50:03,623 función envoltorio que basicamente trata sobre os requisitos 896 00:50:03,623 --> 00:50:07,740 da función externa interface para ti. 897 00:50:07,740 --> 00:50:11,840 >> A xeito no que chamar iso de R é, xa ten a súa función escrita en C, 898 00:50:11,840 --> 00:50:17,770 escribe R shlib cmd, R mando biblioteca compartida, 899 00:50:17,770 --> 00:50:20,110 foo punto c, ou o que quere o nome do ficheiro é, 900 00:50:20,110 --> 00:50:23,020 eo sistema operativo non desembolsa na terminal R. 901 00:50:23,020 --> 00:50:25,200 E iso vai crear unha biblioteca chamada foo dot-lo. 902 00:50:25,200 --> 00:50:28,180 E entón podes cargalo en noso script ou interactivamente 903 00:50:28,180 --> 00:50:32,310 con mando de carga dyn punto. 904 00:50:32,310 --> 00:50:35,720 Despois, hai unha función en R chamado punto c. 905 00:50:35,720 --> 00:50:39,310 >> Isto leva argumentos que son primeiro o nome da función en C 906 00:50:39,310 --> 00:50:40,970 que quere chamar. 907 00:50:40,970 --> 00:50:43,920 E entón todos os parámetros á función que desempeña, 908 00:50:43,920 --> 00:50:45,420 teñen que ser na orde adecuada. 909 00:50:45,420 --> 00:50:48,580 Tes que usar este tipo funcións de coerción como un número enteiro, como 910 00:50:48,580 --> 00:50:52,050 parella, como personaxe, e como lóxica. 911 00:50:52,050 --> 00:50:54,710 E entón, cando retorna o lista, que de novo é só 912 00:50:54,710 --> 00:50:57,550 unha matriz asociada do nomes de parámetros e valores 913 00:50:57,550 --> 00:51:00,950 tras a función foi executado. 914 00:51:00,950 --> 00:51:08,520 >> Polo tanto, neste caso, porque ten prod dot argumentos vec1, vec2, e int n, n out. 915 00:51:08,520 --> 00:51:11,980 Para dot c temos prod punto, o nome da función 916 00:51:11,980 --> 00:51:16,250 estamos chamando, vec1, vec2, tipo coerce. 917 00:51:16,250 --> 00:51:20,060 A lonxitude de calquera vector, Só escollín vec1 arbitrariamente. 918 00:51:20,060 --> 00:51:25,479 Sería máis robusta quere dicir s lonxitude enteiro de vec1 min, lonxitude vec2. 919 00:51:25,479 --> 00:51:27,520 Entón, así como dobre cero, porque realmente non 920 00:51:27,520 --> 00:51:29,644 importa o que vai ao out parámetro porque somos 921 00:51:29,644 --> 00:51:32,270 definíndose a cero de calquera maneira. 922 00:51:32,270 --> 00:51:37,560 >> E entón os resultados van ser unha gran variedade de asociado, basicamente, 923 00:51:37,560 --> 00:51:42,090 vec1 é o que quere, vec2 é o que quere. 924 00:51:42,090 --> 00:51:44,330 Pero estamos interesados ​​en a fóra, para que poidamos aproveitar iso. 925 00:51:44,330 --> 00:51:47,780 Esta é unha vez máis, un exemplo moi xoguete dunha función de interface externa. 926 00:51:47,780 --> 00:51:54,160 Pero se ten que computar dot produtos de vectores masivas en loops, 927 00:51:54,160 --> 00:51:56,960 ou se ten que facer outra cousa nun loop, 928 00:51:56,960 --> 00:51:59,850 e non quere contar con R, que ten un pouco de sobrecarga 929 00:51:59,850 --> 00:52:02,830 embutido, isto pode ser útil. 930 00:52:02,830 --> 00:52:05,870 >> De novo, isto non é xeralmente un tema introdutorio para R. 931 00:52:05,870 --> 00:52:08,571 Non é moi ben documentado. 932 00:52:08,571 --> 00:52:11,070 Eu só estou incluíndose o porque Eu penso que sería útil no pasado. 933 00:52:11,070 --> 00:52:13,654 Prácticas Entón, malas. 934 00:52:13,654 --> 00:52:15,820 Eu mencionar que hai unha loop for na función. 935 00:52:15,820 --> 00:52:21,150 Xeralmente non debe, en a lingua, non usalo. 936 00:52:21,150 --> 00:52:26,100 Con base en como R aplica iteración internamente, o mesmo pode ser lento. 937 00:52:26,100 --> 00:52:28,540 Eles só ollar feo tamén. 938 00:52:28,540 --> 00:52:32,410 >> R trata sobre vectores moi ben, por iso, moitas veces non precisa usalo. 939 00:52:32,410 --> 00:52:35,050 940 00:52:35,050 --> 00:52:38,900 Despois, pode normalmente substituír un vector frecuentemente 941 00:52:38,900 --> 00:52:42,490 con estas funcións chamadas de alta funcións de orde, Mapa, Reducir, 942 00:52:42,490 --> 00:52:44,404 Buscar, ou filtro. 943 00:52:44,404 --> 00:52:46,320 Vou só dar algúns exemplos do que estes fan. 944 00:52:46,320 --> 00:52:49,957 Mapa é unha función de orde superior porque é preciso unha función como un argumento. 945 00:52:49,957 --> 00:52:52,290 Así, pode dar-lle unha función, pode darlle unha matriz, 946 00:52:52,290 --> 00:52:54,640 e que vai aplicar a función para cada elemento da matriz 947 00:52:54,640 --> 00:52:55,681 e voltar a nova matriz. 948 00:52:55,681 --> 00:52:58,035 949 00:52:58,035 --> 00:53:00,160 Reducir, basicamente dá un array, dá a el 950 00:53:00,160 --> 00:53:02,930 unha función que leva dous argumentos. 951 00:53:02,930 --> 00:53:07,100 Será aplicable a función en primeiro lugar, a primeiro argumento con algún valor inicial. 952 00:53:07,100 --> 00:53:09,440 A continuación a ese resultado na segunda. 953 00:53:09,440 --> 00:53:12,590 A continuación a ese resultado no terceiro, a continuación, para ese resultado na cuarta. 954 00:53:12,590 --> 00:53:14,870 E, a continuación, voltar cando se chega ao final. 955 00:53:14,870 --> 00:53:17,620 Así, por exemplo, se quere calcular a suma de todos os elementos 956 00:53:17,620 --> 00:53:23,240 nunha matriz, que se pode chamar de reducir con [inaudível] reducir un complemento 957 00:53:23,240 --> 00:53:26,620 función, como func a, b, volver a máis b. 958 00:53:26,620 --> 00:53:28,960 E, a continuación, iniciar un valor de 0. 959 00:53:28,960 --> 00:53:32,950 >> E todo iso, pode atopalos describe na documentación R, 960 00:53:32,950 --> 00:53:35,720 en calquera libro sobre programación funcional. 961 00:53:35,720 --> 00:53:38,330 Hai tamén esa clase de funcións chamadas aplicar funcións, 962 00:53:38,330 --> 00:53:42,807 que don't-- son un pouco difícil de explicar, 963 00:53:42,807 --> 00:53:45,640 pero se ollar en [inaudível] reservado que citei ao comezo, 964 00:53:45,640 --> 00:53:48,615 explica-los moi ben en seu apéndice sobre a programación R. 965 00:53:48,615 --> 00:53:51,599 966 00:53:51,599 --> 00:53:53,390 Máis sobre prácticas, engadíndose a vectores. 967 00:53:53,390 --> 00:53:57,570 968 00:53:57,570 --> 00:53:58,070 Si? 969 00:53:58,070 --> 00:54:01,651 970 00:54:01,651 --> 00:54:02,900 Eu creo que eu debería corrixir isto. 971 00:54:02,900 --> 00:54:07,450 Nesa primeira liña, frecha vec, que a frecha non debería estar alí. 972 00:54:07,450 --> 00:54:10,920 Pode atribuír a un vector, unha vez máis, por a súa lonxitude máis 1 973 00:54:10,920 --> 00:54:13,220 e asignar algún valor para que. 974 00:54:13,220 --> 00:54:18,970 Isto vai estender o vector, ou pode facer equals c VEC, newvalue VEC. 975 00:54:18,970 --> 00:54:21,540 De novo, se usa C con un argumento como un vector, 976 00:54:21,540 --> 00:54:23,300 a xerarquía resultante queda achatada. 977 00:54:23,300 --> 00:54:27,160 Entón só vai obter un vector que é prorrogado por un. 978 00:54:27,160 --> 00:54:30,410 Nunca faga iso. 979 00:54:30,410 --> 00:54:33,330 >> A razón pola que non debe facelo é isto. 980 00:54:33,330 --> 00:54:37,430 Cando asignar un vector, el dálle un certo pedazo de memoria. 981 00:54:37,430 --> 00:54:40,680 Se aumentar ese tamaño do vector, ten que recolocar o vector 982 00:54:40,680 --> 00:54:43,820 noutro lugar. 983 00:54:43,820 --> 00:54:46,980 E así realocação é moi caro. 984 00:54:46,980 --> 00:54:50,530 Non vou entrar en detalles de como alocadores de memoria son aplicados 985 00:54:50,530 --> 00:54:57,280 no nivel de sistema operativo, pero ten unha morea de tempo 986 00:54:57,280 --> 00:54:58,962 para atopar un novo bloque de memoria. 987 00:54:58,962 --> 00:55:00,920 E tamén, se está re-distribución de lotes e lotes 988 00:55:00,920 --> 00:55:03,500 de progresivamente maior Anacos, acaba 989 00:55:03,500 --> 00:55:06,420 con algo chamado fragmentación de memoria, 990 00:55:06,420 --> 00:55:09,390 onde a memoria dispoñible é dividido en moitos pequenos bloques 991 00:55:09,390 --> 00:55:11,500 ao momento de vista alocadores de memoria. 992 00:55:11,500 --> 00:55:15,340 E queda cada vez máis difícil atopar memoria para outras cousas. 993 00:55:15,340 --> 00:55:19,455 Entón, en vez, se precisa facer isto, se precisa para crecer un vector dunha extremidade 994 00:55:19,455 --> 00:55:24,240 para o outro, en vez de achegar a el constantemente, ten que pre-reservar-lo. 995 00:55:24,240 --> 00:55:29,310 Vec frecha, lonxitude do vector é igual a 1.000, ou o que quere. 996 00:55:29,310 --> 00:55:33,200 >> E entón podes só asignar para valores de un dos vectores 997 00:55:33,200 --> 00:55:36,000 un tempo despois de lle atribúe unha vez. 998 00:55:36,000 --> 00:55:40,140 Corre para este, unha vez máis, o meu traballo de verán cando estaba escribindo NRA diferencial 999 00:55:40,140 --> 00:55:42,120 Solve ecuación. 1000 00:55:42,120 --> 00:55:43,180 Non simbólica numérica. 1001 00:55:43,180 --> 00:55:49,290 A idea é que unha vez que ten un valor para a súa solución, 1002 00:55:49,290 --> 00:55:51,240 que utiliza para calcular a próxima. 1003 00:55:51,240 --> 00:55:53,700 Entón, meu inxenuo naturais inclinación era para dicir ben, 1004 00:55:53,700 --> 00:55:56,930 así que vou comezar con un vector iso é un valor substancial. 1005 00:55:56,930 --> 00:56:01,260 Calcule de que o seguinte valor que vai á miña solución de vectores, 1006 00:56:01,260 --> 00:56:02,630 e engadir isto. 1007 00:56:02,630 --> 00:56:05,290 >> Crear algo máis, engadir isto. 1008 00:56:05,290 --> 00:56:08,120 Foi moi, moi lentamente. 1009 00:56:08,120 --> 00:56:11,540 E cando eu entender iso e eu mudei o meu sistema 1010 00:56:11,540 --> 00:56:16,020 anexando á presente vector como 10.000 a 100.000 veces, 1011 00:56:16,020 --> 00:56:18,910 só para pre-reservar un vector e só correr con iso. 1012 00:56:18,910 --> 00:56:22,100 Teño máis de 1.000 veces a velocidade superior. 1013 00:56:22,100 --> 00:56:26,280 Polo tanto, este é un moi común trampa para R programación. 1014 00:56:26,280 --> 00:56:31,560 Se precisa para construír un vector peza por peza, pre-reservar-lo. 1015 00:56:31,560 --> 00:56:35,360 1016 00:56:35,360 --> 00:56:40,240 >> Outra viaxe común up-- esta é a miña última foto, non worry-- é o tratamento de erros. 1017 00:56:40,240 --> 00:56:42,890 R, para ser franco, non fai realmente facelo moi ben. 1018 00:56:42,890 --> 00:56:45,010 Hai unha gran cantidade de problemas que poden xurdir. 1019 00:56:45,010 --> 00:56:48,360 Por exemplo, se recibe un array ou un vector a partir dunha función 1020 00:56:48,360 --> 00:56:52,377 que estaba esperando un único valor de veu, ou viceversa, 1021 00:56:52,377 --> 00:56:55,460 e pasar isto para unha función que escribiu que espera un único valor, 1022 00:56:55,460 --> 00:56:57,270 que pode ser un problema. 1023 00:56:57,270 --> 00:57:01,440 >> Certas funcións voltar nulo como fan, por exemplo, 1024 00:57:01,440 --> 00:57:05,560 a partir dunha lectura clave inexistente nunha lista. 1025 00:57:05,560 --> 00:57:08,527 Pero nulo non é como C onde se tentar ler 1026 00:57:08,527 --> 00:57:11,360 a partir dun punteiro de idade, [inaudível] punteiro para null, el só SEG fallos 1027 00:57:11,360 --> 00:57:14,109 e se está no seu depurador lo lle di exactamente onde está. 1028 00:57:14,109 --> 00:57:17,080 1029 00:57:17,080 --> 00:57:20,772 Pola contra, null será fazer-- funcións vai facer cousas imprevisibles 1030 00:57:20,772 --> 00:57:21,730 se son nulos handed. 1031 00:57:21,730 --> 00:57:24,575 Como se está entregado max nulo, el lle vai dar o infinito negativo. 1032 00:57:24,575 --> 00:57:27,230 1033 00:57:27,230 --> 00:57:28,190 E así, si. 1034 00:57:28,190 --> 00:57:30,880 1035 00:57:30,880 --> 00:57:32,630 E así que isto aconteceu para min de novo, cando tiña 1036 00:57:32,630 --> 00:57:34,771 cambiou moito campos na miña lista de estrutura 1037 00:57:34,771 --> 00:57:37,520 xa sen cambia-los noutro lugar cando estaba lendo a partir deles. 1038 00:57:37,520 --> 00:57:40,670 E entón eu teño todo tipo de aleatorio resultados infinidade xurdindo 1039 00:57:40,670 --> 00:57:43,080 e eu nin idea de onde viñeron. 1040 00:57:43,080 --> 00:57:45,310 E, por desgraza, non hai ningún xeito estrito certo R 1041 00:57:45,310 --> 00:57:48,940 onde pode dicir algo parece que podería ser un erro, 1042 00:57:48,940 --> 00:57:51,960 pode deixar aí para que eu poida ser disciplinado e corrixir isto. 1043 00:57:51,960 --> 00:57:55,282 1044 00:57:55,282 --> 00:57:57,240 Con todo, hai algo chamado parada se non. 1045 00:57:57,240 --> 00:58:00,480 Isto é equivalente a assert de C, se xa falamos sobre iso. 1046 00:58:00,480 --> 00:58:02,690 Eu non creo que afirman C é un tema de conferencias, 1047 00:58:02,690 --> 00:58:06,370 pero o seu líder de sección podería ir sobre el. 1048 00:58:06,370 --> 00:58:10,393 E deixe de basicamente non ten ningunha predicado, polo tanto, calquera declaración que 1049 00:58:10,393 --> 00:58:11,824 pode ser verdadeira ou falsa. 1050 00:58:11,824 --> 00:58:13,490 E se é falsa, el deixa de seu programa. 1051 00:58:13,490 --> 00:58:18,260 Dille o que liña foron e que condición fallou. 1052 00:58:18,260 --> 00:58:21,910 >> E iso moi útil, por exemplo, verificación de sanidade, entradas de función. 1053 00:58:21,910 --> 00:58:25,110 Entón, se ten unha función e espera que, digamos, 1054 00:58:25,110 --> 00:58:29,640 se debería dar unha data, quero as datas ser só un vector de lonxitude 1 1055 00:58:29,640 --> 00:58:31,735 e nalgún lugar entre o 1 e 31. 1056 00:58:31,735 --> 00:58:34,420 1057 00:58:34,420 --> 00:58:36,170 E se non, sei algo está mal. 1058 00:58:36,170 --> 00:58:40,280 E eu decide deixar alí antes de este ten batida aleatoria en efectos con código 1059 00:58:40,280 --> 00:58:44,190 que é máis difícil de rastrexar completamente. 1060 00:58:44,190 --> 00:58:47,170 Entón esta é unha posible usar para deixar se non. 1061 00:58:47,170 --> 00:58:48,660 >> En calquera caso, Aceptar. 1062 00:58:48,660 --> 00:58:49,690 Entón, iso é o final. 1063 00:58:49,690 --> 00:58:51,290 Moitas grazas por vir. 1064 00:58:51,290 --> 00:58:53,710 Eu son un afeccionado neste. 1065 00:58:53,710 --> 00:58:57,270 Entón, desculpe se está aburrido ou confusa ou que o teñen. 1066 00:58:57,270 --> 00:59:01,670 Estou feliz de ter preguntas por correo electrónico en connorharris@college.harvard.edu. 1067 00:59:01,670 --> 00:59:07,230 Isto vale tamén para todos vendo iso viven ou máis tarde. 1068 00:59:07,230 --> 00:59:10,190 Ademais, aínda que eu non son un TF, eu tamén estou moi 1069 00:59:10,190 --> 00:59:13,900 dispostos a servir como un non-oficial conselleiro para quen é 1070 00:59:13,900 --> 00:59:15,460 R usando nun proxecto final. 1071 00:59:15,460 --> 00:59:19,900 >> Se desexa que a continuación, só fale co seu TF 1072 00:59:19,900 --> 00:59:23,750 e, a continuación, escriba me un e-mail así Sei o que está a traballar 1073 00:59:23,750 --> 00:59:26,680 e para que eu poida configurar reunión veces con vostede, se queres. 1074 00:59:26,680 --> 00:59:27,990 Entón, de novo, moitas grazas. 1075 00:59:27,990 --> 00:59:28,960 Espero que teñan gusto. 1076 00:59:28,960 --> 00:59:29,450 >> Audiencia: [inaudível]. 1077 00:59:29,450 --> 00:59:30,617 >> CONNER HARRIS: Claro. 1078 00:59:30,617 --> 00:59:34,910 >> Audiencia: Que tipo de proxecto sería un estudante CS usar R para? 1079 00:59:34,910 --> 00:59:37,427 1080 00:59:37,427 --> 00:59:40,510 CONNER HARRIS: Entón, se non está facer algo que é puramente en minería de datos, 1081 00:59:40,510 --> 00:59:43,790 por exemplo, e non hai moitas cousas 1082 00:59:43,790 --> 00:59:46,692 podería facer que os datos minería e aprendizaxe de máquina. 1083 00:59:46,692 --> 00:59:48,900 Pode querer usar R para un compoñente de algo. 1084 00:59:48,900 --> 00:59:52,022 Eu trouxo, orixinalmente, o exemplo de se está escribindo un sitio 1085 00:59:52,022 --> 00:59:54,730 e quere realizar automática análise estatística do servidor 1086 00:59:54,730 --> 00:59:57,990 rexistros nun determinado período de tempo todos os días, que pode ser algo que é 1087 00:59:57,990 --> 01:00:01,260 moi fácil de facer en só unha breve R guión que pode programar 1088 01:00:01,260 --> 01:00:04,200 para realizar todas as noites, por exemplo. 1089 01:00:04,200 --> 01:00:06,550 >> E estou seguro que si non hai ningunha razón que 1090 01:00:06,550 --> 01:00:11,520 quere estatísticas ou capacidades gráficas e ter esta carreira automaticamente no canto 1091 01:00:11,520 --> 01:00:13,790 de ter que interactuar con cousas en Excel, 1092 01:00:13,790 --> 01:00:16,750 por exemplo, isto é algo pode querer usar para R. 1093 01:00:16,750 --> 01:00:21,190 Entón, máis preguntas antes de saír? 1094 01:00:21,190 --> 01:00:21,690 Non? 1095 01:00:21,690 --> 01:00:24,960 Todo ben, ben, unha vez máis, grazas Moi por vir. 1096 01:00:24,960 --> 01:00:29,417