1.1 ¿Que es R?

R es lenguaje de programación multiplataforma y un entorno de software libre y gratuito para computación estadística y gráficos. R es parte del sistema GNU y se distribuye bajo la licencia GNU; compila y se ejecuta en una amplia variedad de plataformas UNIX, Windows y MacOS.

1.1.1 Información básica sobre el proyecto R:

• Página oficial del proyecto R: https://www.r-project.org/

• R fue inicialmente creado por los investigadores Ross Ihaka y Robert Gentleman de la Universidad de Auckland, Nueva Zelanda, en 1993.

• A partir de 1997 el desarrollo del código fuente (o base-R) de R es llevado por un grupo de programadores conocido como “The R-core team”.

1.1.2 Buenas características del software R

• Lenguaje top e intuitivo: hoy por hoy es de los mejores programas para análisis estadístico y ciencia de datos en general. Se encuentra ubicado en el top 20 de los lenguajes de programación más populares. Véase el TIOBE Index y para una discusión más detallada sobre los mejores lenguajes de programación para la Ciencia de Datos, vea Top programming languages for data scientists in 2022.

• Software libre y gratuito: existe un repositorio oficial de paquetes: Comprehensive R Archive Network o CRAN y otros repositorios completarios en Github, desde donde pueden descargarse de manera totalmente gratuita.

• Ampliamente extensible: R es un proyecto colaborativo y abierto, esto permite que los usuarios pueden publicar paquetes que extienden los métodos y capacidades de su configuración básica.

• Comunidad colaborativa y prolífica : existe una abundancia de paquetes y comunidad de usuarios que comparten sus conocimientos, esto facilita la documentación y resolución de dudas.

1.2 ¿Qué es RStudio?

RStudio es un entorno de desarrollo integrado (IDE, por sus siglas en inglés) para R y Python, con una consola, un editor de resaltado de sintaxis que admite la ejecución directa de código y herramientas para el ploteo, el historial, la depuración y la gestión del espacio de trabajo.

1.2.1 Información básica sobre el IDE RStudio:

• Página oficial de RStudio: https://www.rstudio.com/.
• RStudio fue lanzado por primera vez el 28 de febrero de 2011 por una empresa con sede en Boston.
• La versión de escritorio RStudio Desktop de RStudio es libre y gratuita.

1.2.2 ¿Cuál es la necesidad de RStudio?

• Dado que la interfaz de usuario (GUI, Graphical User Interface) de R no es muy amigable ni versátil, RStudio nos permitirá interactuar con R de forma más amigable, además de facilitar muchas de las tareas de programación y análisis de datos en R. • RStudio facilita trabajar con R pues incorpora servicios integrales tales como:
– el resaltado de sintaxis,
– autocompletado de código y sangría inteligente,
– ejecutar código R directamente desde el editor de código fuente,
– documentación y soporte integrado,
– administración sencilla de múltiples directorios de trabajo mediante proyectos.
– visor de datos,
– depurador, detección y corrección de errores, etc

1.2.3 Componentes del entorno de trabajo de RStudio

El entorno de desarrollo integrado conocido como RStudio está dividido en cuatro componentes principales:
• una consola.

• un editor de sintaxis que apoya la ejecución de código.

• un panel para la importación de datos, historia y conecciones a fuentes de datos.

• un panel para la gestión de archivos, paquetes, plots y ayuda.

1.3 ¿Qué es RStudio Cloud?

RStudio Cloud que es un entorno de desarrollo integrado (IDE) para el lenguaje de programación R disponible totalmente en la nube.
Características de RStudio Cloud:

• RStudio Cloud, al igual que el Rstudio de escritorio, incluye una consola, editor de scripts que apoya la ejecución de código, así como herramientas para el ploteo, la depuración y la gestión del espacio de trabajo, el cual puede ser compartido con otros colaboradores de forma online.

• No se necesita ninguna instalación ni del IDE ni del lenguaje R, todo se maneja de forma online.

• La interfaz de desarrollo RStudio Cloud y su gestor de proyectos es totalmente gratuita.

• Página web: https://rstudio.cloud/.

1.4 ¿Qué es Google Colab?

