CONNOR HARRIS: Todavía me pensar en algún video emocionante producido por una consultoría profesional que utiliza R mucho en su trabajo. NARRADOR: ¿Qué hay detrás de las estadísticas, los análisis y las visualizaciones científicos de datos más brillantes de hoy y los líderes empresariales se basan en para tomar decisiones de gran alcance? No siempre se puede ver. Pero está ahí. Se llama R, de código abierto r-- la lenguaje de programación estadística que los expertos en datos del mundo sobre el uso de todo lo de cartografía amplia sociales y tendencias de marketing en línea al desarrollo de los sectores financiero y el clima modelos que ayudan a impulsar nuestras economías y comunidades. Pero, ¿qué es exactamente R y donde se inició R? Bueno originalmente, R empezó aquí con dos profesores que quería una mejor estadística plataforma para sus estudiantes. Así que crearon un solo modeladas después de que el lenguaje estadístico S. Ellos, junto con muchos otros, mantienen trabajando y usando R, la creación de herramientas para la I y la búsqueda nuevas aplicaciones para R todos los días. Gracias a esto es esfuerzo de la comunidad en todo el mundo, R siguió creciendo con miles de las bibliotecas creadas por el usuario construidas para mejorar la funcionalidad de R y validación de la calidad de multitud de fuentes y el apoyo de las más reconocidas líderes de la industria en todos los campos que utiliza R. ¿Qué es grande, porque R es el mejor en lo que hace. Florecimiento expertos de forma rápida y fácil de interpretar, interactuar con, y visualizar los datos mostrando su rapidez creciente comunidad de usuarios en todo el mundo I y ver cómo fuente abierta R continúa dando forma el futuro de la estadística el análisis y la ciencia de datos. CONNOR HARRIS: Muy bien, muy bien. Así que mi propia presentación será un poco más sobrio. No va a implicar mucho emocionante música de fondo. Pero como se vio en el video, R es una especie de un lenguaje de programación de propósito general. Pero fue creado mayormente para el trabajo estadístico. Así que ha sido diseñado para las estadísticas, para el análisis de datos, para la minería de datos. Y así se puede ver esto en una gran cantidad de las opciones de diseño que los fabricantes de R hecho. Está diseñado para gran parte, personas que no son expertos en programación, que se acaba de recoger la programación en el lado para que puedan hacer su trabajo en ciencias sociales o en las estadísticas o lo que sea. Tiene un montón de muy diferencias importantes de C. Pero la sintaxis y los paradigmas que utiliza son básicamente los mismos. Y usted debe sentirse bastante como en casa la derecha del palo. Es un lenguaje imperativo. No te preocupes demasiado por eso si usted no sabe el término. Pero hay una distinción entre imperativo, declarativa, y funcional. Imperativo sólo significa que hagas declaraciones que son básicamente los comandos. Y a continuación, el intérprete o el equipo les sigue uno por uno. Se tipos débiles, hay no hay declaraciones de tipo en R. Y luego las líneas entre los diferentes tipos son un poco más flojo que están en C, por ejemplo. Y como ya he dicho, hay muy amplias instalaciones para su representación gráfica, por estadística análisis, para la minería de datos. Ambos están integrados en el lenguaje y, como decía el video, miles de bibliotecas de terceros que usted puede descargar y utilizar de forma gratuita con condiciones de licencia muy sueltos. Así que, en general, me gustaría recomendar que nos fijamos en estos dos libros si usted va a trabajar en R. Uno de ellos es el funcionario principiante de R guía. Ha mantenido por el desarrolladores principales de R. Puede descargarlo de nuevo, libre de cobrar y legalmente en ese vínculo existe. Todas estas diapositivas se van a ir arriba en el Internet, en la página web CS50 después de esto se hace. Así que no hay necesidad de copiar cosas abajo frenéticamente. El otro es un libro de texto de Cosma Shalizi, quien es un profesor de estadística en Carnegie Mellon, llamado Advanced Data Análisis de una Point of View Primaria. Esto no es principalmente un libro de R. Es un libro de estadística y es un libro de análisis de datos. Pero es muy accesible a las personas que tener un mínimo de conocimientos de estadísticas. Nunca he tomado un curso formal. Sólo sé partes y piezas de diversas disciplinas afines que he tomado cursos en. Y yo era capaz de entender perfectamente bien. Se dan todas las figuras en R. Se hacen en R y también tienen listados de código debajo de cada figura que te dicen cómo hacer que cada figura con el código R. Y eso es muy útil si usted está tratando de emular una figura que se ve en un libro. Y de nuevo descarga gratuita stat.cmu.edu/cshalizi/ Lo sentimos, que debe ser slash cshalizi tilde. Me aseguraré de que corregir eso cuando las diapositivas oficiales suben. / ADAfaEPoV que es sólo el acrónimo del título del libro. Así que en general caveats-- R tiene un montón de posibilidades. Yo sólo voy a ser capaz de cubrir la superficie de un montón de cosas. También la primera parte del seminario va a ser algo así como un volcado de datos. Estoy bastante lo siento por eso. Básicamente, voy a presentarles a un montón de cosas la derecha del palo, va lo más rápido posible. Y entonces llegamos a la parte divertida, la cual es la demo donde te puedo mostrar todo que hemos hablado en la pantalla. Y se puede jugar por su cuenta. Así que ahí va a haber una gran cantidad de material técnico arrojado hasta aquí. No te preocupes por la copia de todo lo que hacia abajo. Debido A, puede obtener toda la cosas en el sitio web CS50 después. And B, no es realmente tan importante memorizar esto desde las diapositivas. Es más importante que usted consigue alguna facilidad intuitiva con ella y que viene de simplemente jugando. Así que ¿por qué utilizar R? Básicamente, si usted tiene un proyecto que implica la minería grandes conjuntos de datos, los datos visualización, debe utilizar R. Si usted es haciendo análisis estadísticos complicado, eso sería difícil en Excel, por ejemplo, sería También se good-- también si usted está haciendo estadística análisis que está automatizado. Digamos que usted está manteniendo un sitio web. Y desea leer el registro del servidor todos los días y compilar alguna lista, como los primeros países que sus usuarios están viniendo, algunas estadísticas resumidas sobre la duración que gastan en su sitio web o lo que sea. Y desea ejecutar esto todos los días. Ahora bien, si usted está haciendo esto en Excel, usted tendría que ir a su registro del servidor, importar que en un Hoja de cálculo de datos de Excel, ejecutar todos los análisis de forma manual. Con R, sólo puede escribir un script. Programarlo para que se ejecute cada día de su sistema operativo. Y entonces todas las noches a las 2:00 de la mañana, o cada vez que se programa para que se ejecute, que se verá a través de su el tráfico de Internet para ese día. Y luego al día siguiente, se le tener esta brillante, nuevo informe o lo que sea con toda la la información que solicitó. Así que, básicamente R es para Cisco programación en comparación con el análisis de Cisco. Preliminar se hace. Vamos a entrar en las cosas reales. Así que hay tres reales tipos en el idioma. Hay tipo numérico. Hay una especie de diferencia entre enteros y puntos flotantes, pero no realmente. Hay un personaje escribir, que es cuerdas. Y hay una lógica escribir, que es Booleanos. Y usted puede convertir entre tipos el uso de estas funciones como numérico, como el carácter, como lógico. Si llama, por ejemplo, como numérico en una cadena, que tratará de leer esa cadena como un número, de la misma manera que a2i y scanf hacen, y C. Si se llama como numérico de verdadero o falso que convertirá a 1 o 0. Si llama como el personaje en todo lo que va a convertir eso en una representación de cadena. Y luego están los vectores y matrices. Así vectores son básicamente 1 arrays dimensionales. Son lo que llamamos matrices en C. Matrices, 2 matrices dimensionales. Y entonces mayor dimensionales que puedas tienen 3, 4, 5 dimensiones o lo que sea de valores numéricos, de cadenas, valores de lógicas. Usted también tiene listas que son una especie de matriz asociativa. Voy a entrar en eso un poco. Así que una cosa importante que los viajes de las personas en R es que no hay , tipos atómicos puros reales. No hay distinción real entre un número, como un valor numérico, y una lista de valores numéricos. Los valores numéricos son en realidad la mismo que los vectores de longitud 1. Y esto tiene un número de implicaciones importantes. Uno, que significa que usted puede hacer cosas muy fácilmente que involucran como la adición de un número a un vector. R será básicamente la figura lo que quiere decir con eso. Y voy a llegar a eso en un segundo. También significa que no hay manera para el tipo checker-- en la medida que algo así existe en R-- para contar cuando has pasado en el valor único cuando se espera un array o viceversa. Y eso puede causar alguna extraña problemas que me encontré cuando Yo estaba usando R durante mi trabajo de verano. Y no hay arreglos de tipo mixto. Así que no se puede tener una matriz fuera el primeros elementos es, no sé, la cadena "John" y el segundo elemento es el número 42. Si usted trata de hacer eso, entonces obtendrá todo sólo convierte en una cadena. Así que tenemos cuerda Juan, cadena 42. Sintáctica tan inusuales rasgos señalados- más de R sintaxis es muy similar a C. Hay algunas diferencias importantes. Escribir es muy débil. Así que no hay declaraciones de variables. Asignación utiliza la extraña operador de error de menos de guión. Los comentarios son la almohadilla. Supongo que ahora día lo llamamos hashtag aunque eso no es realmente no accurate-- la doble barra. Residuos modulares son con %% signos. La división entera está con% /% que es muy difícil de leer cuando se proyecta en la pantalla. Usted puede obtener rangos de enteros con el colon. Así 2,5 le dará un vector de todos los números 2 a 5. Las matrices están indexados de una sola, que se atornilla a mucha gente hasta si son de más lenguajes de programación típicos, como C, donde la mayor parte las cosas son cero-indexada. Una vez más, aquí es donde la herencia de R como un lenguaje para como no programadores profesionales provienen en. Si usted es un sociólogo o un economista o algo y que está tratando de usar R básicamente como un complemento a su más importante trabajo profesional, vas a encontrar un indexar un poco más natural. Debido a empezar a contar a 1 en la vida cotidiana, no 0. Para-bucles, esto es similar a el foreach construir en PHP, que usted conseguirá aprender en-- muy pronto. ¿Qué es para el valor en el vector y entonces usted puede hacer las cosas con valor. AUDIENCIA: Eso viene en conferencia. CONNOR HARRIS: Oh, eso es llegar a la conferencia, excelente. AUDIENCIA: La misión, ¿es supone que señalar de derecha a izquierda? CONNOR HARRIS: De derecha a izquierda, sí. Usted puede pensar en él como el valor en la derecha empujado en la variable a la izquierda. AUDIENCIA: OK. CONNOR HARRIS: Y por último sintaxis de la función es un poco extraño. Usted tiene el nombre de la función foo, asignado a esta función de palabras clave, seguido por todos los argumentos y luego el cuerpo de la función después de eso. Una vez más estas cosas pueden parecer un poco extraño. Ellos se convierten en segunda naturaleza después se trabaja con la lengua un poco. Así vectores, el camino que la construcción de un vector es que el tipo C, que es una palabra clave, a continuación, todos los números que desea o cadenas o lo que sea. Argumentos también ser vectores. Pero la matriz resultante se aplana. Así que no se puede tener matrices donde algunos elementos son números individuales y algunos elementos son propios arreglos. Así que si usted trata de construir un matriz fuera el primer elemento es 4 y el segundo elemento es el 3,5 matriz que va a acaba de obtener una matriz de tres elementos, 4,3,5. No pueden ser de tipo mixto. Si intenta leer o escribir fuera de los límites de un vector obtendrá este valor llamado NA que significa un valor perdido. Y esto está destinado a como estadísticos que están trabajando con conjuntos de datos incompletos. Si se aplica una función que se supone a tomar sólo un número a una matriz a continuación, lo que se obtiene es, la función asignará sobre la matriz. Así que si su función digamos que toma un número y devuelve cuadrados. Usted solicita que a la matriz 2,3,5 Lo que recibirá es la matriz 4,9,25. Y eso es muy útil porque le significa no tiene que escribir para bucles para hacer las cosas muy simples, como la aplicación de una función para todos los miembros de un conjunto de datos. ¿Qué si usted está trabajando con un gran conjuntos de datos, usted tiene que hacer mucho. Funciones binarias son entrada aplicada por la entrada. Voy a entrar en eso. Usted puede acceder a ellos con matrices o vectores con corchetes. Soportes Así nombre del vector cuadrados 1 le dará el primer elemento. Nombre Vector corchetes 2 le dará el segundo elemento. Puede pasar de un vector de índices y usted volver a salir, básicamente, un factor secundario. Así que usted puede hacer vectorial soportes Nombre C, 2,4 y obtendrá un vector que contiene el segundo y cuarto elementos de la matriz. Y si quieres sólo un Resumen estadístico rápida de un vector como intercuartil rango, mediana, máximo, lo que sea, puede teclear Resumen nombre del vector y sacar eso. Eso no es realmente útil en programación, pero si estás jugando alrededor de los conjuntos de datos, es muy útil. Matrices-- básicamente matrices de dimensiones superiores. Tienen esta sintaxis especial notación. Matriz con una matriz que obtiene lleno en-- siento, matriz con los datos, número de filas, el número de columnas. Cuando usted tiene algunos datos, rellena la matriz básicamente va de arriba a abajo primero. Luego de izquierda a derecha. Así, así. Y R ha construido en multiplicaciones de matrices, descomposición espectral, diagonalización, un montón de cosas. Si desea mayor dimensión arrays, por lo 3, 4, 5, o lo que sea dimensiones se puede hacer eso. La sintaxis es la matriz es igual a c tenue, a continuación, la lista de las dimensiones. Así que si quieres una matriz tridimensional 4 con dimensiones de 4, 7, 8, 9, la matriz, tenue es igual a c (4,7,8,9). Para acceder a los valores individuales con los soportes primera coma entrada segunda entrada. Usted puede obtener rebanadas enteras de filas o columnas. Con esta sintaxis es incompleta simplemente remar número de coma o columna de coma número. Así que las listas son una especie de matriz asociada. Ellos tienen su propia sintaxis aquí. Una vez más no hacer frenéticamente copiar todo esto. Esto es sólo para que la gente pasando por los toboganes más tarde tener todo esto en una buena referencia. Y esto se convertirá en una vez muy natural De hecho, me paseo por las demos. Así enumera una arrays básicamente asociados. Se puede acceder a los valores con nombre de la lista, muestra de dólar, clave. Así que si su lista es el nombre foo, entonces usted puede acceder a ella de esa manera. Usted puede obtener un par clave-valor entero pasando en el índice entre corchetes. Si se lee desde una inexistente clave, obtendrá nula. No será error. La cosa es, R hará lo que tanto con nula, ya que puede. Y esto puede significar que si estás no esperando recibir nula fuera de alguna lista de lectura, obtendrá alguna errores impredecibles más abajo la línea. Esto me sucedió a mi cuando trabajo de verano que estaba usando R donde he cambiado la forma de un cierto lista se definió en un solo lugar pero no cambió más tarde en el código que lee los valores de la misma. Y así, lo que pasó fue que estaba leer valores nulos fuera de esta lista, pasarlos en funciones, y siendo muy confusa cuando me dieron toda clase de infinitos aleatorios apareciendo en esta función. Porque si se aplica cierto máximo o funciones mínimas en NULL, obtendrá valores infinitos a cabo. Las tramas de datos, son una subclase de lista. Cada valor es un vector de la misma longitud. Y se usan para la presentación, básicamente, tablas de datos. Hay esta sintaxis de inicialización. Esto todo, una vez más, ser mucho más clara cuando se llega a la demo. Y lo bueno de tramas de datos es que se puede dar nombres a todas las columnas y los nombres de todas las filas. Y por lo que hace el acceso ellos un poco más amable. También esta es la forma en la mayoría de las funciones que leer datos de hojas de cálculo de Excel o desde archivos de texto, por ejemplo, leerá en sus datos. Ellos ponen en algún tipo de trama de datos. Así functions-- las funciones la sintaxis es un poco raro. Una vez más es el nombre de la función, ceder, esta función de palabras clave y luego la lista de argumentos. Así que hay algunas cosas buenas acerca de cómo las funciones trabajan aquí. Por un lado, en realidad se puede asignar valores por defecto a ciertos argumentos. Así que se puede decir R1 equals-- se puede decir foo es una función en la que R1 es igual a algo por defecto si el usuario especifica sin argumentos. De lo contrario, es lo que él puso en. Y esto es muy práctico porque muchas de nuestras funciones tienen a menudo decenas o cientos de argumentos. Por ejemplo los que para el trazado gráficos o trazado gráficos de dispersión tener argumentos que controlan todo, desde el título y el eje etiquetas al color de las líneas de regresión. Y por lo que si usted no quiere para que la gente especifican todos y cada uno de ellos cientos de argumentos controlar todos los aspectos de una parcela o una regresión o lo que sea, es bueno tener estos valores predeterminados. Y entonces usted puede realmente escribir lo que vio de nuevo aquí. O encontrar un mejor ejemplo. Cuando se llama a funciones en realidad se puede llamarlos utilizando los nombres de argumentos. Así que aquí está un ejemplo de el constructor matriz. Toma tres argumentos. Por lo general, tiene datos, que es un vector. Usted tiene N filas, que es el número de filas. Tienes N cols-- número de columnas. La cosa es que si escribe Fila N es igual a lo que sea y N es igual a cualquier col cuando que está llamando a esta función, en realidad se puede revertir ellos. Así que usted puede poner primero y la fila N N col segundo y que le hará ninguna diferencia. Así que esa es una característica poco agradable. Hizo importación y exportación. Esto se puede hacer, básicamente. También hay instalaciones para escribir arbitraria R se opone a un archivo binario y luego leer de nuevo más tarde. Lo cual es muy útil si usted está haciendo una gran sesión de R interactivo y lo que necesita para salvar cosas muy rápidamente. Por defecto R tiene un directorio de trabajo que los archivos se escriben en y leer de nuevo desde. Se puede ver que con getwg, cambiarlo con setdw. Nada especialmente interesante aquí Así que ahora las estadísticas reales stuff-- regresión multilineal. Así la sintaxis habitual es un poco complicado. El modelo es un gran objeto, básicamente. Se le asigna a LM, que es una llamada a la función. El primer elemento, la Y x1 tilde, más lo que sea. Mi sintaxis aquí es un poco confuso. Estoy muy triste, este es la forma estándar que los libros de ciencias de la computación hacen esto. Pero es un poco raro. Así que, básicamente, es lm paréntesis, primer punto se variable-- siento, dependiente x1 tilde variable más x2 plus sin embargo muchos independientes las variables que tiene. Y entonces estos pueden ser tanto vectores, todos la misma longitud. O pueden ser la columna cabeceras en una trama de datos que acaba de especificar en el segunda trama de datos argumento. También puede especificar una fórmula más compleja por lo que no tiene que linealmente regresión una variable dependiente, o un vector en un vector preexistente. Usted puede hacer, por ejemplo, un componente de vector y al cuadrado más 1 y que en contra de la regresión log de algún otro vector. Puede imprimir resúmenes de la modelo con este comando llamado summary-- simplemente Resumen parens modelo. De nuevo otra cosa debo aclarar. Otra cosa que logrará corregida cuando las diapositivas suben en Internet. Si lo que desea es calcular una correlación simple puede utilizar la correlación vectorial 1 2 vectorial función básica. Método por defecto Correlaciones de Pearson. Esos son los estándares que usted puede hacer. Hay también Spearman y Correlaciones Kendell que son algunos variedad de correlación orden de rango. Bueno, ellos no calculan producto momentos entre los propios vectores, sino de órdenes de rango del vector. Voy a explicar esto más adelante. AUDIENCIA: Una pregunta rápida CONNER HARRIS: Claro. AUDIENCIA: Así que cuando usted está calculando para las correlaciones simples hacen usted asume que hay una estadística importancia para la correlación? CONNER HARRIS: Usted no tiene que hacerlo. Una película es básicamente una máquina. Tomará en dos cosas y va a escupir coeficientes para la línea de mejor ajuste. También informa estándar errores en los coeficientes. Y le dirá, como es el intercepción estadísticamente significativa o diferencia de 0. Es la pendiente de la mejor ajuste de línea estadísticamente diferente de cero, etcétera. Por lo tanto, asume nada, creo que es la mejor respuesta a su pregunta. OKAY. Plotting-- por lo que la razón principal que debiera utilizar R, como la regresión multilineal. Básicamente todos los idiomas tiene alguna facilidad para eso. Y honestamente sintaxis de R como regresión es un poco misterioso. Pero trazado es donde realmente brilla. La función caballo de batalla es trama y toma dos vectores, x e y. Y luego las elipses se destaca por una muy gran número de argumentos opcionales que controlar todo, desde títulos de colores de varias líneas o varios puntos, con el tipo de trama. Usted puede tener la dispersión parcelas o gráficos de líneas. [Inaudible] 2 vectores de la misma longitud. Puede preceder a esto con adjuntar trama de datos en el script. Y esto le permitirá sólo tiene que utilizar la columna cabeceras en lugar de vectores separados. Puede agregar rectas más ajustadas y locales curvas de regresión a su gráfico. Estos comandos enumeran aquí, ab líneas y líneas, por defecto éstos reciben escrita en ventanas emergentes porque se supone que está utilizando R interactiva. Si usted no es que pueda escribir dos archivos que son en realidad cualquier formato que quieras. Lo siento, tengo una errata me acabo de dar cuenta. Si desea abrir otro dispositivo gráfica puede utilizar esta función llamada PNG o JPEG o muchos otros formatos de imagen. Y usted puede escribir a los gráficos cualquiera que sea el nombre de archivo que especifique. Para cancelar la que usted tiene que servicio- Yo no escribí esto en el slide-- pero hay una función llamada dev punto de que no tiene argumentos. Luego están las instalaciones para el trazado 3D y para el contorno de trazado si usted quiere hacer gráficas de dos variables independientes. No voy a entrar en esto en este momento. Hay también algunos son instalaciones para la animación esos son generalmente mantenidos por terceros. He hecho animaciones con gráficos de R, pero no he utilizado estos terceros bibliotecas. Así que no puedo dar fe de lo buenos que son. Lo que yo recomiendo que si quieres para hacer animaciones utilizando R es que usted puede escribir a cabo todos los marcos para las animaciones y entonces usted puede utilizar un tercero program-- partido los típicos se llaman FFmpeg o ImageMagick-- a la puntada todos sus cuadros en una sola animación. Así que el tiempo para la demostración. Así que si usted está usando cualquier Unix como sistema que es Linux BSD, pero que utiliza BSD. OS X abrir una ventana de terminal y tipo R en el símbolo del sistema. Si usted tiene R estudio o similares, que también funciona. Para los usuarios de Windows que debe ser capaz de encontrar R en el menú Inicio. Debería llamarse algo como R x64 3 puntos lo que sea. Abra que hasta allí. Así que ahora permítanme abrir una ventana de terminal. Muy bien, la búsqueda. AUDIENCIA: Comando Espacial CONNER HARRIS: Comando Espacial, gracias. No utilizo normalmente Macs. Terminal, muestran una nueva ventana. Nueva ventana es la configuración básico, R. Así que usted debe recibir un mensaje de bienvenida, algo como esto. Así que estoy usando R interactiva. También puede escribir scripts R por supuesto. Básicamente los scripts se ejecutan de la misma manera como si estuviera sentado frente a la computadora escribiendo en cada línea de una en una. Así que vamos a empezar por hacer un vector. Una flecha C 1, 2. 1, 2, 4. Claro. Puedo hacer que el tamaño de la fuente más grande. AUDIENCIA: Comando-Plus CONNER HARRIS: Comando-Plus. Comando-Plus. Muy bien, ¿cómo es eso? ¿Bien? OKAY. Así que vamos a empezar por declarar una lista de vectores. Hacer un, flecha, C 1,2,4. Podemos ver a. No te preocupes por el soporte de allí. Los paréntesis son así que si usted imprimir matrices muy largas, podemos dónde se encuentre. Un ejemplo sería si yo sólo quiero rango 2-200. Si imprimí un larga serie, los soportes son sólo para que yo pueda mantener un registro de qué índice estamos en si estoy buscando a través de este visualmente. Así que de todos modos, tenemos una. Así que le dije antes de que las matrices de interacción muy bien con, por ejemplo, operaciones unarios les gusta esto. Entonces, ¿qué crees que voy a conseguir si introduzco una más 1? Sí. Bien, ahora voy a hacer esta matriz diferente. Digamos b c 20,40, 80. Entonces, qué piensas este comando hará? Añadir los elementos. Y así que básicamente eso es lo que hace. Así que esto es bastante conveniente. Así que ¿qué hago esto. do es, digamos, 6 veces 1 al 10. Entonces, ¿qué es lo que quiero ver contenida, qué te parece? Así que todos los múltiplos de seis. Ahora, ¿qué te parece pasará si hago esto? Voy a hacer esto un poco más claro, c, c. Entonces, ¿qué pasa, ¿verdad pensar, si hago esto? un plus c. [INAUDIBLE] AUDIENCIA: Cualquiera de un error o sólo se suma los tres primeros elementos. CONNER HARRIS: No del todo. Esto es lo que nos dieron. Lo que pasa es uno más corto matriz, una, consiguió un ciclo. Así que nos dieron 124, 124, 124. Sí. Y en el fondo, usted puede ver este comportamiento antes, un plus 1, como una subclase de este comportamiento, donde la matriz más corta es sólo el número 1, que es una matriz de un elemento. Acabo de estar diciendo todo vectorial el tiempo en lugar de la matriz, porque eso es lo que el r documentación tiene acostumbrados. Es una c hábito arraigado. OK, y por eso ahora tenemos esta matriz. Así que tenemos esta matriz, c. Podemos conseguir Resumen estadísticas sobre c, sumarias c. Y eso es bueno. Así que ahora vamos a hacer algunas cosas de la matriz. Digamos que m es una matriz. Vamos a hacer que un tres por tres una. Así nRows es igual a 3, y es igual a 3 ncols. Y para los datos que vamos a hacer-- así que lo que cree usted que esto va a hacer? Correcto, es la siguiente. Es nRow y nColumn. Así que lo que he hecho es que he declarado una matriz de tres por tres y yo he pasado en una serie de nueve elementos. Así que el logaritmo de todo el elementos uno al nueve. Y todos esos valores se llenan el lamento array--? AUDIENCIA: Aquellos son de base 10 registros? CONNER HARRIS: No, de registro es logaritmos naturales, por lo que en base e. Sí, si usted quiere la base 10 log, creo que tendrías para registrar lo que sea, dividido por registro 10. Y por lo que los datos de la [inaudible] solo se llena la matriz, por lo que arriba a abajo, luego a la izquierda a la derecha. Y si quería hacer alguna otra matriz, digamos n es la matriz. Vamos a hacer, no lo sé, 2 a 13. O voy a hacer algo más interesante. Haré 2-4. nRow es igual a, digamos, 3. ncol es igual a 4. norte. Así que tenemos esto. Y ahora si queremos multiplicar estos, haríamos veces n ciento por ciento, porque eso es n. Y tenemos productos de matriz. Por lo cierto, ¿ves cómo cuando me declaré n, del 2 al 4 vector consiguió cicla hasta que llenaba todos los n? Si querías tomar la descomposición de valor propio, esto es algo que podemos hacer con mucha facilidad. Podemos hacer eigen n. Y por lo que esta es nuestra primera encontrarse con una lista. Así eigen n es una lista con dos llaves. Valores, que es esta matriz aquí. Y vectores, que es esta matriz aquí. Así que si usted quiere extraer, por ejemplo, esta tercera columna de la matriz de vectores propios, porque los vectores propios son vectores columna. Así que podemos hacer eigen vec n signo de dólar vectores, coma 3, de [inaudible]. Vec. Es que, como se podría esperar. Luego diga n veces veces ciento vec. Así que el resultado aquí sin duda parece si tomamos el tercer valor propio aquí, que se corresponde con la tercera vector propio. Simplemente multiplica todo en este vector propio, componentes sabio, por el valor propio. Y eso es lo que cabría esperar, porque eso es lo que son los valores propios. ¿Alguien aquí no tomado álgebra lineal? Un par de personas, en Aceptar. Basta con activar su cerebro fuera un poco. Y de hecho, si tomamos eigen n valores de signo de dólar 3 veces vec, así conseguir lo mismo. Es un formato diferente como una fila vector en vez de un vector columna, pero la gran cosa. Y así, esos son básicamente el buen cosas que podemos hacer con matrices, listas demostradas. Debo demostrar el buen cosas acerca de las funciones también. Así que vamos a decir-- [inaudible] función, la llamada de let que func contra la función de n n squared-- En realidad, eso no es realmente el mejor. a, b, un cuadrado más b. Así que una cosa acerca de funciones, de nuevo, es que no necesitan declaraciones explícitas de retorno. Así que usted puede solo-- la última declaración evaluado será la declaración devuelto, o el valor devuelto. Así que en este caso, sólo estamos evaluando una sentencia, un plus cuadrado b. Ese será el valor de retorno por defecto. Nunca está de más poner en devolver valores de forma explícita, especialmente si usted está tratando con un la función de la lógica muy complicado caudal. Pero usted no los necesita. Así que ahora podemos hacer func 5, 1, y esto es básicamente lo que se espera. Otra cosa que podemos hacer, en realidad podemos hacer func b es igual a 1, a es igual a 5. Así que si especificamos qué número aquí, que este argumento al que el argumento en la función, podemos dar la vuelta alrededor estos valores donde queramos. AUDIENCIA: ¿Hay una razón escribirlo con la b iguales en lugar de sólo usar los números y la coma? CONNER HARRIS: Sí, por lo general hacer esto si tiene funciones con una gran cantidad de argumentos. Eso podría a menudo ser como banderas que sólo había que desee utilizar en raras ocasiones. Y de esta manera usted puede only-- usted puede referirse a los argumentos específicos que desea utilizar valores no predeterminados para, y usted no tiene que escribir un montón de banderas es igual a falso después de ellos. O puedo escribir esto de nuevo con un valor por defecto como b es igual a 2. Y entonces yo podría hacer f func, Voy a hacer 4, 1 este tiempo. Y el 17, que es 4 al cuadrado más 1, como se podría esperar. Pero podría también acaba llamar a este con func 4, y voy a conseguir 18, porque No especifico b. Así b obtiene el valor por defecto de 2. OK, así que ahora si eres siguiente junto con la demo, escriba esta línea en su comando impulsar y ver qué sale. En realidad, no lo hagas. Escriba esto. Usted debe obtener algo como esto. Así mtcars está construido en los datos establecer para esta demostración propósitos que viene con-- que viene en forma predeterminada con su distribución de r. Esta es una recopilación de las estadísticas de un número de la revista Motor Trend 1974 en un número de diferentes modelos de automóviles. Así que hay millas por galón, cylinders-- Me olvido de lo disp es-- caballos de fuerza. Probablemente. Si usted acaba de coches Google MT, entonces uno de los primeros resultados será a partir de la documentación oficial r y explicará todos estos campos de datos. Así peso es-- peso es peso del coche en toneladas. Q seg es el momento de cuarto de milla. Así que ahora podemos hacer algunas cosas divertidas sobre los coches MT es un campo de datos. Por lo que podemos hacer las cosas como los nombres de fila, coches mt. Y esta es una lista de todas las filas de el conjunto de datos que son nombres de coches. Podemos hacer COLNAMES, automóviles mt esto. Si lo haces coches mt, subíndice numérico, como 2. tenemos la segunda columna de esto, que sería cilindros. AUDIENCIA: ¿Qué hiciste? CONNER HARRIS: Yo tecleó MT autos, soportes e, que me dio la segunda columna de coches mt. O si queremos una fila, puedo escribir mtcars coma 2, por ejemplo. Otra ronda 2 coma, así. Y eso va en su fila. Esta aquí sólo te da una columna, pero como un vector columna. Me acabo de dar cuenta ahora se olvidó de demostrar algunas cosas interesantes acerca de vectores que se puede ver con los índices. Así que déjame hacer eso ahora mismo. Así que vamos a hacer c gets-- poner esto en pause-- 2 veces 1 a 10. Así que c es sólo va a ser el vector de 2 a 20. Puedo tomar elementos de este tipo, c2. Me puede pasar en un vector de esta manera, me C-- deje utilizar un nombre diferente que c, como c vec. Básicamente, estoy haciendo esto para que no lo entiendo confundido entre c como función de la construcción del vector, y luego c como un nombre de variable. Soportes Vec c 4, 5, 7. Esto me va a salir del cuarto, quinto, y siete elementos de la matriz. Yo puedo hacer vec, poner en un negativo índice, como negativo 4. Eso sacarme esto con el cuarto elemento eliminado. Entonces, si yo quería hacer rodajas, Yo puedo hacer vec 2 a 6. 2 puntos 6 es más que otra vector, que es 2, 3, 4, 5, 6. Escupe eso. Así que de todos modos, de nuevo a los coches mt. Así que vamos a hacer algunas regresiones. Digamos modelo gets-- vamos linealmente regress-- No sé. En primer lugar vamos a hacer adjuntar mtcars, por supuesto. Así que [inaudible] modelo lm, vamos van retrocediendo millas por galón en peso tilde. Y luego trama de datos es mtcars. Así modelo de resumen. OK, así que esto parece un poco complicado. Pero, básicamente, ya que si nos tratar de expresar millas por galón como una función lineal de peso, entonces tenemos esta línea aquí, que intercepta a 37.28. 37.28 serían las millas teóricas por galón de un coche que pesa cero. Y luego por cada tonelada adicional, usted golpea a unas cinco millas por galón fuera de eso. Ambos de estos coeficientes que puede ver, errores típicos allí. Y son muy Estadísticamente significante. Así que podemos estar muy seguros de 1 e 10 al negativo 10. Así 1 veces algo a lo negativo 10, que si haces un coche más pesado, tendrá peores millas por galón. O podemos probar algún otro modelo. Al igual que en lugar de regresión esto en peso, vamos van retrocediendo en el registro de peso, porque a lo mejor el peso efectivo en el kilometraje no es de alguna manera lineal. Esto nos dio un r cuadrado de 0.7528. Así que vamos a probar esto. Esta vez vamos a hacer un diferentes variables, también. Model2. Así resumen, model2. Muy bien, así que de nuevo, conseguimos nuestra línea de mejor ajuste aquí. Y este tiempo-- esto está diciendo, básicamente que cada vez que aumentar el peso de un coche por un factor de correo a perder esta cantidad de millas por galón. Y así que esta vez nuestro nivel residual error it-- eso no importa, de verdad. El error estándar residual es básicamente el error estándar que has dejado después quitar la línea de tendencia. Y nuestro r cuadrado aquí es 0,81, que es un poco mejor que lo que teníamos antes, 0,52. Y así que ahora vamos a añadir un plazo para esta regresión. Así que vamos a van retrocediendo millas por galón tanto en el registro de los pesos y, vamos a hacer, q millas, tiempo de milla trimestre. OK, debe tener el-- bien, QseC. QseC. Actually-- lo siento, ¿qué? Voy a llamar a esto algo más aparte model2. Voy a llamar a este MODEL3. Y por lo que ahora podemos hacer resumen MODEL3. Y así, una vez más, esto es, básicamente, lo que se podría esperar. Usted tiene intercepto positivo. La eficacia creciente peso es negativo. Y la efectiva aumentando trimestre tiempo millas es positivo, pero a pesar de en menor medida que el peso. Ahora intuitivamente, puede dar sentido a esto diciendo pensar en los coches deportivos. Hay una aceleración muy rápida, A muy poca veces cuarto de milla. También van a utilizar más gas, mientras que los coches más sensibles van para tener aceleración más lenta, mayores tiempos de cuarto de milla, y utilizar menos gas ,, por lo millas por galón más altos. Excelente. Y por lo que ahora es el momento de trazar algo como esto. Así que vamos a hacer-- tan desnudo huesos que pueden hacer plots-- porque yo he adjuntado esta trama de datos antes-- nos podemos hacer parcelas, mpg en peso. Haga esto un poco más grande. Allí, tenemos básicamente una diagrama de dispersión, pero los puntos son un poco difícil de ver en esto. No me acuerdo de improviso lo que el sintaxis es para cambiar la trama. Así que supongo que esto será un buen momento para que aparezca, hay una muy buena ayuda incorporado función, cotizaciones de ayuda funcionan nombre. Vamos a plantear básicamente algo que te gustaría. Creo que voy a hacer esto realidad Tipo es igual a p para puntos parcelas. ¿Eso cambia nada? Y no, no realmente. Correcto. Por alguna razón, cuando hice esto en mi propia computadora hace un tiempo, todos los puntos de dispersión eran mucho más clara. De todos modos, son el tipo de dispersión de visible? No hay nadie allí. A pocos son, unos pocos allí. Puede especie de verlos, ¿verdad? Así que si queremos añadir una línea de mejor ajuste a esta trama aquí, que es un poco desnudo bones-- quiero dejar un poco más agradable. Principal es igual frente peso. Millas por galón. Una vez más, se puede ver lo útil argumentos opcionales están aquí con también no tener que poner las cosas en un cierto orden con los argumentos de teclado cuando se tiene parcelas, ya que éstas tienen un montón de argumentos. Xlab igual peso, peso, toneladas. Correcto. OK, sí, este dispositivo es ser un poco molesto. Pero se puede ver una especie de allá arriba, hay un título del gráfico en el lateral. Por aquí there's-- en la parte inferior aquí hay etiquetas de los ejes. No me acuerdo de improviso lo que los comandos ars-- lo que las funciones son aumentar el tamaño de esas etiquetas y títulos, pero están ahí. Y por lo que si queremos agregue la línea de mejor ajuste, podríamos hacer algo como-- I tener la sintaxis escrita aquí. Así que recuerde que nosotros simplemente añadimos modelo fue mpg, peso, mtcars. Y así, si quería añadir un mejor ajuste line, lo que podía hacer un modelo de la línea b. Y auge, tenemos una línea de mejor ajuste. Es un poco difícil de ver de nuevo. Estoy bastante lo de la dificultades tecnológicas. Pero se ejecuta básicamente la parte superior izquierda a la inferior derecha. Y si la escala fuera más grande, se podía ver que la intersección es lo que pueda encontrar desde las estadísticas de resumen si escribe modelo de resumen. OK, así que espero que todo el mundo tiene algo así como un sentido de lo que R es, lo que es bueno para. Usted puede hacer mucho mejor que las parcelas esto en su propio tiempo, si lo desea. Así que la interfaz de la función externa. Esto es algo que no suele ser cubierto de conferencias introductorias ni nada de introducción para r. No es probable que vas a necesitar. Sin embargo, me pareció útil en mis propios proyectos en el pasado. Y no hay buena tutorial para ello en línea. Así que sólo voy a todos ustedes se apresure a través de este y luego usted es libre de irse. Y así el extranjero interfaz de la función es lo que que puede utilizar para llamar a ver funciones con una R. Internamente, R se basa en la aritmética de C. R es sólo 64-bit aritmética de punto flotante de C, que es de tipo doble [inaudible]. Y es posible que desee hacer esto por un montón de razones. Por un lado, R es interpretada, es No compilado a código máquina. Así que usted puede reescribir su bucles internos en C y luego llegar la ventaja de utilizar R. Como que es un poco más cómodo que C. Tiene mejor gráfica instalaciones y otras cosas. Y sin dejar de ser capaz de llegar la velocidad máxima de los bucles internos, que es donde realmente lo necesitan. La reutilización de librerías C existentes, eso también es importante. Si usted tiene alguna biblioteca C por igual, No sé, transformadas de Fourier, o algunos muy Arcaico procedimiento utilizado estadísticas en la escuela de astrofísica de energía o algo así, no lo sé. Alta astrofísica energía no es ni siquiera un pensamiento, creo. Pero usted puede hacer que en lugar de tener escribir un puerto R nativa de ellos. Y en el-- y otra vez, como si buscar en la mayoría de las bibliotecas por defecto de R, en la parte interna, las partes internas son va a utilizar la función extranjera interfaz muy ampliamente. Van a tener cosas como Fourier transforma o computación de correlación coeficientes escritos en C, y que van a sólo hay envolturas R alrededor de ellos. La interfaz es una un poco difícil. creo su dificultad es exagerada en una Muchas de las instrucciones que encontrarás. Pero, sin embargo, es un poco confuso. Y yo no he sido capaz de encontrar un buen tutorial para ello, así que esto es ahora. Una vez más, todo este segmento es más para su posterior consulta. No te preocupes por la copia todo hasta ahora. Así que las siguientes instrucciones son para sistemas tipo Unix, Linux, BSD, OS X. No lo sé cómo funciona en Windows, pero por favor, simplemente no hacer su proyecto final en Windows. Usted realmente no quiere. Unix es mucho mejor conjunto para la programación casual. Así que, básicamente extranjera interfaz de la función. Si desea escribir un C función para su uso con R, tiene que tomar todo el argumentos como punteros. Así que para valores individuales, esta significa que está señalando el valor. Para las matrices, este es un puntero al primer elemento, el cual es lo que los nombres de matriz que realmente significan. Una vez más, esto es algo que debe tener bastante totalmente después de p establece cinco. Nombres de matriz son sólo punteros al primer elemento, El tipo de punto flotante es doble. Y su función tiene que volverá vacía. La única manera en que puede En realidad lo que ocurrió decirle R es mediante la modificación de la memoria que R dio a ella a través de la función extranjera interfaz. Así que he escrito este ejemplo de ello, se trata de una función que calcula uso puntos producto de dos vectores. Se necesitan dos argumentos, vec1, vec2, que son los propios vectores, y luego n, que es una longitud, porque, de nuevo, R ha construido en el [inaudible] para averiguar la longitud de los vectores, pero C no. En C, los vectores es una arbitraria porción delimitada de memoria. Así que la forma en que puede calcular productos escalares se acaba de establecer este parámetro de salida a cero y luego recorrer de 1 a protagonizar n, porque n es un puntero a la longitud, sólo tiene que añadir algo para esto parámetro. Y puede ser una buena práctica si vas a hacer esto a escribir dos funciones C separadas. Uno de ellos has-- Uno de ellos sólo toma los argumentos y los tipos que tendrían ordinariamente en C. Por lo que toma una matriz argumentos como punteros. Pero los argumentos de valor único como n, sólo se necesita como valores por copia, sin punteros. Y luego no lo hace [Inaudible] a cabo puntero. Y entonces usted puede tener una diferente, básicamente, función de contenedor que, básicamente, maneja los requisitos de la función extranjera interfaz para usted. La forma en que usted llama esto en R es, una vez Tiene la función de su escrito en C, escribe R shlib cmd, R comando de biblioteca compartida, foo punto c, o lo que sea el nombre de archivo es, y el sistema operativo no shell en la terminal R. Y esto va a crear un biblioteca llamada foo dot así. Y entonces usted puede cargarlo en nuestro script o interactivamente con comando de carga de punto dyn. A continuación, hay una función en I llamado c punto. Esto toma argumentos que son primero el nombre de la función en C que desea llamar. Y entonces todos los parámetros a esa función, que tienen que estar en el orden correcto. Usted tiene que usar este tipo funciones de coerción como entero, como doble, como el carácter, y como lógico. Y luego, cuando se devuelve el lista, que a su vez es sólo una matriz asociada de la nombres de los parámetros y los valores después de la función se ha ejecutado. Así que en este caso, porque prod punto tiene argumentos vec1, vec2 y int n, n out. Poner los puntos c tenemos prod punto, el nombre de la función estamos llamando, vec1, vec2, tipo coaccionar. La longitud de cualquiera de vector, Acabo elegí vec1 arbitrariamente. Sería más robusto decir s Longitud min entero de vec1, longitud vec2. Entonces, justo cuando el doble cero, porque no lo hacemos realidad cuidar lo que entra en la cabo parámetro porque somos poniéndolo a cero de todos modos. Y a continuación, los resultados van a ser un array grande asociado de básicamente vec1 es lo que sea, vec2 es lo que sea. Pero nos interesa a cabo, por lo que podemos sacar eso. Esto es de nuevo, un ejemplo muy juguete de un interfaz de la función externa. Pero si usted tiene que calcular dot productos de vectores masivos en bucles, o si tiene que ver algo más en un bucle, y usted no quiere depender de R, que tiene un poco de sobrecarga construido en él, esto puede ser útil. Una vez más, esto no es generalmente un tema introductorio a R. No está muy bien documentado. Sólo estoy incluyendo porque He encontrado que es útil en el pasado. Así, las malas prácticas. He mencionado que hay un para el bucle en la función. En general, usted no debe, en el idioma, no la usamos. Basado en cómo R implementa iteración internamente, puede ser lento. Acaban también se ven feos. R maneja vectores muy bien, por lo muchas veces no es necesario utilizarlo. Entonces usted puede usualmente reemplazar un vector a menudo con estas funciones llamadas de alta funciones de orden, Mapa, Reducir, Encuentra o filtro. Voy a dar algunos ejemplos de lo que ellos hacen. Mapa es una función de orden superior, ya que toma una función como argumento. Así que usted puede darle una función, usted puede darle una matriz, y va a aplicar la función a cada elemento de la matriz y devolver la nueva matriz. Reducir, básicamente le das es una matriz, que le dan una función que toma dos argumentos. Se aplicará la función primera, la primera discusión con algún valor de arranque. Entonces a ese resultado en el segundo. Entonces a ese resultado en el tercero, luego a ese resultado en el cuarto. Y luego regresar cuando se llega al final. Así, por ejemplo, si quieres calcular la suma de todos los elementos en una matriz, lo que se podría llamar a reducir con [inaudible] reducir una adición función, como func a, b, volver a más b. Y a continuación, iniciar un valor de 0. Y todo esto, usted puede encontrarlos se describe en la documentación de R, en cualquier libro de texto sobre programación funcional. También hay esta clase de funciones llamadas funciones se aplican, que yo no-- son un poco difícil de explicar, pero si nos fijamos en [inaudible] reservado que he citado al principio, él les explica bastante bien en su apéndice sobre la programación R. Más acerca de las prácticas, añadiendo a los vectores. ¿Sí? Creo que debería corregir eso. En esa primera línea, flecha vec, esa flecha no debería estar allí. Puede asignar a un vector, de nuevo, por tomar su longitud más 1 y la asignación de un valor a eso. Que se extenderá el vector, o puede hacer equals vec c, nuevovalor vec. Una vez más, si se utiliza C con un argumento como un vector, la jerarquía resultante se aplana. Por lo que usted acaba de obtener un vector eso se extendió por 1. Nunca haga esto. La razón por la que no debe hacer esto es la siguiente. Al asignar un vector, que le da una cierta cantidad de memoria. Si aumenta ese tamaño del vector, tiene que reasignar el vector en algún otro lugar. Y así reasignación es bastante caro. No voy a entrar en los detalles de cómo asignadores de memoria se implementan en el nivel del sistema operativo, pero se necesita mucho tiempo encontrar un nuevo trozo de memoria. Y también, si usted es re-asignación de lotes y lotes de forma progresiva más grande trozos, que terminan con algo que se llama fragmentación de la memoria, donde la memoria disponible es dividido en un montón de pequeños bloques en el punto de vista asignadores de memoria. Y lo que es más y más difícil para encontrar la memoria para otras cosas. Así que en lugar, si lo que necesita hacer esto, si usted necesita para hacer crecer un vector de un extremo a la siguiente, en lugar de añadir a ella constantemente, debe pre-asignarlo. Flecha Vec, longitud del vector es igual a 1.000, o lo que sea. Y a continuación, puedes asignar a del vector de valores de un solo un tiempo después de que ha asignado una vez. Me encontré con esto, de nuevo, mi trabajo de verano cuando estaba escribiendo NRA diferencial resolución de ecuaciones. No simbólica numérica. La idea es que una vez que tienes un valor para su solución, utiliza que para calcular la siguiente. Así que mi natural, ingenuo impulso fue decir OK, así que voy a empezar con un vector eso es un valor sustancial. Calcular a partir de que el siguiente valor que va en mi solución vectorial, y adjuntará dicha. Crear algo más, anexar eso. Fue muy, muy lentamente. Y una vez que me di cuenta de esto y cambié mi sistema añadiendo a partir de este vector al igual que entre 10.000 y 100.000 veces, apenas pre-asignación de un vector y sólo correr con eso. Tengo más de 1.000 veces la velocidad arriba. Así que esta es una muy común trampa para la programación R. Si usted necesita para construir un vector pieza por pieza, antes de asignar la misma. Otro viaje común up-- esta es mi última diapositiva, no worry-- es el manejo de errores. R, para ser franco, ¿no realmente hacer esto muy bien. Hay una gran cantidad de problemas que pueden surgir. Por ejemplo, si usted consigue un array o un vector de una función que estabas esperando un solo valor que venir de, o viceversa, y que pase esto en una función que Usted escribió esperando un solo valor, que puede ser un problema. Ciertas funciones devolver null como lo hacen, por ejemplo, lectura de una clave inexistente en una lista. Pero nula no es como C donde si intenta leer de un viejo puntero, [inaudible] a puntero nulo, sólo SEG fallas y si estás en el depurador se te dice exactamente dónde se encuentra. En su lugar, será nula hacer-- funciones va a hacer cosas impredecibles si son nulos mano. Al igual que si usted está entregado max nulo, te dará infinito negativo. Y así, sí. Y así sucedió esto a mí una vez cuando tuve cambiado un montón de campos en mi estructura de lista una vez sin cambiar a otra parte cuando estaba leyendo de ellos. Y luego recibí todo tipo de azar resultados infinito apareciendo y yo no sabía de dónde venían. Y, por desgracia, no hay hay modo estricto reales R donde se puede decir si algo parece que podría ser un error, simplemente parar allí, así que puedo ser disciplinado y arreglar eso. Sin embargo, hay algo llamado parada si no. Esto es equivalente a afirmar de C, si usted ha hablado de eso. No creo que C afirman es un tema de la conferencia, pero su jefe de sección podría haber ido por encima. Y parar si no básicamente toma ninguna predicado, por lo que cualquier declaración que puede ser verdadera o falsa. Y si es falsa, que se detenga su programa. Le dice exactamente lo que la línea eran y qué estado fallido. Y esto muy útil, por ejemplo, comprobación de cordura, entradas de función. Así que si usted tiene una función y espera, por ejemplo, si usted me debe dar una fecha, que quiero las fechas sean sólo un vector de longitud 1 y en algún lugar entre el 1 y 31. Y si no, lo sé algo ha ido mal. Y decido parar allí antes de esto tiene golpe al azar sobre los efectos con el código de que es más difícil de rastrear a través. Así que esa es una de las posibles utilizar para la parada si no. De todos modos, en Aceptar. Así que ese es el final. Muchas gracias por haber venido. Yo soy un amateur en esto. Así que lo siento si estás aburrido o confundido o lo que sea. Estoy feliz de tener preguntas por correo electrónico en connorharris@college.harvard.edu. Esto va también para todo el mundo viendo esto en directo o después. También, aunque no estoy un TF, también soy muy dispuesto a servir como un oficial asesor para cualquier persona que es utilizando R en un proyecto final. Si desea que, a continuación, sólo hablar con su TF y luego me escriba un correo electrónico para Sé lo que estás trabajando y para que pueda configurar reunión veces con usted si usted quiere. Así que de nuevo, muchas gracias. Espero que lo hayan disfrutado. AUDIENCIA: [inaudible]. CONNER HARRIS: Por supuesto. AUDIENCIA: ¿Qué clase de proyecto sería un estudiante CS utilizar R para? CONNER HARRIS: Así que si usted no está haces algo que es puramente en la minería de datos, por ejemplo, y hay un montón de cosas usted podría hacer con ese con los datos minería y aprendizaje automático. Es posible que desee utilizar R para un componente de algo. Me crié, en un principio, el ejemplo de si usted está escribiendo una página web y desea ejecutar automatizado análisis estadístico de su servidor registros en un cierto tiempo todos los días, eso podría ser algo que es muy fácil de hacer en tan sólo una breve R script que puede programar para ejecutar cada noche, por ejemplo. Y estoy seguro que, si no hay ninguna razón por la que habría quiero estadísticas o capacidades gráficas y tener esta carrera automáticamente en lugar de tener que interactuar con las cosas en Excel, por ejemplo, eso es algo es posible que desee utilizar R para. Así que más preguntas antes de irme? ¿No? Muy bien, bueno, de nuevo, gracias gracias por venir.