SlideShare una empresa de Scribd logo
1 de 9
Lenguaje R: Sesión 8
ING. LUIS FERNANDO AGUAS B
2Sesión 8 – Programación en R
Agrupación de expresiones
R es un lenguaje de expresiones, en el sentido que el único tipo de comandos que
acepta es una función o una expresión que retorna un resultado. Incluso una
asignación es una expresión que devuelve el valor asignado.
Los comandos pueden ser agrupados mediante llaves, {expr_1; ...; expr_m}, en
este caso el valor que retorna el grupo es el resultado de la última expresión
contenida en él.
Como un grupo es una expresión en sí mismo, también podría ser utilizado como
parte de expresiones más grandes.
# Grupo de expresiones
> {a<-0; b<-1; c<-2}
# Utilizamos un grupo de expresiones dentro de otra expresión
> d <- {a<-0; b<-1; c<-2}
> d
[1] 2
3Sesión 8 – Programación en R
Ejecución condicional: if
R dispone de una expresión condicional, que se construye de la forma:
if (expr_1) expr_2 [else expr_3]
expr_1 debe tener como resultado un valor lógico (TRUE/FALSE). Cuando expr_1
es cierto (TRUE), la expresión devuelve expr_2. En caso contrario se devuelve
expr_3. Si expr_2 o expr_3 son grupos de expresiones han de ir entre llaves ({}).
> a <- 5
> if (a < 10) b<-a+3 else b<-a-3
> b
[1] 8
Los operadores && (and) y || (or) son habitualmente utilizados en las expresiones
condicionales. Una vez es evidente el resultado de la expresión lógica el resto se
deja de evaluar.
R dispone de una versión vectorizada del if/else, la función ifelse:
ifelse(condición,a,b)
Devuelve un vector de la misma longitud que condición, con los elementos a[i] si
condición[i] es cierto, y b[i] si condición[i] es falso.
4Sesión 8 – Programación en R
Ejecución repetitiva (bucles): for, repeat, while
A menudo es necesario repetir la ejecución de un mismo grupo de instrucciones (p.
ej. para cada elemento de un vector, un número determinado de veces o mientras
se cumpla una determinada condición). R nos ofrece diversas alternativas:
for (var in expr_1) expr_2
expr_2 suele ser una expresión agrupada con subexpresiones escritas en función
de la variable de bucle var, y se ejecutará tantas veces como elementos tiene
expr_1 (que suele ser del aspecto 1:20)
while (condición) expr
expr se ejecuta mientras condición sea cierto (TRUE).
repeat expr
expr se ejecuta mientras nosotros no interrumpamos explícitamente el bucle con la
instrucción break. Los bucles for y while también se pueden interrumpir con break
(aunque no es lo más deseable).
5Sesión 8 – Programación en R
Ejemplos de bucles
A modo de ejemplo, y aunque R nos ofrece maneras mucho más óptimas de
realizar esta operación, vamos a hacer un bucle que coja los vectores a y b, los
sume posición a posición, y guarde el resultado en el vector res. Lo haremos con
for, while y repeat.
# Vectores a sumar (son de la misma longitud)
> a <- 1:10
> b <- 11:20
# Vector resultado: lo tenemos que crear porqué si no R no puede hacer la primera asignación.
> res <- rep(0,length(a))
# Ejemplo con for
> for (i in 1:length(a)) res[i]<-a[i]+b[i]
#Ejemplo con while
> i <- 1
> while (i <= length(a)) {res[i]<-a[i]+b[i]; i<-i+1}
#Ejemplo con repeat
> i <- 1
> repeat {if (i<=length(a)) {res[i]<-a[i]+b[i]; i<-i+1} else break}
El hecho de que R disponga de cálculo vectorial nos ahorrará muchos bucles.
Debido al uso de la memoria que hace R, debemos acostumbrarnos a utilizar este
tipo de instrucciones lo menos posible. Más adelante veremos otras funciones que
nos ayudarán aún más a no utilizarlos
6Sesión 8 – Programación en R
Creación de nuevas funciones
Hasta ahora hemos visto el lenguaje R como un conjunto de expresiones "sueltas".
Ahora bien, muchas veces nos interesará agruparlas bajo un determinado nombre
y parametrizarlas. Uno de los tipos de objetos que R permite crear son las
funciones. Mediante la creación de funciones, el lenguaje gana enormemente en
versatilidad, conveniencia y elegancia. Así, aprender a escribir funciones útiles es
una de las principales maneras de hacer del uso de R algo confortable y productivo.
Como en la mayoría de los otros lenguajes de programación, las asignaciones
dentro de funciones son temporales y se pierden cuando acaba su ejecución.
Muchas de las funciones ya incluídas dentro de R están implementadas en este
mismo lenguaje, por lo tanto su implementación no difiere mucho de la
implementación de las nuestras propias.
Las funciones se definen siguiendo el siguiente patrón:
nombre <- function(arg_1, arg_2, ..., arg_n) expr
expr suele ser una expresión agrupada que usa los argumentos arg_i para calcular
un valor. El valor de la expresión es el valor retornado por la función.
Las llamadas a funciones suelen tener el siguiente aspecto:
nombre(expr_1, expr_2, ..., expr_n)
7Sesión 8 – Programación en R
Un ejemplo de función simple.
Vamos a crear una función que, dados los tres coeficientes (a, b, c) de una
ecuación de segundo grado, ax2 + bx + c = 0, nos devuelva las dos soluciones, si
existen en el conjunto de los reales. Recordemos que la fórmula para encontrar las
dos soluciones es:
(-b ± √(b2 – 4ac)) / 2a
# Cabecera de la función: le damos un nombre y definimos los tres parámetros
# Como vamos a utilizar más de una instrucción para programar la función, ya añadimos con la llave el inicio
# del grupo de instrucciones
ec_grado2 <- function(a, b, c)
{
# Calculamos el discriminante (b^2 – 4ac)
disc <- (b^2)-(4*a*c)
# Primera solución
sol1 <- (-b + sqrt(disc))/(2*a)
# Segunda solución
sol2 <- (-b - sqrt(disc))/(2*a)
# Devolvemos un vector con las dos soluciones y cerramos la llave para indicar el final del grupo de
# instrucciones que forman la función
c(sol1,sol2)
}
8Sesión 8 – Programación en R
Definición de nuevos operadores binarios.
Para funciones que tengan exclusivamente dos parámetros, R permite definirlas de
manera que después se puedan llamar con notación infija, es decir, poniendo el
nombre de la función entre los dos argumentos. Un ejemplo de una función
típicamente infija es la suma (escribimos 3+7 y no +(3,7) o suma(3,7)).
Para crear una función con notación infija simplemente tenemos que añadir el
carácter % delante y detrás del nombre de la función. R ya interpretará de esta
manera que tipo de función estamos creando.
# Vamos a crear una función que reciba dos numeros y devuelva la división del primero entre la suma de los
# dos. Nótese que es obligatorio que el nombre de la función vaya entre comillas.
> "%porcentaje%" <- function(a,b) (a/(a+b))*100
# Ejecutamos la función
> 4 %porcentaje% 6
[1] 40
Algunos ejemplos de este tipo de funciones son el producto matricial %*%, o la
inclusión en listas %in%.
9Sesión 8 – Programación en R
Nombres de argumentos y valores por defecto.
Al contrario que la gran mayoría de lenguajes de programación, R permite colocar
los argumentos de una llamada a una función en el orden que nosotros queramos.
Para poder hacer esto tenemos que especificar para cada valor en la llamada a qué
argumento corresponde. En caso que no lo hagamos entonces R sí entenderá que
los argumentos de la llamada están en el mismo orden en que han sido
especificados en la declaración de las funciones.
# Vamos a estudiar los argumentos de la función rnorm
> args(rnorm)
function (n, mean = 0, sd = 1)
# La llamamos sin poner los nombres de los argumentos
> rnorm(10,1,2)
# Ahora ponemos los nombres de los argumentos: podemos cambiar su orden
> rnorm(sd=2,n=10,mean=1)
Vemos que los parámetros mean y sd tienen asociados valores por defecto (0 y 1
respectivamente). En este caso, si aceptamos estos valores por defecto como los
deseados para ejecutar la función, podemos obviarlos. Una vez prescindamos de
un parámetro, sin embargo, deberemos escribir el nombre de todos los que vengan
detrás de él.
# Prescindimos de cambiar mean, pero tenemos que especificar que el siguiente es sd.
> rnorm(10,sd=3)