Google Colab, o “Colaboratory” o simplemente Colab es un entorno gratuito basado en Jupyter notebook que se ejecuta en los servidores de la nube de Google. Colab te permite escribir y ejecutar código de Python (o de R) en tu navegador:

• Sin configuración requerida

• Acceso gratuito a GPU

• Facilidad para compartir.

Seas estudiante, científico de datos o investigador de IA, Colab facilita tu trabajo. Mira este video introductorio sobre Colab para obtener más información.

• Los notebooks de Colab te permiten combinar código ejecutable y texto enriquecido en un único documento, junto con imágenes, HTML, LaTeX y mucho más.

• Para acceder a este servicio lo primero que se requiere es una cuenta en Gmail

• Los notebooks que crees en Colab se almacenan en tu cuenta de Google Drive.

• Puedes compartir fácilmente los notebooks de Colab con amigos o compañeros de trabajo para que realicen comentarios o los editen.

• Para crear un nuevo notebook en Colab en el que se pueda ejecutar código R tienes que ingresar con el siguiente enlace: https://colab.to/r

1.5 Instalación de R y RStudio

Primero tienes que instalar R y posteriormente instalas RStudio. Una vez que tienes instalado los dos, ya no abres R, sólo necesitas abrir RStudio.

Procedimiento para instalar R

  1. Accede a la página oficial de R, The R Project for Statistical Computing.

  1. Al ingresar a la página “CRAN Mirrors” elegimos el enlace del “espejo” más próximo a nuestra ubicación, Mexico. Seleccionemos la URL de, por ejemplo, Instituto Tecnologico Autonomo de Mexico, México (https://cran.itam.mx/).

  1. De acuerdo al sistema operativo que tenga tu equipo, eliges una de de las opciones disponibles:

  1. Una vez que se ha descargado el ejecutable, dar doble clic sobre el archivo y seguir las instrucciones de instalación. Finalizar.

Procedimiento para instalar RStudio

  1. Accede a la página oficial de RStudio: https://www.rstudio.com/. Dirígete a la sección de descargas.

  1. Selecciona RStudio Desktop, es la versión gratuita de escritorio. Asegúrate de descargar la versión correcta según la arquitectura de tu computadora: hay de 64 o 32 bits.

  1. Una vez que se ha descargado el ejecutable, dar doble clic y seguir las instrucciones de instalación. Finalizar.

1.6 Recursos para aprender R

Los siguientes enlaces te proporcionan buena información para el aprendizaje de R:

R for Data Science

R-bloggers

Quick-R

Cookbook for R

R-Coder

Igualmente se recomiendan ampliamente los foros en Stack Overflow

Unidad 2: Aspectos básicos del lenguaje R

2.1 Establecer el directorio de trabajo

Al iniciar nuestro trabajo en RStudio se recomienda establecer el espacio de trabajo, es decir, fijar una carpeta en la que estaremos guardando todos los ficheros que generemos:

La forma más sencilla de hacer esto es con el siguiente código:

setwd("/Users/javier/Desktop")

Lo que hace la línea de código anterior fue indicar a R la ruta donde queremos trabajar y la fijamos con la función setwd().

Otra forma de fijar el directorio de trabajo es usando el menú de RStudio: Session > Set Working Directory > Choose Directory…

Para asegurarte que has fijado el directorio de trabajo en la carpeta correcta, ejecuta el siguiente comando:

getwd() #Obtiene el camino a la carpeta fijada
## [1] "/Users/javier/Desktop"

Debes obtener la ruta o el path a la carpeta en donde fijamos nuestro directorio de trabajo.

2.2 Instalar y cargar paquetes en R

Para ampliar los métodos, funcionalidades y las capacidades del programa R frecuentemente se tiene la necesidad de instalar y cargar paquetes adicionales. Hay varias formas de instalar un paquete en R:

Forma 1: usando la función install.packages(). El nombre del paquete que queremos instalar debe ir entre comillas.

#install.packages("ggplot2")

Una vez que instalas el paquete lo debes cargar usando la función library():

#library("ggplot2")

Forma 2: Para instalar un paquete determinado puedes hacer uso del menú de RStudio: Tools > Install packages

Forma 3: En el entorno de RStudio dirigirse a Packages/Install. Ver figura de abajo, se observan los paquetes que tenemos actualmente instalados y aquellos que se encuentran cargados.

Para instalar y cargar paquetes de manera conjunta la manera más corta posible es usando la función p_load() de paquete pacman.

#install.packages("pacman")
library("pacman")
p_load("ggplot2","dplyr","tidyr")

2.3 Pedir ayuda en R

Las funciones de R base y aquellas que forman parte de algún paquete tienen un archivo de documentación. La docuemnetación describe qué hace la función, sus argumentos, detalles sobre las operaciones que realiza,los resultados que devuelve y algunos ejemplos de cómo usar la funciones.

Si eres nuevo en el lenguaje de programación R y te sientes perdido al comenzar, puedes llamar a la función help.start.

#help.start() # Se abrirá ayuda en formato HTML

Para solicitar ayuda sobre una función específica en R, escriba lo siguiente:

#help("plot")

O también puede escribir esto:

#?plot

Las viñetas o vignettes son largas guías de paquetes de R que describen su uso con amplias explicaciones y ejemplos más detallados que los de la documentación base, escritos en formato R Markdown. Nótese que muchos paquetes contienen viñetas, pero no todos. Puedes ver la lista completa de viñetas de tus paquetes de R instalados con la función vignette. Para ver la documentación del paquete ggplot2, tecleas

#vignette(package = "ggplot2")

Luego selccione la viñeta específica:

# Ejemplo:
#vignette("ggplot2-specs")

Recomiendo leer la siguiente fuente para más detalles sobre cómo pedir ayuda en R.

2.4 Operaciones matemáticas básicas con R

R puede usarse como una simple calculadora. Puedes hacer cálculo directamente en la consola o abrir un script y empezar a escribir tus operaciones. Pero para poder dominar a profundidad el lenguaje necesitamos estudiar sus características y funcionamiento, iniciemos con los tipos de datos presentes en R.

2.5 Tipos de datos en R

En el lenguaje R existen 5 distintos tipos de datos o clases “atómicas”, a saber:

Nombre Tipo de dato
Numero entero Integer
Numero real decimal Numeric
Numero complejo Complex
Cadena de texto Character
Logico Logical

En R la función class() nos permite conocer el tipo o clase de un objeto. También puedes usar las siguientes funciones lógicas para determinar el tipo o clase de un objeto en R:

Table 2: Funciones de la familia is.()
Funcion Tipo
is.integer() ¿Es entero?
is.numeric() ¿Es real decimal?
is.character() ¿Es cadena de characters?
is.logical() ¿Es logico?
is.complex() ¿Es complejo?
is.factor() ¿Es variable categorica?
is.na() ¿Es valor no disponible?
is.null() ¿Es nulo?

Estudiemos a detalle cada uno de los tipos básicos de datos presentes en R.

Objeto tipo integer


Los datos enteros representan números enteros, sin una parte decimal o fraccionaria.

a=5L #así se especifica un valor entero
b=10L
c=a+b #suma de enteros
c
## [1] 15
#conocer la clas del objeto a
class(a)
## [1] "integer"

Objeto tipo numeric


Los datos numéricos representan números que tiene una parte decimal o fraccionaria. Los datos numéricos también son llamados doble o float (flotantes).

#escribir un dato tipo numeric
a=4.25 #número decimal
b=6.25 #número decimal
c=a+b
c
## [1] 10.5
#conocer la clase del objeto
class(a)
## [1] "numeric"

Objeto tipo complex

Un dato es tipo complejo si es número con una parte real y una parte imaginaria.

#Crear un número complejo
z=3+4i
class(z)
## [1] "complex"

Hay varios comandos asociados con los números complejos:

#Parte real del número
Re(z)
## [1] 3
#Parte imaginaria del número
Im(z)
## [1] 4
#El módulo del número
Mod(z)
## [1] 5
#El número complejo conjugado
Conj(z)
## [1] 3-4i

Objeto tipo character


Un dato tipo character representa texto y se escribe entre comillas, simples o dobles. También se conocen como cadenas de texto, es decir, secuencias de caracteres. Este es el tipo de datos más flexible de R, pues una cadena de texto puede contener letras, números, espacios, signos de puntuación y símbolos especiales.

#dato tipo character
a="Curso básico de R"
class(a)
## [1] "character"

Objeto tipo logical


Los datos de tipo lógico sólo tienen dos valores posibles: verdadero (TRUE) y falso (FALSE). Representan si una condición o estado se cumple, es verdadero, o no, es falso. Es el tipo de dato más restrictivo.

4<7
## [1] TRUE

La anterior operación se puede asignar un nombre

a=4<7
class(a)
## [1] "logical"

Objeto tipo factor

Un factor es un tipo de datos específico a R. Puede ser descrito como un dato numérico representado por una etiqueta. Cada una de las etiquetas o valores que puedes asumir un factor se conoce como nivel.

Objeto tipo NA


En R, usamos NA (significa Not Available) para representar explícitamente datos perdidos, omitidos o que por alguna razón son faltantes. También puede aparecer NA como resultado de una operación realizada, pero que no tuvo éxito en su ejecución. . Cualquier operación aritmética que involucre a un NA da por resultado un NA. Esto se aplica también a los operadores lógicos y de comparación.

Objeto tipo NULL


En R, usamos NULL para representar la ausencia de datos.

2.6 Operadores

Operadores de asignación


Los operadores de asignación permiten asignar datos a variables. Una vez hecha la asignación puedes usar el nombre de la variable para realizar operaciones con ella como si fueran los propios datos.

Table 3: Operadores de asignación
Operador Funcion
<- Asigna un objeto a un variable
= Asigna un objeto a un variable
-> Asigna un objeto a un variable

Operadores lógicos


En R podemos tres operadores lógicos fundamentales, que son los siguientes:

Nombre Operador Descripcion
Conjuncion a&b será TRUE cuando ambas sean verdaderas
Disyuncion a|b será FALSE cuando las dos sean falsas
Negacion !a !TRUE=FALSE

Operadores aritméticos


Los operadores aritméticos son la suma, la resta, el producto (*), la división (/), la potenciación (ˆ), división entera %% retorna el residuo; el producto interior %*%.

Operadores de comparación o relacionales


Los operadores de comparación son usados para hacer comparaciones y siempre devuelven como resultado TRUE o FALSE (verdadero o falso, respectivamente)

Table 5: Operadores de comparación
Operadores Comparacion
> mayor estricto
>= mayor o igual
< menor estricto
<= menor o igual
== exactamente igual a
!= no es igual que

2.7 Estructura de datos


¿Qué son las estructuras de datos en R?

Las estructuras de datos en R son objetos que almacenar nuestros conjuntos de datos, es decir, en un mismo objeto coleccionan varios valores. Estas estructuras tienen diversas características, como la dimensión y su heterogeneidad u homogeneidad respecto al tipo de objeto que las conforman.


Estructuras de datos homogéneas: son aquellas que se conforman por objetos del mismo tipo

Estructuras de datos heterogéneas: son aquellas que se conforman por objetos de diferentes tipos


La siguiente tabla resume la información de las estructuras de datos presentes en R:

Estructura Dimensiones Homogenea Heterogenea
Vector 1 Si No
Matrices 2 Si No
Data frame 2 No Si
Tibbles 2 No Si
Listas n No Si

Vectores


Un vector es la estructura de dato más básica en R. Contiene elementos de la misma clase. Se puede construir un vector de tipo numérico, lógico o carácter.

Para introducir un vector en R se usa la función c(). La La letra c significa "concatenar", y de hecho es un acrónimo para dicha palabra.

Creamos un vector de la siguiente forma:

c(25,28,29) #vector numérico
## [1] 25 28 29
c("Emilio", "Javier", "Anto") #vector character
## [1] "Emilio" "Javier" "Anto"
c(TRUE,FALSE,TRUE) #vector logico
## [1]  TRUE FALSE  TRUE
edades=c(20,25,32,29,30,22)
edades
## [1] 20 25 32 29 30 22
edades^2
## [1]  400  625 1024  841  900  484
sqrt(edades)
## [1] 4.472136 5.000000 5.656854 5.385165 5.477226 4.690416
edades+10
## [1] 30 35 42 39 40 32
20*edades
## [1] 400 500 640 580 600 440
a=c(4,8,2,11)
b=c(0,8,4,15)
c=a+b
c
## [1]  4 16  6 26

¿Cómo acceder a los elementos de un vector?

edades[6]
## [1] 22

Matrices


Las matrices son estructuras de datos bidimensionales (de dos dimensiones). Las matrices, al igual que los
vectores, sólo admiten datos de un solo tipo. Se usan para almacenar estructuras rectangulares.

# Esta matriz tienen 5 filas y 4 columnas y se llena por __filas__
A=matrix(1:20,nrow = 5,ncol = 4,byrow = TRUE)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## [4,]   13   14   15   16
## [5,]   17   18   19   20
# Esta matriz tienen 5 filas y 4 columnas y se llena por __columnas__
A2=matrix(1:20,nrow = 5,ncol = 4, byrow = FALSE)
A2
##      [,1] [,2] [,3] [,4]
## [1,]    1    6   11   16
## [2,]    2    7   12   17
## [3,]    3    8   13   18
## [4,]    4    9   14   19
## [5,]    5   10   15   20
# La matriz identidad de orden 7
I=diag(7)
I
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,]    1    0    0    0    0    0    0
## [2,]    0    1    0    0    0    0    0
## [3,]    0    0    1    0    0    0    0
## [4,]    0    0    0    1    0    0    0
## [5,]    0    0    0    0    1    0    0
## [6,]    0    0    0    0    0    1    0
## [7,]    0    0    0    0    0    0    1
# Matriz identidad de orden 3
Id=matrix(c(1,0,0,0,1,0,0,0,1),nrow = 3,ncol = 3)
Id
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1

