unidad 7: programaciÓn en rfran/tib/semana7.pdf · unidad 7: programaciÓn en r. contenidos 1....

25
Técnicas Inteligentes en Bioinformática Master en Lógica, Computación e Inteligencia Artificial Dpto. Ciencias de la Computación e Inteligencia Artificial Francisco J. Romero Campero Universidad de Sevilla UNIDAD 7: PROGRAMACIÓN EN R

Upload: others

Post on 09-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Técnicas Inteligentes en BioinformáticaMaster en Lógica, Computación e Inteligencia ArtificialDpto. Ciencias de la Computación e Inteligencia Artificial

Francisco J. Romero Campero

Universidad de Sevilla

UNIDAD 7: PROGRAMACIÓN EN R

Page 2: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

CONTENIDOS

1. Creación de funciones en R

2. Concepto de algoritmo

3. Instrucciones de control

4. Ejemplo

Page 3: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

CONTENIDOS

1. Creación de funciones en R

2. Concepto de algoritmo

3. Instrucciones de control

4. Ejemplo

Page 4: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Creación de funciones en R

Hasta ahora hemos visto funciones del lenguaje R: abs, mean, sd, etc.

Podemos crear nuestras propias funciones usando la siguiente sintaxis (ejemplo)

suma.cuadrados <- function(dato1,dato2)

{

primer.cuadrado <- dato1 * dato1

segundo.cuadrado <- dato2 * dato2

resultado <- primer.cuadrado + segundo.cuadrado

return (resultado)

}

Page 5: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Creación de funciones en R

Se pueden dar valores por defecto a los argumentos de entrada:

suma.cuadrados <- function(dato1=4,dato2=10)

{

primer.cuadrado <- dato1 * dato1

segundo.cuadrado <- dato2 * dato2

resultado <- primer.cuadrado + segundo.cuadrado

return (resultado)

}

Page 6: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Creación de funciones en R

La función recibe el nombre a la izquierda del operador de asignación (<- )

Los argumentos de entrada de la función se escriben entre paréntesis a la derecha de la palabra function

La función se compone de una secuencia de instrucciones que se escriben entre llaves ({ })

Opcionalmente se puede devolver un valor con el comando return

Page 7: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Creación de funciones en R

Una vez creada, podemos hacer llamadas a la nueva función de la manera habitual:

> suma.cuadrados(2,5)

[1] 29

> suma.cuadrados(dato1=3)

[1] 109

> suma.cuadrados(dato2=6)

[1] 52

> suma.cuadrados(dato1=7,dato2=9)

[1] 130

Page 8: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Creación de funciones en R

Las variables que se definen dentro de una función se llaman variables locales y no se pueden acceder desde fuera de la función (fuera de las llaves { })> suma.cuadrados(dato1=7,dato2=9)

[1] 130

> resultado

Error: objeto 'resultado' no encontrado

> primer.cuadrado

Error: objeto 'primer.cuadrado' no encontrado

Page 9: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Creación de funciones en R

Los argumentos tampoco se pueden acceder desde fuera de la función.> suma.cuadrados(dato1=7,dato2=9)

[1] 130

> dato1

Error: objeto 'dato1' no encontrado

> dato2

Error: objeto 'dato2' no encontrado

Page 10: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

CONTENIDOS

1. Creación de funciones en R

2. Concepto de algoritmo

3. Instrucciones de control

4. Ejemplo

Page 11: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Concepto de algoritmo

Un algoritmo es una secuencia ordenada y finita de instrucciones.

Un algoritmo puede tener datos de entrada. Un algoritmo puede tener datos de salida. Tomando los datos de entrada y siguiendo la

secuencia de instrucciones, obtenemos los datos de salida.

En la secuencia de instrucciones pueden haber bifurcaciones.

En la secuencia de instrucciones pueden haber repeticiones (bucles).

Page 12: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Concepto de algoritmo Ejemplo:

PROBLEMA: Cambiar la rueda pinchada de un automóvil teniendo un gato mecánico en buen estado, una rueda de reemplazo y una llave inglesa.

ALGORITMO

InicioPASO 1. Aflojar los tornillos de la rueda pinchada con la llave.PASO 2. Ubicar el gato mecánico en su sitio.PASO 3. Levantar el gato hasta que la rueda pinchada pueda girar.PASO 4. Quitar los tornillos y la rueda pinchada.PASO 5. Poner rueda de repuesto y los tornillos.PASO 6. Bajar el gato hasta que se pueda liberar.PASO 7. Sacar el gato de su sitio.PASO 8. Apretar los tornillos con la llave inglesa.Fin

Page 13: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Concepto de algoritmo Ejemplo de bifurcación según una condición.

Problema: Dado un número N, devolver “impar” si es impar o “par” si es par.

ALGORITMO