Más contenido relacionado

La actualidad más candente

tutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drschemetutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drschemeHospital de Yumbo
 
Estructura básica de un programa en C++
Estructura básica de un programa en C++Estructura básica de un programa en C++
Estructura básica de un programa en C++Rosbelia Balza
 
Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en cDiego Maxdj Chicaiza
 
INSTRUCCIONES BÁSICAS PARA C++
INSTRUCCIONES BÁSICAS PARA C++INSTRUCCIONES BÁSICAS PARA C++
INSTRUCCIONES BÁSICAS PARA C++Idalia Tristan
 
Descomposicion funcional parte ii 2013 2
Descomposicion funcional parte ii 2013 2Descomposicion funcional parte ii 2013 2
Descomposicion funcional parte ii 2013 2IngEsquivel
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacionYsaac Ruiz
 
Funciones en lenguage c
Funciones en lenguage cFunciones en lenguage c
Funciones en lenguage cLorena Sanchez
 
Comandos y funciones sql postgres
Comandos y funciones sql postgresComandos y funciones sql postgres
Comandos y funciones sql postgresHIPOLITO GRULLON
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)MarielaCuriel
 
Apuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje cApuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje cZalimanunezc
 
Tic funciones conceptos
Tic funciones   conceptosTic funciones   conceptos
Tic funciones conceptosmyaarg2
 
Comandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaAna Ruth G H
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificadocompumet sac
 

La actualidad más candente (20)

tutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drschemetutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drscheme
 
Estructura básica de un programa en C++
Estructura básica de un programa en C++Estructura básica de un programa en C++
Estructura básica de un programa en C++
 
Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en c
 
Módulo 4 (sin estilo)
Módulo 4 (sin estilo)Módulo 4 (sin estilo)
Módulo 4 (sin estilo)
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
 
INSTRUCCIONES BÁSICAS PARA C++
INSTRUCCIONES BÁSICAS PARA C++INSTRUCCIONES BÁSICAS PARA C++
INSTRUCCIONES BÁSICAS PARA C++
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Mars
MarsMars
Mars
 
Descomposicion funcional parte ii 2013 2
Descomposicion funcional parte ii 2013 2Descomposicion funcional parte ii 2013 2
Descomposicion funcional parte ii 2013 2
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Funciones en lenguage c
Funciones en lenguage cFunciones en lenguage c
Funciones en lenguage c
 
Comandos y funciones sql postgres
Comandos y funciones sql postgresComandos y funciones sql postgres
Comandos y funciones sql postgres
 
Clase1 c
Clase1 cClase1 c
Clase1 c
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)
 
Apuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje cApuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje c
 
Tic funciones conceptos
Tic funciones   conceptosTic funciones   conceptos
Tic funciones conceptos
 
Comandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y Java
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
 

Destacado

Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATEDEstadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATEDDr. Orville M. Disdier
 
R-Studio, diferencia estadísticamente significativa 2
R-Studio, diferencia estadísticamente significativa 2R-Studio, diferencia estadísticamente significativa 2
R-Studio, diferencia estadísticamente significativa 2Jose Quezada
 
Lección 2 . Uso de operadores en R
Lección 2 .  Uso de operadores en RLección 2 .  Uso de operadores en R
Lección 2 . Uso de operadores en RCarlos Pérez Lara
 
Inecuaciones en r uedees
Inecuaciones en r uedeesInecuaciones en r uedees
Inecuaciones en r uedeesbrendarg
 
¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...
¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...
¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...Martín Cabrera
 
Transformación digital y el nuevo paradigma de TI
Transformación digital y el nuevo paradigma de TI Transformación digital y el nuevo paradigma de TI
Transformación digital y el nuevo paradigma de TI Software Guru
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamientolichic
 