Formemos una matriz cuyas entradas sean palabras (cadenas de caracteres).

# Formo un vector de datos de tipo caracter
glosario=c("Muestra","TLC","Distribución","Estimación","Intervalos","Potencia")
G=matrix(glosario,nrow = 3,ncol = 2,byrow = FALSE)
# byrow= TRUE te llena la matriz por filas
# byrow= FALSE te llena la matriz por columnas
G
##      [,1]           [,2]        
## [1,] "Muestra"      "Estimación"
## [2,] "TLC"          "Intervalos"
## [3,] "Distribución" "Potencia"
is.matrix(G) # ¿es matriz G?
## [1] TRUE

Algunas funciones sobre matrices

Table 7: Algunas funciones sobre matrices
Funcion Descripcion
dim() devuelve las dimensiones de una matriz
[,] accede a elementos dentro de la matriz
is.matrix devuelve TRUE si el objeto es una matriz, FALSE si no lo es
colnames() devuelve el nombre de las columnas de una matriz
rownames() devuelve el nombre de las filas de una matriz
apply() aplica una función sobre las filas o columnas de una matriz
cbind() añade una columna a una matriz dada
rbind() añade una columna a una matriz dada
mode() devuelve el tipo de datos de los elementos de una matriz
dimnames() devuelve el nombre de las dimensiones de una matriz
%*% producto matricial
t() transpuesta de una matriz
det() determinan de una matriz
solve() calcula la inversa de una matriz