InicioPaso 1: Si (N %% 2)==0 entonces Paso 1.1: resultado <- “par”Paso 2: Si noPaso 2.1: resultado <- “impar”Paso 3: Devolver resultadoFin

Page 14: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Concepto de algoritmo

Ejemplo de repetición mientras se cumpla una condición.

PROBLEMA: Dado un número N>=0, calcular el factorial N!

ALGORITMO

InicioPASO 1: resultado <- 1PASO 2: mientras que N>0 repetir pasos 2.1 y 2.2 PASO 2.1: resultado <- N * resultadoPASO 2.2: N ← N - 1PASO 3: Devolver resultadoFin

Page 15: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Concepto de algoritmo

Ejemplo de repetición recorriendo un vector

PROBLEMA: dado un vector de números, calcular la media de sus valores.

ALGORITMO

Inicio

PASO 1: suma ← 0

PASO 2: para cada dato en el vector repetir paso 2.1

PASO 2.1: suma ← suma + dato

PASO 3: devolver (suma / (longitud del vector))

Fin

Page 16: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

CONTENIDOS

1. Creación de funciones en R

2. Concepto de algoritmo

3. Instrucciones de control

4. Ejemplo

Page 17: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Instrucciones de control

A la secuencia de instrucciones se le llama flujo de control

A veces existen bifurcaciones en el flujo de control A veces existen repeticiones en el flujo de control Las instrucciones que sirven para realizar

bifurcaciones o repeticiones se llaman instrucciones de control

En R, vamos a ver tres instrucciones de control: If – else (bifurcación) While (repetición mientras se cumpla una condición) For (Recorrido de los elementos de un vector)

Las instrucciones se pueden anidar

Page 18: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Instrucciones de control

Ejemplo de código R con bifurcación if-elsees.par <- function(dato)

{

if ((dato %% 2)==0)

{

resultado <- “par”

}

else

{

resultado <- “impar”

}

return (resultado)

}

Page 19: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Instrucciones de control

Ejemplo de código R con repetición while factorial <- function(dato){

resultado <- 1

while(dato>0)

{

resultado <- resultado * dato

dato <- dato - 1

}

return(resultado)

}

Page 20: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Instrucciones de control

Ejemplo de código R con repetición formedia <- function(vector)

{

suma <- 0

for (dato in vector)

{

suma <- suma + dato

}

return (suma / length(vector))

}

Page 21: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

CONTENIDOS

1. Creación de funciones en R

2. Concepto de algoritmo

3. Instrucciones de control

4. Ejemplo

Page 22: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Ejemplo

Problema: Dado un valor F>0 y un valor C>0, crear una matriz M de F filas y C columnas e inicializarla con valores tal como se indica a continuación:

M[1,j]=j (1 <= j <= C) M[i,1]=i (1 <= i <= F) M[i,j] = M[i-1,j] + M[i,j-1]

(1 <= i <= F, 1 <= j <= C)

Page 23: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Ejemplo

ALGORITMO

Inicio

PASO 1: Crear una matriz vacía M de F filas y C columnas.

PASO 2: Para cada índice i en 1:F repetir paso 2.1

PASO 2.1: M[i,1]=i

PASO 3: Para cada índice j en 1:C repetir paso 3.1

PASO 3.1: M[1,j]=j

PASO 4: Para cada índice i en 2:F repetir paso 4.1

PASO 4.1: Para cada índice j en 2:C repetir paso 4.1.1

PASO 4.1.1: M[i,j] = M[i-1,j] + M[i,j-1]

PASO 5: Devolver M

Fin

Page 24: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

Ejemplocrea.matriz <- function(f=4,c=4)

{

M <- matrix(nrow=f,ncol=c)

for (i in 1:f)

{

M[i,1]=i

}

for (j in 1:c)

{

M[1,j]=j

}

for (i in 2:f)

{

for (j in 2:c)

{

M[i,j] <- M[i-1,j] + M[i,j-1]

}

}

return (M)

}

Page 25: UNIDAD 7: PROGRAMACIÓN EN Rfran/TIB/semana7.pdf · UNIDAD 7: PROGRAMACIÓN EN R. CONTENIDOS 1. Creación de funciones en R 2. Concepto de algoritmo 3. Instrucciones de control 4

This work is licensed under the Creative Commons Attribution-NonCommercial NoDerivs 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/.

Estas transparencias están basadas en el material docente desarrollado por Francisco J. Romero Campero e Ignacio Pérez Hurtado de Mendoza para la asignatura Informática Aplicada a la Bioquímica del Grado Conjunto en Bioquímica por la Universidad de Sevilla y la Universidad de Málaga (Andalucía Tech). Este trabajo está liberado bajo la licencia Creative Commons Attribution-NonCommercial NoDerivs 3.0 Unported License.