LA EMPRESA DEL FUTURO EN LA ERA DIGITAL - INNOVACIÓN Y TRANSFORMACIÓN DIGITAL
LA EMPRESA DEL FUTURO EN LA ERA DIGITAL - INNOVACIÓN Y TRANSFORMACIÓN DIGITALLA EMPRESA DEL FUTURO EN LA ERA DIGITAL - INNOVACIÓN Y TRANSFORMACIÓN DIGITAL
LA EMPRESA DEL FUTURO EN LA ERA DIGITAL - INNOVACIÓN Y TRANSFORMACIÓN DIGITALGuillermo Herrera
 
Estadística con R Commander
Estadística con R CommanderEstadística con R Commander
Estadística con R CommanderFernando Reche
 
Los costos en la industria
Los costos en la industriaLos costos en la industria
Los costos en la industriaJorge Medina
 

Destacado (20)

Estadística con Lenguaje R: Sesión 6
Estadística con Lenguaje R: Sesión 6Estadística con Lenguaje R: Sesión 6
Estadística con Lenguaje R: Sesión 6
 
Introduccion al Programa R
Introduccion al Programa RIntroduccion al Programa R
Introduccion al Programa R
 
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATEDEstadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
 
R-Studio, diferencia estadísticamente significativa 2
R-Studio, diferencia estadísticamente significativa 2R-Studio, diferencia estadísticamente significativa 2
R-Studio, diferencia estadísticamente significativa 2
 
Lección 2 . Uso de operadores en R
Lección 2 .  Uso de operadores en RLección 2 .  Uso de operadores en R
Lección 2 . Uso de operadores en R
 
Inecuaciones en r uedees
Inecuaciones en r uedeesInecuaciones en r uedees
Inecuaciones en r uedees
 
Horoscopo test1
Horoscopo test1Horoscopo test1
Horoscopo test1
 
Transformación digital en cifras
Transformación digital en cifrasTransformación digital en cifras
Transformación digital en cifras
 
Estadística con Lenguaje R: Sesión 7
Estadística con Lenguaje R: Sesión 7Estadística con Lenguaje R: Sesión 7
Estadística con Lenguaje R: Sesión 7
 
Estadística con Lenguaje R: Sesión 3
Estadística con Lenguaje R: Sesión 3Estadística con Lenguaje R: Sesión 3
Estadística con Lenguaje R: Sesión 3
 
Estadística con Lenguaje R: Sesión 2
Estadística con Lenguaje R: Sesión 2Estadística con Lenguaje R: Sesión 2
Estadística con Lenguaje R: Sesión 2
 
Estadística con Lenguaje R: Sesión 5
Estadística con Lenguaje R: Sesión 5Estadística con Lenguaje R: Sesión 5
Estadística con Lenguaje R: Sesión 5
 
Estadística con Lenguaje R: Sesión 4
Estadística con Lenguaje R: Sesión 4Estadística con Lenguaje R: Sesión 4
Estadística con Lenguaje R: Sesión 4
 
¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...
¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...
¿Qué debemos hacer desde Tecnología para estar alineados con la Transformac...
 
Transformación digital y el nuevo paradigma de TI
Transformación digital y el nuevo paradigma de TI Transformación digital y el nuevo paradigma de TI
Transformación digital y el nuevo paradigma de TI
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamiento
 
LA EMPRESA DEL FUTURO EN LA ERA DIGITAL - INNOVACIÓN Y TRANSFORMACIÓN DIGITAL
LA EMPRESA DEL FUTURO EN LA ERA DIGITAL - INNOVACIÓN Y TRANSFORMACIÓN DIGITALLA EMPRESA DEL FUTURO EN LA ERA DIGITAL - INNOVACIÓN Y TRANSFORMACIÓN DIGITAL
LA EMPRESA DEL FUTURO EN LA ERA DIGITAL - INNOVACIÓN Y TRANSFORMACIÓN DIGITAL
 
Estadística con R Commander
Estadística con R CommanderEstadística con R Commander
Estadística con R Commander
 
R- Introduction
R- IntroductionR- Introduction
R- Introduction
 