Data frame


Los data frames son una estructura de datos de 2 dimensiones que pueden contener datos de diferentes tipos en el sentido en que las columnas pueden ser de diferente tipo entre sí. Sin embargo, todos los elementos de una misma columna deben ser del mismo tipo. Al igual que las filas y columnas de una matriz, todos los elementos de un data frame deben ser de la misma longitud.

nombres=c("Emilio","Javi","Anto") #vector character
edad=c(25,28,29) #vector numeric
urbano=c(TRUE,FALSE,FALSE) #vector logical
ingreso<-c(20000,10000,30000) #vector numeric
edocivil<-c("casado","soltero","soltero") #vector character
datos=data.frame(nombres,edad,urbano,ingreso,edocivil)
datos
##   nombres edad urbano ingreso edocivil
## 1  Emilio   25   TRUE   20000   casado
## 2    Javi   28  FALSE   10000  soltero
## 3    Anto   29  FALSE   30000  soltero

¿Cómo accedo a los elementos del data frame?

#Pedir la columna edad
datos$nombres
## [1] "Emilio" "Javi"   "Anto"
datos$ingreso
## [1] 20000 10000 30000
datos[,1]
## [1] "Emilio" "Javi"   "Anto"
datos[,"nombres"]
## [1] "Emilio" "Javi"   "Anto"
datos2=datos
datos2[1,4]=4000
datos2
##   nombres edad urbano ingreso edocivil
## 1  Emilio   25   TRUE    4000   casado
## 2    Javi   28  FALSE   10000  soltero
## 3    Anto   29  FALSE   30000  soltero
datos[]
##   nombres edad urbano ingreso edocivil
## 1  Emilio   25   TRUE   20000   casado
## 2    Javi   28  FALSE   10000  soltero
## 3    Anto   29  FALSE   30000  soltero

