Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PROGRAMACION ESTADISTICA CON R (Clase1)

PROGRAMACION ESTADISTICA CON R (Clase1)

CENTRO DE TECNOLOGIAS DE INFORMACION Y COMUNICACIONES
Programa de Iniciacion Tecnologica PIT 2020-I
Abraham Zamudio

Avatar for Abraham Zamudio

Abraham Zamudio

June 15, 2025
Tweet

More Decks by Abraham Zamudio

Other Decks in Education

Transcript

  1. PROGRAMACI´ ON ESTAD´ ISTICA CON R Abraham Zamudio CENTRO DE

    TECNOLOG´ IAS DE INFORMACI´ ON Y COMUNICACIONES Programa de Iniciacion Tecnologica PIT 2020-I Enero 2020 Abraham Zamudio (GMMNS) 1 / 50
  2. ¿Cu´ al es el papel de un profesional en Ciencia

    de datos? Dentro de este ecosistema y en los albores del 5G su funci´ on es simple y extremadamente compleja a la vez. El Director de Ingenier´ ıa de Datos de Slack, Josh Wills, plantea una curiosa definici´ on sobre el rol del Cient´ ıfico de Datos, como la persona que sabe m´ as de estad´ ıstica que cualquier programador y que a la vez sabe m´ as de programaci´ on que cualquier estad´ ıstico. Introducci´ on Abraham Zamudio (GMMNS) 4 / 50
  3. ¿Qu´ e es el An´ alisis de Datos? El an´

    alisis de datos es el proceso de evaluar datos utilizando herramientas anal´ ıticas y estad´ ısticas para descubrir informaci´ on ´ util y ayudar en la toma de decisiones empresariales. Existen varios m´ etodos de an´ alisis de datos que incluyen miner´ ıa de datos, an´ alisis de texto, inteligencia de negocios, visualizaci´ on de datos, procesamiento distribuido, calculo de pron´ osticos ,etc. Las conclusiones obtenidas ser´ an ´ utiles para el desarrollo de pro- ductos demandados en el mercado o la generaci´ on de oportunida- des de negocio en una empresa. Introducci´ on Abraham Zamudio (GMMNS) 5 / 50
  4. ¿Qu´ e es un Cient´ ıfico de Datos? Desarrolladores de

    software con s´ olidas bases en matem´ aticas (estad´ ısti- cas), que ahora est´ an potencialmente demandados como nunca antes. A medida que los conjuntos de datos se han hecho m´ as grandes y las habilidades computacionales se han vuelto m´ as cr´ ıticas para trabajar con datos, lo que sol´ ıa ser un simple reto se ha vuelto casi imposible. La actual escasez de talentos significa que necesitamos identificar y desarrollar personas con antecedentes en matem´ atica, estad´ ıstica, ingenier´ ıa de software e investigaci´ on cient´ ıfica. Introducci´ on Abraham Zamudio (GMMNS) 6 / 50
  5. Ecosistema de la Ciencia de datos (I) El conjunto de

    tecnolog´ ıas utilizadas para hacer ciencia de datos var´ ıa seg´ un las organizaciones. Cuanto mayor es la organizaci´ on o mayor es la cantidad de datos que se procesan o ambos, mayor es la complejidad del ecosistema tecnol´ ogico que respalda las actividades de ciencia de datos. En la mayor´ ıa de los casos, este ecosistema contiene herramien- tas y componentes de un n´ umerode diferentes proveedores de software, procesando datos en muchos formatos diferentes. Existe un espectro de enfoques entre los que una organizaci´ on puede seleccionar cuando desarrolla su propio ecosistema de ciencia de datos. En un extremo del espectro, la organizaci´ on puede decidir invertir en un conjunto de herra- mientas integradas comerciales.En el otro extremo, podr´ ıa construir un ecosistema a medida integrando un conjunto de herramientas y lengua- jes de c´ odigo abierto. Entre estos dos extremos, algunos proveedores de software ofrecen soluciones que consisten en una mezcla de productos comerciales y productos de c´ odigo abierto. Introducci´ on Abraham Zamudio (GMMNS) 7 / 50
  6. Ecosistema de la Ciencia de datos (II) Sin embargo, aunque

    la combinaci´ on particular de herramientas variar´ a de una organizaci´ on a otra, existe una coincidencia en t´ erminos de los componentes que est´ an presentes en la mayor´ ıa de las arquitecturas de ciencia de datos. La figura del siguiente slide ofrece una descripci´ on general de alto nivel de una arquitectura de datos t´ ıpica. Esta arquitectura no es solo para entornos de big data, sino tambi´ en para entornos de datos de todos los tama˜ nos. En este diagrama, las tres ´ areas principales consisten en fuentes de datos, donde se generan todos los datos en una organizaci´ on; almacenamiento de datos, donde los datos se almacenan y procesan; y aplicaciones, donde los datos se comparten con los consumidores de estos datos. Introducci´ on Abraham Zamudio (GMMNS) 8 / 50
  7. Ecosistema de la Ciencia de datos (III) Todas las organizaciones

    tienen aplicaciones que generan y capturan da- tos sobre clientes, transacciones y datos operativos sobre todo lo que tiene que ver con la forma en que opera la organizaci´ on. Dichas fuentes de datos y aplicaciones incluyen gesti´ on de clientes, pedidos, fabrica- ci´ on, entrega, facturaci´ on, banca, finanzas, gesti´ on de relaciones con clientes (CRM), centro de llamadas, aplicaciones de planificaci´ on de re- cursos empresariales (ERP), etc. Estos tipos de aplicaciones se conocen com´ unmente como sistemas de procesamiento de transacciones en l´ ınea (OLTP). Para muchos proyectos de ciencia de datos, los datos de estas aplicaciones se utilizar´ an para formar el conjunto de datos de entrada inicial para los algoritmos de ML. Introducci´ on Abraham Zamudio (GMMNS) 9 / 50
  8. Ecosistema de la Ciencia de datos (IV) Figura: Hortonworks (2013)

    Introducci´ on Abraham Zamudio (GMMNS) 10 / 50
  9. Programaci´ on b´ asica en R Programaci´ on b´ asica

    en R Abraham Zamudio (GMMNS) 11 / 50
  10. ¿Por qu´ e aprender R? R fue dise˜ nado por

    estad´ ısticos y estaba especializado en programaci´ on estad´ ıstica, por lo que se le conoce como la lengua franca de las estad´ ısti- cas computacionales. R es ideal para el aprendizaje autom´ atico (machine learning), la visualizaci´ on y el an´ alisis de datos, as´ ı como algunas ´ areas de la computaci´ on cient´ ıfica. El estilo de codificaci´ on es bastante f´ acil. Es open source. No es necesario pagar ning´ un cargo de suscripci´ on. Al 2019, se tenia mas de 14000 paquetes en el CRAN. El apoyo de la comunidad es abrumador. Hay numerosos foros para ayudarte. Tiene soporte para HPC. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 12 / 50
  11. Instalar R y Rstudio 1. R 2. Rstudio Programaci´ on

    b´ asica en R Abraham Zamudio (GMMNS) 13 / 50
  12. Instalar R y Rstudio Programaci´ on b´ asica en R

    Abraham Zamudio (GMMNS) 14 / 50
  13. Funciones : getwd(), setwd,help Estableciendo directorios de trabajo R siempre

    apunta a un directorio de la computadora, se puede averiguar en qu´ e directorio se encuentra ejecutando la funci´ on getwd() (obtener directorio de trabajo). Esta funci´ on no tiene argumentos Funci´ on getwd() 1 getwd () Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 15 / 50
  14. Funciones : getwd , setwd() ,help Estableciendo directorios de trabajo

    Para cambiar de directorio de trabajo, use setwd() y especifique la ruta a la carpeta deseada. Funci´ on setwd() 1 setwd ( ” . . / Desktop / Curso R CTIC/” ) 2 getwd () 3 [ 1 ] ”TU USUARIO/ Desktop / Curso R CTIC” Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 16 / 50
  15. Funciones : getwd , setwd, help() Consultando la ayuda en

    linea de R ¿C´ omo obtenemos ayuda en R? Veamos los siguientes comandos . Funci´ on help() 1 help . s t a r t () 2 help (mean) 3 ?mean 4 help . search ( ”mean” ) Otras fuentes de ayuda son las listas de correo : R-help – Main R Mailing List: Primary help R-help-es – Ayuda sobre R en espa˜ nol stackoverflow - R Programming Language Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 17 / 50
  16. C´ alculos b´ asicos en R 1 > 2 +

    3 2 > 5 3 4 > (3 ∗ 8) / (2 ∗ 3) 5 > 4 6 7 > log (12) 8 > 1.07 9 10 > s q r t (121) 11 > 11 Del mismo modo, puede experimentar varias combinaciones de c´ alculos y obtener los resultados. 1 # En R se puede a s i g n a r e l v a l o r a 2 # una v a r i a b l e con <− o = 3 > x <− 8 + 7 4 > x 5 > 15 Una vez que creamos una variable, ya no obtienes la salida directamente (como la calculadora), a menos que llames a la variable en la siguiente l´ ınea. Recuerde, las variables pueden ser alfabetos, alfanum´ ericos pero no num´ ericos. No puedes crear variables num´ ericas. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 19 / 50
  17. Fundamentos de la programaci´ on en R (i) Todo lo

    que ves o creas en R es un objeto. Un vector, matriz, data- frame, incluso una variable es un objeto. R lo trata de esa manera. Entonces, R tiene 5 clases b´ asicas de objetos. Esto incluye: 1. Character 2. Numeric (N´ umeros reales) 3. Integer (n´ umeros enteros) 4. Complex 5. Logical (True / False) Un objeto puede tener los siguientes atributos: 1. names, dimension names 2. dimensions 3. class 4. length Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 20 / 50
  18. Fundamentos de la programaci´ on en R (ii) Por ejemplo:

    creemos vectores de diferentes clases. Podemos crear vec- tores usando la funci´ on c(). 1 > a <− c ( 1 . 8 , 4 . 5 ) #numeric 2 > b <− c (1 + 2 i , 3 − 6 i ) #complex 3 > d <− c (23 , 44) #i n t e g e r 4 > e <− v e c t o r ( ” l o g i c a l ” , l e ng th = 5) Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 21 / 50
  19. Tipos de datos en R (i) vector Un vector contiene

    objetos de la misma clase. Pero tambi´ en puedes mezclar objetos de diferentes clases. Cuando los objetos de diferentes clases se mezclan en una lista, ocurre la coerci´ on. Este efecto hace que los objetos de diferentes tipos se conviertan en una clase. Por ejemplo: 1 > qt <− c ( ”Time” , 24 , ” October ” , TRUE, 3.33) #c h a r a c t e r 2 > ab <− c (TRUE, 24) #numeric 3 > cd <− c ( 2 . 5 , ”May” ) #c h a r a c t e r Para verificar la clase de cualquier objeto, utilice la funci´ on class(”nombre de vector”). 1 > c l a s s ( qt ) Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 22 / 50
  20. Tipos de datos en R (ii) vector Para convertir la

    clase de un vector, puede usar el comando as. 1 > bar <− 0:5 2 > c l a s s ( bar ) 3 > ” i n t e g e r ” 4 > as . numeric ( bar ) 5 > c l a s s ( bar ) 6 > ” numeric ” 7 > as . c h a r a c t e r ( bar ) 8 > c l a s s ( bar ) 9 > ” c h a r a c t e r ” Del mismo modo, puede cambiar la clase de cualquier vector. Pero, deber´ ıas prestar atenci´ on aqu´ ı. Si intentas convertir un vector de caracteres a num´ erico, se introducir´ an NA. Por lo tanto, debe tener cuidado al usar este comando. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 23 / 50
  21. Tipos de datos en R (iii) listas Una lista es

    un tipo especial de vector que contiene elementos de dife- rentes tipos de datos. Por ejemplo: 1 > my l i s t <− l i s t (22 , ”ab” , TRUE, 1 + 2 i ) 2 > my l i s t Como se puede ver, el resultado de una lista es diferente al de un vector. Esto se debe a que todos los objetos son de diferentes tipos. El corchetes dobles [[1]] muestra el ´ ındice del primer elemento y as´ ı sucesivamente. Por lo tanto, puede extraer f´ acilmente el elemento de las listas seg´ un su ´ ındice. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 24 / 50
  22. Tipos de datos en R (iv) matrices Cuando se introduce

    un vector en el formato de fila y columna, es decir, un atributo de dimensi´ on, se convierte en una matriz. Una matriz est´ a representada por un conjunto de filas y columnas. Es una estructura de datos bidimensional. Consiste en elementos de la misma clase. Creemos una matriz de 3 filas y 2 columnas: 1 > my matrix <− matrix ( 1 : 6 , nrow=3, ncol =2) 2 > my matrix 3 4 > dim (my matrix ) 5 6 > a t t r i b u t e s (my matrix ) Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 25 / 50
  23. Tipos de datos en R (v) matrices Como puede ver,

    las dimensiones de una matriz se pueden obtener uti- lizando el comando dim() o el comando attributes(). Para extraer un elemento particular de una matriz, simplemente use el ´ ındice. Por ejem- plo: 1 > my matrix [ , 2 ] #e x t r a e l a segunda columna 2 > my matrix [ , 1 ] #e x t r a e l a primera columna 3 > my matrix [ 2 , ] #e x t r a e l a segunda f i l a 4 > my matrix [ 1 , ] #e x t r a e l a primera f i l a Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 26 / 50
  24. Tipos de datos en R (vi) matrices Como hecho interesante,

    tambi´ en se puede crear una matriz a partir de un vector. Todo lo que necesita hacer es asignar la dimensi´ on dim() : 1 > age <− c (23 , 44 , 15 , 12 , 31 , 16) 2 3 > dim ( age ) <− c (2 ,3) 4 5 > c l a s s ( age ) Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 27 / 50
  25. Tipos de datos en R (vii) matrices Tambi´ en se

    puede unir dos vectores usando las funciones cbind() y rbind(). Pero, aseg´ urese de que ambos vectores tengan el mismo n´ umero de elementos. Si no, devolver´ a los valores de NA. 1 > x <− c (1 , 2 , 3 , 4 , 5 , 6) 2 > y <− c (20 , 30 , 40 , 50 , 60) 3 > cbind ( x , y ) 4 > cbind ( x , y ) 5 > c l a s s ( cbind ( x , y ) ) Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 28 / 50
  26. Tipos de datos en R (viii) Dataframes Este es el

    miembro m´ as utilizado de la familia de tipos de datos. Se utiliza para almacenar datos tabulados (Tipo una de calculo de excel). Es diferente de la matriz. En una matriz, cada elemento debe tener la misma clase. Pero, en un dataframe , puede poner una lista de vec- tores que contienen diferentes clases. Esto significa que cada columna de un dataframe act´ ua como una lista. Cada vez que lea datos en R, se almacenar´ an en forma de un dataframe. Por lo tanto, es importante comprender los comandos m´ as utilizados en los dataframes : 1 > df <− data . frame (name = c ( ” ash ” , ” jane ” , ” paul ” , ”mark” ) , s c o r e = c (67 ,56 ,87 ,91) ) 2 > df 3 > dim ( df ) 4 > s t r ( df ) 5 > nrow ( df ) 6 > ncol ( df ) Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 29 / 50
  27. Tipos de datos en R (ix) Dataframes Observaci´ on 1

    Las variables continuas son aquellas que pueden tomar cualquier forma, como 1, 2, 3.5, 4.66, etc. Las variables categ´ oricas son aquellas que toman solo valores discretos como 2, 5, 11, 15, etc. En R, los valores categ´ oricos est´ an representados por factores. En df, name es una variable de tipo factor que tiene 4 niveles ´ unicos. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 30 / 50
  28. Tipos de datos en R (ix) Dataframes Ahora comprendamos el

    concepto de valores perdidos (missing values) en R. Esta es una de las partes m´ as dolorosas pero cruciales del mode- lo predictivo. Debe conocer todas las t´ ecnicas para lidiar con ellas. Los valores faltantes en R est´ an representados por NA y NaN. Ahora com- probaremos si un conjunto de datos tiene valores faltantes (utilizando el mismo dataframe df). 1 # insertamos NA en l a s dos primeras 2 # f i l a s de l a 2da columna 3 > df [ 1 : 2 , 2 ] <− NA 4 > df 5 6 # v e r i f i c a m o s e l conjunto de datos entero en 7 # busqueda de datos NA y r e t o r n a una v a r i a b l e 8 # l o g i c a 9 > i s . na ( df ) Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 31 / 50
  29. Tipos de datos en R (x) Dataframes Los valores faltantes

    dificultan los c´ alculos normales en un conjunto de datos. Por ejemplo, digamos, queremos calcular la media de la varia- ble score. Como faltan dos valores, no se puede hacer directamente. Veamos: 1 > mean( df $ s c o r e ) 2 3 > mean( df $ score , na . rm = TRUE) El uso del par´ ametro na.rm = TRUE le dice a R que ignore los NA y calcule la media de los valores restantes en la columna seleccionada (score). Para eliminar filas con valores de NA en un dataframe, puede usar na.omit: 1 > new df <− na . omit ( df ) 2 3 > new df Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 32 / 50
  30. Tipos de datos en R (x) Dataframes Cuando se instalan

    paquetes/librer´ ıas de R, estos vienen con muchos dataframes de ejemplo.Para ver el listado de paquetes ejecute la funci´ on : 1 data () Otros paquetes con data frames de ejemplo son : MASS ISLR boot cadData DAAG Ecdat forecast HistData Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 33 / 50
  31. Funciones en R (i) Ya hemos visto el uso de

    funciones, aunque probablemente no pensaste mucho en ello cuando viste expresiones como: 1 l e n g t h ( ”qax” ) No lo pensaste porque no hab´ ıa nada sorprendente al respecto. Simplemente usa la notaci´ on matem´ atica habitual para las funciones: f (x). Si desea llamar a una funci´ on, simplemente use esta notaci´ on y asigne a la funci´ on sus par´ ametros entre par´ entesis. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 34 / 50
  32. Funciones en R (ii) Observaci´ on En R, tambi´ en

    puede usar los nombres de los par´ ametros al llamar a una funci´ on, adem´ as de las posiciones. Si tiene una funci´ on f (x, y) de dos par´ ametros, x e y, llamar a f (5,10) significa llamar a f con el par´ ametro x establecido en 5 y el par´ ametro y establecido en 10. 1 f (5 , 10) 2 f ( x = 5 , y = 10) 3 4 # Si e s p e c i f i c a l o s nombres de l o s parametros , e l orden 5 # ya no importa , por l o que otra llamada de fun cion 6 # e q u i v a l e n t e s e r i a : 7 f ( y = 10 , x = 5) 8 9 # Puede combinar l a s dos formas de pasar parametros 10 # a f u n c i o n e s siempre que coloque todos l o s parametros 11 # p o s i c i o n a l e s antes de l o s nombrados . 12 f (5 , y = 10) Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 35 / 50
  33. Funciones en R (iii) Escribiendo tus propias funciones Puede escribir

    f´ acilmente sus propias funciones. Utiliza expresiones de funci´ on para definir una funci´ on y una asignaci´ on para dar un nombre a una funci´ on. Por ejemplo, para escribir una funci´ on que calcule el cuadrado de un n´ umero, puede escribir: 1 square <− f u n c t i o n ( x ) x∗∗2 2 square ( 1 : 4 ) Las funciones que escribe usted mismo funcionan como cualquier funci´ on que ya sea parte de R o parte de un paquete R. Sin embargo, con una excepci´ on: no tendr´ a documentaci´ on para sus propias funciones a menos que la escriba. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 36 / 50
  34. Funciones en R (iv) Escribiendo tus propias funciones La funci´

    on square solo realiza una operaci´ on aritm´ etica simple en su entrada. A veces quieres que la funci´ on haga m´ as de una sola cosa. Si desea que la funci´ on realice varias operaciones con su entrada, necesita varias declaraciones para la funci´ on, y en ese caso debe darle un cuerpo de varias declaraciones, y dicho cuerpo debe ir entre llaves (). 1 square and s u b t r a c t <− f u n c t i o n ( x , y ) { 2 squared <− x ∗∗ 2 3 squared − y 4 } 5 6 square and s u b t r a c t ( 1 : 5 , rev ( 1 : 5 ) ) Observaci´ on (Verifique la documentaci´ on de rev para ver qu´ e est´ a pasando aqu´ ı. Aseg´ urese de comprender lo que est´ a haciendo este ejemplo). help(rev) Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 37 / 50
  35. Funciones en R (v) Escribiendo tus propias funciones El resultado

    de una funci´ on, lo que devuelve como valor cuando la llamas, es la ´ ultima declaraci´ on o expresi´ on (realmente no hay ninguna diferen- cia entre las declaraciones y las expresiones en R; son lo mismo). Sin embargo, se puede hacer que el valor de retorno sea expl´ ıcito, utilizando la expresi´ on return() . 1 square and s u b t r a c t <− f u n c t i o n ( x , y ) r e t u r n ( x ∗∗ 2 − y ) Por lo general, esto solo se usa cuando desea devolver un valor antes del final de la funci´ on, y para ver ejemplos de esto, realmente necesita estructuras de control. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 38 / 50
  36. Funciones en R (vi) Escribiendo tus propias funciones Observacion Sin

    embargo, un punto importante aqu´ ı, si est´ a acostumbrado a programar en otros lenguajes: la expresi´ on return() debe incluir los par´ entesis. En la mayor´ ıa de los lenguajes de programaci´ on, puedes escribir: 1 square and s u b t r a c t <− f u n c t i o n ( x , y ) r e t u r n x ∗∗ 2 − y Esto no funciona para R. Int´ entalo y obtendr´ as un error. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 39 / 50
  37. Un vistazo r´ apido a las estructuras de control (i)

    Si bien llegas muy lejos simplemente usando expresiones, para muchos c´ alculos necesitas una programaci´ on m´ as compleja. No es que sea par- ticularmente complejo, pero debes poder seleccionar una opci´ on de qu´ e hacer en funci´ on de los datos y formas de iterar a trav´ es de los datos. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 40 / 50
  38. Un vistazo r´ apido a las estructuras de control (ii)

    Sentencia IF if (<boolean expression>) <expression> 1 # Esto no hara nada 2 i f (2 > 3) ” f a l s e ” 3 # Esto siempre se e j e c u t a 4 i f (3 > 2) ” t r u e ” 5 # # [ 1 ] ” t r u e ” Para expresiones como las que siguen a continuaci´ on , donde no altera- mos el estado del programa al evaluar la expresi´ on, no hay mucho efecto al evaluar la expresi´ on if. Si, por ejemplo, lo asignamos a una variable, habr´ a un efecto. 1 x <− ” foo ” 2 i f (2 > 3) x <− ” bar ” 3 x 4 # # [ 1 ] ” foo ” 5 i f (3 > 2) x <− ”baz” 6 x 7 # # [ 1 ] ”baz” Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 41 / 50
  39. Un vistazo r´ apido a las estructuras de control (iii)

    Sentencia IF Si desea tener efectos para las expresiones TRUE y FALSE, tiene esto: if (<boolean expression>) <true expr> else <false expr> 1 i f (2 > 3) ” bar ” e l s e ”baz” 2 # # [ 1 ] ”baz” Si desea nuevas l´ ıneas en declaraciones if, ya sea que tenga una parte else o no, necesita llaves. Esto no funcionar´ a: 1 i f (2 > 3) 2 x <− ” bar ” Pero esto si 1 i f (2 > 3) { 2 x <− ” bar ” 3 } Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 42 / 50
  40. Un vistazo r´ apido a las estructuras de control (iv)

    Sentencia IF Sin embargo, no puede usarlo para expresiones vectorizadas, ya que la expresi´ on booleana, si le da un vector, evaluar´ a el primer elemento en el vector: 1 x <− 1:5 2 i f ( x > 3) ” bar ” e l s e ”baz” 3 # # Warning i n i f ( x > 3) ” bar ” e l s e ”baz ”: the 4 # # c o n d i t i o n has l e n g th > 1 and only the f i r s t 5 # # element w i l l be used 6 # # [ 1 ] ”baz” Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 43 / 50
  41. Un vistazo r´ apido a las estructuras de control (v)

    Sentencia IF Si desea una versi´ on vectorizada de sentencias if, puede usar la funci´ on ifelse: 1 x <− 1:5 2 i f e l s e ( x > 3 , ” bar ” , ”baz” ) 3 # # [ 1 ] ”baz” ”baz” ”baz” ” bar ” ” bar ” (Lea la documentaci´ on de ifelse para obtener los detalles de esta funci´ on). Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 44 / 50
  42. Un vistazo r´ apido a las estructuras de control (vi)

    Sentencia IF Esto, por supuesto, tambi´ en tiene consecuencias para escribir funciones que usan declaraciones if. Si su funci´ on contiene un cuerpo que no est´ a vectorizado, su funci´ on tampoco lo estar´ a. 1 maybe square <− f u n c t i o n ( x ) { 2 i f ( x % % 2 == 0) { 3 x ∗∗ 2 4 } e l s e { 5 x 6 } 7 } 8 maybe square ( 1 : 5 ) 9 # # Warning i n i f ( x % % 2 == 0) {: the c o n d i t i o n has 10 # # l e n g t h > 1 and only the f i r s t element w i l l be used 11 # # [ 1 ] 1 2 3 4 5 Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 45 / 50
  43. Un vistazo r´ apido a las estructuras de control (vii)

    Sentencia IF Si desea una funci´ on vectorizada, debe usar ifelse (), o puede usar la funci´ on vectorize() para traducir una funci´ on que no est´ a vectorizada en una. 1 maybe square <− f u n c t i o n ( x ) { 2 i f e l s e ( x % %2 == 0 , x ∗∗ 2 , x ) 3 } 4 maybe square ( 1 : 5 ) 5 # # [ 1 ] 1 4 3 16 5 Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 46 / 50
  44. Un vistazo r´ apido a las estructuras de control (viii)

    Sentencia IF Vectorizaci´ on de una funci´ on 1 maybe square <− f u n c t i o n ( x ) { 2 i f ( x % % 2 == 0) { 3 x ∗∗ 2 4 } e l s e { 5 x 6 } 7 } 8 maybe square <− V e c t o r i z e ( maybe square ) 9 maybe square ( 1 : 5 ) 10 # # [ 1 ] 1 4 3 16 5 La funci´ on Vectorize es lo que se conoce como un functor, una funci´ on que toma una funci´ on como entrada y devuelve una funci´ on. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 47 / 50
  45. Un vistazo r´ apido a las estructuras de control (ix)

    Sentencia FOR Para recorrer elementos en un vector, se usan la estructura for. 1 x <− 1:5 2 t o t a l <− 0 3 f o r ( element i n x ) t o t a l <− t o t a l + element 4 t o t a l 5 # # [ 1 ] 15 Al igual que con las declaraciones if, si desea que el cuerpo contenga m´ as de una expresi´ on, debe ponerla entre llaves. Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 48 / 50
  46. Un vistazo r´ apido a las estructuras de control (x)

    Sentencia FOR La instrucci´ on for se ejecuta a trav´ es de los elementos de un vector. Si quiere los ´ ındices, puede usar la funci´ on seq along(), que, cuando se le da un vector como entrada, devuelve un vector de ´ ındices. 1 x <− 1:5 2 t o t a l <− 0 3 f o r ( index i n seq along ( x ) ) { 4 element <− x [ index ] 5 t o t a l <− t o t a l + element 6 } 7 t o t a l 8 # # [ 1 ] 15 Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 49 / 50
  47. Un vistazo r´ apido a las estructuras de control (xi)

    Sentencia While Tambi´ en hay sentencias while para bucles. Estos se repiten siempre que una expresi´ on sea verdadera. 1 x <− 1:5 2 t o t a l <− 0 3 index <− 1 4 w h i l e ( index <= l e n g th ( x ) ) { 5 element <− x [ index ] 6 index <− index + 1 7 t o t a l <− t o t a l + element 8 } 9 t o t a l 10 # # [ 1 ] 15 Programaci´ on b´ asica en R Abraham Zamudio (GMMNS) 50 / 50