Los costos en la industria
Los costos en la industriaLos costos en la industria
Los costos en la industria
 

Similar a Estadística con Lenguaje R: Sesión 8

Similar a Estadística con Lenguaje R: Sesión 8 (20)

Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Presentación de matlab electromagnetismo ...
Presentación de matlab electromagnetismo                                     ...Presentación de matlab electromagnetismo                                     ...
Presentación de matlab electromagnetismo ...
 
Tema 7 www.fresymetal.com
Tema 7 www.fresymetal.comTema 7 www.fresymetal.com
Tema 7 www.fresymetal.com
 
Maple v comandos
Maple v comandosMaple v comandos
Maple v comandos
 
Compu1 (1)
Compu1 (1)Compu1 (1)
Compu1 (1)
 
Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)
 
Creacion de scripts en linux
Creacion de scripts en linuxCreacion de scripts en linux
Creacion de scripts en linux
 
Semana 02 software libre maxima
Semana 02 software libre maximaSemana 02 software libre maxima
Semana 02 software libre maxima
 
Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Funciones
FuncionesFunciones
Funciones
 
Funciones en C.docx
Funciones en C.docxFunciones en C.docx
Funciones en C.docx
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones
FuncionesFunciones
Funciones
 
Clase 10
Clase 10Clase 10
Clase 10
 
4072954.ppt
4072954.ppt4072954.ppt
4072954.ppt
 
Variables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeIntVariables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeInt
 
Programacion C#
Programacion C#Programacion C#
Programacion C#
 
Programacion matlab
Programacion matlabProgramacion matlab
Programacion matlab
 

Más de Luis Fernando Aguas Bucheli (20)

EFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptxEFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptx
 
P-S2.pptx
P-S2.pptxP-S2.pptx
P-S2.pptx
 
EBTS-S1.pptx
EBTS-S1.pptxEBTS-S1.pptx
EBTS-S1.pptx
 
P-S3.pptx
P-S3.pptxP-S3.pptx
P-S3.pptx
 
EBTS-S4.pptx
EBTS-S4.pptxEBTS-S4.pptx
EBTS-S4.pptx
 
P-S4.pptx
P-S4.pptxP-S4.pptx
P-S4.pptx
 
P-S1.pptx
P-S1.pptxP-S1.pptx
P-S1.pptx
 
EBTS-S3.pptx
EBTS-S3.pptxEBTS-S3.pptx
EBTS-S3.pptx
 
EBTS-S2.pptx
EBTS-S2.pptxEBTS-S2.pptx
EBTS-S2.pptx
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
PDIDTI-S4.pptx
PDIDTI-S4.pptxPDIDTI-S4.pptx
PDIDTI-S4.pptx
 
PDIDTI-S2.pptx
PDIDTI-S2.pptxPDIDTI-S2.pptx
PDIDTI-S2.pptx
 
PDIDTI-S1.pptx
PDIDTI-S1.pptxPDIDTI-S1.pptx
PDIDTI-S1.pptx
 
PDIDTI-S8.pptx
PDIDTI-S8.pptxPDIDTI-S8.pptx
PDIDTI-S8.pptx
 
PDIDTI-S6.pptx
PDIDTI-S6.pptxPDIDTI-S6.pptx
PDIDTI-S6.pptx
 
PDIDTI-S5.pptx
PDIDTI-S5.pptxPDIDTI-S5.pptx
PDIDTI-S5.pptx
 
PDIDTI-S3.pptx
PDIDTI-S3.pptxPDIDTI-S3.pptx
PDIDTI-S3.pptx
 
TIC-S4.pptx
TIC-S4.pptxTIC-S4.pptx
TIC-S4.pptx
 
TIC-S3.pptx
TIC-S3.pptxTIC-S3.pptx
TIC-S3.pptx
 
TIC-S2.pptx
TIC-S2.pptxTIC-S2.pptx
TIC-S2.pptx
 

Último

ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 

Último (20)

ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 