Tibbles


Un tibble o tbl_df es un data frame pero menos restrictivo. Un tibble es una versión moderna del data frame. Para mayores detalles léase tibbles chapter in R for data science.

Características clave de un tibble
Un Tibble nunca altera el tipo de entrada
Tibbles también puede contener columnas que son las listas
Podemos comenzar el nombre de un Tibble con un número, o también podemos contener un espacio
Tibble nunca puede generar los nombres de las filas

Hay dos diferencias principales entre los tibbles y el data frame:

Printing: un objeto de clase tibble tiene una función de impresión más avanzada. Muestra solo las primeras diez filas con todas las columnas que caben en la pantalla. Cada columna también muestra los tipos de datos. Ayuda a evitar imprimir demasiados datos automáticamente.
Subsetting: podemos acceder a las columnas de un tibble de distintas maneras, usando sintaxis del tipo:

mi_tibble=tibble(x = 1:5, y = 1, z = x^2 + y)
mi_tibble
## # A tibble: 5 × 3
##       x     y     z
##   <int> <dbl> <dbl>
## 1     1     1     2
## 2     2     1     5
## 3     3     1    10
## 4     4     1    17
## 5     5     1    26
#accedemos a la columna y
mi_tibble$y
## [1] 1 1 1 1 1
mi_tibble[["y"]]
## [1] 1 1 1 1 1
mi_tibble[[2]]
## [1] 1 1 1 1 1

