Unidad 7: Programación en R - Dpto. Ciencias de la Computación e

Anuncio
UNIDAD 7: PROGRAMACIÓN
EN R
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
CONTENIDOS
1.
Creación de funciones en R
2.
Concepto de algoritmo
3.
Instrucciones de control
4.
Ejemplo
CONTENIDOS
1.
Creación de funciones en R
2.
Concepto de algoritmo
3.
Instrucciones de control
4.
Ejemplo
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)
}
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)
}
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

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
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
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
CONTENIDOS
1.
Creación de funciones en R
2.
Concepto de algoritmo
3.
Instrucciones de control
4.
Ejemplo
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).

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
Inicio
PASO 1.
PASO 2.
PASO 3.
PASO 4.
PASO 5.
PASO 6.
PASO 7.
PASO 8.
Fin
Aflojar los tornillos de la rueda pinchada con la llave.
Ubicar el gato mecánico en su sitio.
Levantar el gato hasta que la rueda pinchada pueda girar.
Quitar los tornillos y la rueda pinchada.
Poner rueda de repuesto y los tornillos.
Bajar el gato hasta que se pueda liberar.
Sacar el gato de su sitio.
Apretar los tornillos con la llave inglesa.
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
Inicio
Paso 1: Si (N %% 2)==0 entonces
Paso 1.1: resultado <- “par”
Paso 2: Si no
Paso 2.1: resultado <- “impar”
Paso 3: Devolver resultado
Fin
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
Inicio
PASO 1: resultado <- 1
PASO 2: mientras que N>0 repetir pasos 2.1 y 2.2
PASO 2.1: resultado <- N * resultado
PASO 2.2: N ← N - 1
PASO 3: Devolver resultado
Fin
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
CONTENIDOS
1.
Creación de funciones en R
2.
Concepto de algoritmo
3.
Instrucciones de control
4.
Ejemplo
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
Instrucciones de control

Ejemplo de código R con bifurcación if-else
es.par <- function(dato)
{
if ((dato %% 2)==0)
{
resultado <- “par”
}
else
{
resultado <- “impar”
}
return (resultado)
}
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)
}
Instrucciones de control

Ejemplo de código R con repetición for
media <- function(vector)
{
suma <- 0
for (dato in vector)
{
suma <- suma + dato
}
return (suma / length(vector))
}
CONTENIDOS
1.
Creación de funciones en R
2.
Concepto de algoritmo
3.
Instrucciones de control
4.
Ejemplo
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)
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
Ejemplo
crea.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)
}
This work is licensed under the Creative Commons AttributionNonCommercial 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.
Descargar