Estadística con Lenguaje R: Sesión 8

  • 1. Lenguaje R: Sesión 8 ING. LUIS FERNANDO AGUAS B
  • 2. 2Sesión 8 – Programación en R Agrupación de expresiones R es un lenguaje de expresiones, en el sentido que el único tipo de comandos que acepta es una función o una expresión que retorna un resultado. Incluso una asignación es una expresión que devuelve el valor asignado. Los comandos pueden ser agrupados mediante llaves, {expr_1; ...; expr_m}, en este caso el valor que retorna el grupo es el resultado de la última expresión contenida en él. Como un grupo es una expresión en sí mismo, también podría ser utilizado como parte de expresiones más grandes. # Grupo de expresiones > {a<-0; b<-1; c<-2} # Utilizamos un grupo de expresiones dentro de otra expresión > d <- {a<-0; b<-1; c<-2} > d [1] 2
  • 3. 3Sesión 8 – Programación en R Ejecución condicional: if R dispone de una expresión condicional, que se construye de la forma: if (expr_1) expr_2 [else expr_3] expr_1 debe tener como resultado un valor lógico (TRUE/FALSE). Cuando expr_1 es cierto (TRUE), la expresión devuelve expr_2. En caso contrario se devuelve expr_3. Si expr_2 o expr_3 son grupos de expresiones han de ir entre llaves ({}). > a <- 5 > if (a < 10) b<-a+3 else b<-a-3 > b [1] 8 Los operadores && (and) y || (or) son habitualmente utilizados en las expresiones condicionales. Una vez es evidente el resultado de la expresión lógica el resto se deja de evaluar. R dispone de una versión vectorizada del if/else, la función ifelse: ifelse(condición,a,b) Devuelve un vector de la misma longitud que condición, con los elementos a[i] si condición[i] es cierto, y b[i] si condición[i] es falso.
  • 4. 4Sesión 8 – Programación en R Ejecución repetitiva (bucles): for, repeat, while A menudo es necesario repetir la ejecución de un mismo grupo de instrucciones (p. ej. para cada elemento de un vector, un número determinado de veces o mientras se cumpla una determinada condición). R nos ofrece diversas alternativas: for (var in expr_1) expr_2 expr_2 suele ser una expresión agrupada con subexpresiones escritas en función de la variable de bucle var, y se ejecutará tantas veces como elementos tiene expr_1 (que suele ser del aspecto 1:20) while (condición) expr expr se ejecuta mientras condición sea cierto (TRUE). repeat expr expr se ejecuta mientras nosotros no interrumpamos explícitamente el bucle con la instrucción break. Los bucles for y while también se pueden interrumpir con break (aunque no es lo más deseable).
  • 5. 5Sesión 8 – Programación en R Ejemplos de bucles A modo de ejemplo, y aunque R nos ofrece maneras mucho más óptimas de realizar esta operación, vamos a hacer un bucle que coja los vectores a y b, los sume posición a posición, y guarde el resultado en el vector res. Lo haremos con for, while y repeat. # Vectores a sumar (son de la misma longitud) > a <- 1:10 > b <- 11:20 # Vector resultado: lo tenemos que crear porqué si no R no puede hacer la primera asignación. > res <- rep(0,length(a)) # Ejemplo con for > for (i in 1:length(a)) res[i]<-a[i]+b[i] #Ejemplo con while > i <- 1 > while (i <= length(a)) {res[i]<-a[i]+b[i]; i<-i+1} #Ejemplo con repeat > i <- 1 > repeat {if (i<=length(a)) {res[i]<-a[i]+b[i]; i<-i+1} else break} El hecho de que R disponga de cálculo vectorial nos ahorrará muchos bucles. Debido al uso de la memoria que hace R, debemos acostumbrarnos a utilizar este tipo de instrucciones lo menos posible. Más adelante veremos otras funciones que nos ayudarán aún más a no utilizarlos
  • 6. 6Sesión 8 – Programación en R Creación de nuevas funciones Hasta ahora hemos visto el lenguaje R como un conjunto de expresiones "sueltas". Ahora bien, muchas veces nos interesará agruparlas bajo un determinado nombre y parametrizarlas. Uno de los tipos de objetos que R permite crear son las funciones. Mediante la creación de funciones, el lenguaje gana enormemente en versatilidad, conveniencia y elegancia. Así, aprender a escribir funciones útiles es una de las principales maneras de hacer del uso de R algo confortable y productivo. Como en la mayoría de los otros lenguajes de programación, las asignaciones dentro de funciones son temporales y se pierden cuando acaba su ejecución. Muchas de las funciones ya incluídas dentro de R están implementadas en este mismo lenguaje, por lo tanto su implementación no difiere mucho de la implementación de las nuestras propias. Las funciones se definen siguiendo el siguiente patrón: nombre <- function(arg_1, arg_2, ..., arg_n) expr expr suele ser una expresión agrupada que usa los argumentos arg_i para calcular un valor. El valor de la expresión es el valor retornado por la función. Las llamadas a funciones suelen tener el siguiente aspecto: nombre(expr_1, expr_2, ..., expr_n)
  • 7. 7Sesión 8 – Programación en R Un ejemplo de función simple. Vamos a crear una función que, dados los tres coeficientes (a, b, c) de una ecuación de segundo grado, ax2 + bx + c = 0, nos devuelva las dos soluciones, si existen en el conjunto de los reales. Recordemos que la fórmula para encontrar las dos soluciones es: (-b ± √(b2 – 4ac)) / 2a # Cabecera de la función: le damos un nombre y definimos los tres parámetros # Como vamos a utilizar más de una instrucción para programar la función, ya añadimos con la llave el inicio # del grupo de instrucciones ec_grado2 <- function(a, b, c) { # Calculamos el discriminante (b^2 – 4ac) disc <- (b^2)-(4*a*c) # Primera solución sol1 <- (-b + sqrt(disc))/(2*a) # Segunda solución sol2 <- (-b - sqrt(disc))/(2*a) # Devolvemos un vector con las dos soluciones y cerramos la llave para indicar el final del grupo de # instrucciones que forman la función c(sol1,sol2) }
  • 8. 8Sesión 8 – Programación en R Definición de nuevos operadores binarios. Para funciones que tengan exclusivamente dos parámetros, R permite definirlas de manera que después se puedan llamar con notación infija, es decir, poniendo el nombre de la función entre los dos argumentos. Un ejemplo de una función típicamente infija es la suma (escribimos 3+7 y no +(3,7) o suma(3,7)). Para crear una función con notación infija simplemente tenemos que añadir el carácter % delante y detrás del nombre de la función. R ya interpretará de esta manera que tipo de función estamos creando. # Vamos a crear una función que reciba dos numeros y devuelva la división del primero entre la suma de los # dos. Nótese que es obligatorio que el nombre de la función vaya entre comillas. > "%porcentaje%" <- function(a,b) (a/(a+b))*100 # Ejecutamos la función > 4 %porcentaje% 6 [1] 40 Algunos ejemplos de este tipo de funciones son el producto matricial %*%, o la inclusión en listas %in%.
  • 9. 9Sesión 8 – Programación en R Nombres de argumentos y valores por defecto. Al contrario que la gran mayoría de lenguajes de programación, R permite colocar los argumentos de una llamada a una función en el orden que nosotros queramos. Para poder hacer esto tenemos que especificar para cada valor en la llamada a qué argumento corresponde. En caso que no lo hagamos entonces R sí entenderá que los argumentos de la llamada están en el mismo orden en que han sido especificados en la declaración de las funciones. # Vamos a estudiar los argumentos de la función rnorm > args(rnorm) function (n, mean = 0, sd = 1) # La llamamos sin poner los nombres de los argumentos > rnorm(10,1,2) # Ahora ponemos los nombres de los argumentos: podemos cambiar su orden > rnorm(sd=2,n=10,mean=1) Vemos que los parámetros mean y sd tienen asociados valores por defecto (0 y 1 respectivamente). En este caso, si aceptamos estos valores por defecto como los deseados para ejecutar la función, podemos obviarlos. Una vez prescindamos de un parámetro, sin embargo, deberemos escribir el nombre de todos los que vengan detrás de él. # Prescindimos de cambiar mean, pero tenemos que especificar que el siguiente es sd. > rnorm(10,sd=3)