Listas


Las listas son un tipo especial de vector que puede contener elementos de diferentes clases. Las listas son un tipo de datos muy importante en R y debe conocerlas bien. Las listas, en combinación con las diversas funciones de la familia apply(), constituyen una poderosa combinación. Las listas se pueden crear explícitamente usando la función list(), que toma un número arbitrario de argumentos.

vector1<-c(1,2,3,4) # un vector
matrix1<-matrix(1:20,nrow=4,byrow = F) # una matrix
dataframe1<-datos # un data frame
lista1<-list(vector1,matrix1,dataframe1)
lista1 #Imprimimos la lista
## [[1]]
## [1] 1 2 3 4
## 
## [[2]]
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    5    9   13   17
## [2,]    2    6   10   14   18
## [3,]    3    7   11   15   19
## [4,]    4    8   12   16   20
## 
## [[3]]
##   nombres edad urbano ingreso edocivil
## 1  Emilio   25   TRUE   20000   casado
## 2    Javi   28  FALSE   10000  soltero
## 3    Anto   29  FALSE   30000  soltero

Note que la lista creada contiene objetos con estructuras distintas: un vector, una matriz y un data frame; y puede contener más elementos. Es un objeto n-dimensional.
Otro ejemplo:

estudiante_nuevo_ingreso<-list(Estado="Edomex",
Nivel="Preparatoria",
Edad=15,
deportes=c("Fútbol","Voleibol"),
Edad.padres=c(60,58))
estudiante_nuevo_ingreso
## $Estado
## [1] "Edomex"
## 
## $Nivel
## [1] "Preparatoria"
## 
## $Edad
## [1] 15
## 
## $deportes
## [1] "Fútbol"   "Voleibol"
## 
## $Edad.padres
## [1] 60 58

