Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introducción a R
Codificación
19 de octubre de 2017
Introducción a R
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
Intro a funciones
Motivación y concepto
Ejemplo
Se desea presentar números reales (por ejemplo, 1 ) como porcentajes,
2
redondeados a un único decimal. Para ello:
1 Multiplique los números fraccionarios por 100.
2 Redondee el resultado a un decimal. Puede usar la función round().
3 Pegue (paste()) un signo de porcentaje después del número redondeado.
4 Imprima el resultado.
5 Ejecute el script con source()
Introducción a R
Funciones
De scripts a funciones
Mi primera función
Ejemplo
Ejemplo
Reduciendo líneas
Ejemplo
Ejercicio extra
Reduciendo líneas
Ejemplo
Ejercicio extra
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
Tipos de argumentos
Tipos y usos
Ejemplo
Tipos y usos
Ejemplo
Argumentos extra
Dots
Ejemplo
Dots
Ejemplo
FUN
Ejemplo
FUN
Ejemplo
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
Environments
Los entornos son como compartimentos separados donde se almacenan las estructuras y funciones de datos.
Permiten distinguir entre nombres idénticos de diferentes ámbitos, ya que se almacenan en diferentes
entornos. Los entornos se pueden crear y los existentes pueden manipularse o eliminarse.
Tipos de environments
1 El global environment se reserva para objetos definidos por el usuario. ls() muestra el entorno global actual.
2 Package environments and namespace. Representa entornos que controlan diferentes aspectos de una
búsqueda de un objeto determinado. Ej.: ls("package:graphics") muestra las funciones de dicho paquete.
3 Local o lexical environment. Cuando se invoca una función, se crea un entorno local que contiene todos los
objetos y variables creados y visibles para ésta, incluidos los argumentos proporcionados tras la ejecución.
Ello permite nombres de argumentos idénticos a otros nombres de objeto accesibles en un espacio de trabajo.
Search path
Para acceder a estructuras y funciones de datos desde entornos que no sean el entorno global, R sigue una
ruta de búsqueda que contiene todos los entornos a los que una sesión R tiene acceso. La ruta de búsqueda
es básicamente una lista de los entornos que R buscará cuando se solicite un objeto. Si el objeto no se
encuentra en un entorno, R pasa al siguiente.
search() muestra la ruta de búsqueda y search() y search.paths() los directorios de búsqueda.
environment(<function>) muestra, configura y crea entornos.
Reservados: if, else, for, while, in, function, repeat, break, next, TRUE, FALSE, Inf, -Inf, NA, NaN, NULL
Introducción a R
Funciones
Scope
Ejercicio 1: Funciones
Enunciado
1 Cree una función que devuelva el cuadrado de la suma de una secuencia de -1 a 5 en intervalos de
0.1.
2 Reescriba la función anterior para que el inicio y el final de la secuencia los puede elegir el usuario
y los intervalos se puedan especificar o no.
3 Reescriba la función anterior para que elija entre suma y producto en el ejercicio anterior.
4 Cree una función que dado un vector y un valor numérico permita detectar cuantas veces aparece
dicho valor
5 Identifique los primeros 10 elementos contenidos en el paquete built-in stats y el número de
elementos en total segundo.
6 Determine el entorno que posee cada una de las siguientes funciones: read.table, data, matrix,
jpeg
7 Use ls() e igualdad de strings para confirmar la función smoothScatter es parte del paquete de
graphics.
Introducción a R
Funciones
Scope
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
IF | IF ... ELSE
IF
IF ELSE
Ejemplo
IFELSE
Vectorizando
Ejemplo
IFELSE (Solución)
Vectorizando
Ejemplo
IF ELSE IF - SWITCH
Ejemplo
Ejemplo
Enunciado
1 Cree los siguientes vectores: vec1 <- c(2,1,1,3,2,1,0) vec2 <- c(3,8,2,2,0,0,0)
Sin ejecutarlos, determine cuáles de las siguientes sentencias imprimirán el string en consola.
Luego confirme sus respuestas en R.
1 if((vec1[1]+vec2[2])==10) cat("Print me!")
2 if(vec1[1]>=2&&vec2[1]>=2)cat("Printme!")
3 if(all((vec2-vec1)[c(2,6)]<7)) cat("Print me!")
4 if(!is.na(vec2[3]))cat("Printme!")
2 Usando vec1 y vec2 escriba y ejecute una línea de código que multiplique los elementos de los dos
vectores si su suma es mayor que 3. De lo contrario, sumará sumará los dos elementos.
3 Suponga que el objeto mynum será un entero entre 0 y 9. Use ifelse y switch para escribir un
comando que tome mynum y devuelva una cadena de caracteres coincidente para todos los valores
posibles. Si se le pasa 3, por ejemplo, debe devolver "tres"; Si se le pasa 0, debe devolver "cero".
4 Suponga que tiene una lista mylist que puede contener otras listas como miembros, pero asume
que esas "listas de miembros" no pueden contener listas. Escriba bucles que busque cualquier
posible lista definida de esta manera y cuente las matrices. Sugerencia: configurar un contador
antes de los bucles que se incrementa cuando encuentra una matriz, independientemente de si es
un miembro directo de mylist o es miembro de una lista de miembros. Luego confirma lo siguiente:
Introducción a R
Bucles y control de flujo
Condicionales
Enunciado
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
FOR
Ejemplo
1 Cree un data frame con los siguientes valores c(25, 110, 125, 40)
para la variable hours y la variable type con los siguientes tipos de
clientes c("public", "abroad", "private", "abroad").
2 Vectorice priceCalculator6().
Introducción a R
Bucles y control de flujo
Loops
FOR (Solución)
Ejemplo
1 Cree un data frame con los siguientes valores c(25, 110, 125, 40) para la
variable hours y la variable type con los siguientes tipos de clientes
c("public", "abroad", "private", "abroad").
2 Vectorice priceCalculator6().
next hace saltar a la siguiente iteración de un bucle sin ejecutar el código restante. break termina
el loop en cualquier punto. while crea un loop que continúa mientras la condición sea TRUE.
Introducción a R
Bucles y control de flujo
Loops implícitos
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
apply
Ejemplo
sapply y lapply
Ejemplo
Ejercicio extra
sapply y lapply
Ejemplo
Ejercicio extra
Enunciado
1 Cree una función que devolverá TRUE si un entero dado está dentro de un vector.
2 Cree la función única, que dado un vector devolverá un nuevo vector con los elementos del primer
vector con elementos duplicados eliminados.
3 Cree una función que dado un data frame (puede usar cars) y un número o carácter devolverá el
data.frame con el carácter o número cambiado a NA.
4 Convierta el bucle for en un bucle implícito que haga exactamente lo mismo:
5 Escriba una función llamada my.factorialcon un bucle while que calcule y almacene como un
objeto nuevo el factorial (x! = x · (x − 1) · (x − 2) · ...∀(x − n) > 1) de cualquier mynum entero
no negativo al disminuir num en 1 en cada iteración.
Introducción a R
Bucles y control de flujo
Loops implícitos
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
Características
1 Una interesante característica de RStudio son sus herramientas integradas para debugging.
2 Debugging generalmente implica "pausar" el código en un punto específico para inspeccionar sus
objetos y valores de función en un estado dado.
Ejemplo
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
Outline
1 Funciones
De scripts a funciones
Argumentos
Scope
3 Debugging
Elección y subsets
Subsets
1 $ selecciona un único componente de los datos. Cuando usa este operador en un data frame, el
resultado siempre es un vector; cuando se usa en una lista con nombre, obtiene el componente
nombrado.
2 El operador [[ devuelve un solo componente, pero permite referirse a los componentes por
posición, en lugar de por nombre. Se usa en data frames y listas.
3 El operador [ puede devolver varios componentes de los datos.
4 Los operadores [[ y [ difieren en: la cantidad de componentes que puede seleccionar y el tipo de
objeto que se devuelve. Mientras que [[ devuelve el componente en sí, [ devuelve un objeto del
mismo tipo que el que subconjunto
Introducción a R
Operaciones de agrupación, unión y modificación de la estructura de los datos
Agrupaciones de datos
Subconjuntos
Ejemplo
Introducción a R
Codificación
19 de octubre de 2017