Usas la función names() para imprimir los nombres de los objetos dentro de la lista:

names(estudiante_nuevo_ingreso)
## [1] "Estado"      "Nivel"       "Edad"        "deportes"    "Edad.padres"

Para acceder a componentes concretos se usa el operador $ seguido del nombre de la componente de la lista, o bien el número de la componente entre corchetes dobles [[ ]]

estudiante_nuevo_ingreso[[1]]
## [1] "Edomex"

2.8 Funciones en R


En R la estructura general para programar una función es:

nombre_de_la_función=function(argumentos){cuerpo_de_la_función}

Ejemplo de función propia


Dado un vector construir una función que estadarice los datos.

# La siguiente función sólo estadariza estructura vectores
# Sea x un vector numérico
estandarizacion<-function(x){
(x-mean(x))/sd(x)
}
# así llamas a la función
x<-c(2,3,4)
estandarizacion(x)
## [1] -1  0  1

2.9 Estructuras de control


Son estructuras que te permiten ejecutar acciones repetitivas y ordenar y estructurar lógicamente tu código.

Estructura de control Significado Sintaxis
if Si f(condición) {operación a ejecutar}
if, else Si, de otro modo if(condición) {operación a ejecutar}
else {la otra operación}
if, else if,. . . , else Si, si no has esto,. . . , de
otro modo esto
if(condición) {operación a ejecutar}
else if {la otra operación} else
{operación}
for Para cada uno de for(elemento in objeto){operación}
while mientras while(c ondicion){operación}
break romper o interrumpir if (condición) break
next siguiente if (condición) next

Ejemplo de if


La estructura o condicional if te permite hacer lo siguiente:
Si tal condición es verdadera entonces ejecuta esto Si la condición es falsa no ejecuta nada.

if(pi>3){"pay"} # Como la condición es cierta pinta ALEJANDRO
## [1] "pay"
if(pi<3){"not pay"} # Como la condición es cierta pinta ALEJANDRO

Ejemplo de if, else


Estas condicionales lo que te permiten hacer es lo sig:


Si tal condición se cumple has esto, de otro modo has esto otro.

if(3==1){"Pozole"} else {"Pancita"}
## [1] "Pancita"
if(3>3){"Pozole"} else {"Pancita"}
## [1] "Pancita"

Ejemplo if, else if, else

Esta estructura condicional te permite evaluara varias condiciones de manera simultánea.

nota<-75
if(nota<60) {
"Reprobado"
}else if(nota<75){
"Suficiente"
}else if(nota<=90){
"Bueno"} else {
"Excelente"}
## [1] "Bueno"

Ejemplo for


Es una estructura que te permite ejecutar operaciones elemento a elemento.

for(i in 1:10){print(i^2)}
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
## [1] 36
## [1] 49
## [1] 64
## [1] 81
## [1] 100
nombres<-c("Alex","Luis","Ana","Juan")
for(nombre in nombres){
cat("Mi nombres es:",nombre,"\n")}
## Mi nombres es: Alex 
## Mi nombres es: Luis 
## Mi nombres es: Ana 
## Mi nombres es: Juan
base<-iris[1:10,-5]
#View(base)
for(i in 1:ncol(base)){
print(sum(base[,i])/length(base[,i]))
#print(mean(base[,i]))
}
## [1] 4.86
## [1] 3.31
## [1] 1.45
## [1] 0.22

Ejemplo while


Este bucle te permite ejecutar una operación mientras una condición especificada sea verdadera.

suma<-0
contador<-0
while(suma<100)
{
suma=suma+sample(1:20,1)
contador<-contador+1
}
# imprimimos el valor de suma
cat("La suma es:", suma,"\n")
## La suma es: 100
cat("Número de operaciones:",contador)
## Número de operaciones: 9

Ejemplo de break


Esta estructura te permite interrumpir un ciclo for o un while, siempre que se cumpla cierta condición.

vector=seq(1,20,by=1)
vector
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
for (variable in vector) {
if(variable==5)
{
break
}
print(variable)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4