Funciones y Estructuras de Control

Cargar funciones creadas en un script externo

Para cargar funciones en un scrip externo se deberá abrir en New File un archivo tipo R script.

En el siguiente ejemplo crearemos la siguiente función:

# Crear una función en un fichero externo llamado "funcion_iris"

data(iris)

# Que tenga un único argumento llamado "datos"
datos <- (iris)

funcion_iris <- function(datos) {
  
  
  # Que filtre el conjunto de datos, cuando la variable de la segunda columna sea >= 3.5
  
  datos <- datos[datos[,2] >= 3.5 , ]
  
  # Que cree una nueva columna llamada "producto" que sea el resultado de multiplicar las columnas 3 y 4
  
  datos$producto <- datos[,3] * datos[,4]
  
  # Que redondee la nueva variable con 1 decimal
  
  datos$producto <- round(datos$producto,digits = 1)
  
  # Que devuelva un resumen numérico de las variables del conjunto de datos 
  # y un histograma de la primera variable
  a <- summary(datos)
  
  #Histograma de la primera variable
  b<- hist(datos[,1])
  
  # Retorno de la función
  return(list(a,b))
  
}

Ejecución de Script Externo

Para ejecutar el script utilizaremos la funcion source y se creará un objeto “salida” para llamar al resultado.

source('funcion_iris.R')
salida <- funcion_iris(datos = iris)

salida.summary <- salida[[1]]
salida.datos <- salida[[2]]
print (salida.summary)
##   Sepal.Length   Sepal.Width     Petal.Length    Petal.Width          Species  
##  Min.   :4.60   Min.   :3.500   Min.   :1.000   Min.   :0.100   setosa    :22  
##  1st Qu.:5.10   1st Qu.:3.600   1st Qu.:1.400   1st Qu.:0.200   versicolor: 0  
##  Median :5.20   Median :3.700   Median :1.500   Median :0.300   virginica : 3  
##  Mean   :5.52   Mean   :3.752   Mean   :2.052   Mean   :0.508                  
##  3rd Qu.:5.50   3rd Qu.:3.800   3rd Qu.:1.600   3rd Qu.:0.400                  
##  Max.   :7.90   Max.   :4.400   Max.   :6.700   Max.   :2.500                  
##     producto     
##  Min.   : 0.100  
##  1st Qu.: 0.300  
##  Median : 0.400  
##  Mean   : 2.068  
##  3rd Qu.: 0.600  
##  Max.   :15.200

Ejercicio Estructuras de Control

Se creará un script externo que contenga los siguientes argumentos:

################################################
# funcion "normal_random"
#Argumentos:................
#Salida: Histograma del conjunto de datos

#########################################

# Crear una funcion un fichero externo llamado "normal_random"

normal_random <- function(){
datos <- rnorm(n = 500, mean = 5, sd= 0.8) 
histograma <- hist(datos)
return(histograma)
}  

La función creará un conjunto de datos con 500 numeros aleatorios cuya media es 5 y su desviación típica de 0.8

source('normal_random.R')
pdf(file = 'graph.pdf')
normal_random()
## $breaks
##  [1] 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5
## 
## $counts
##  [1]   1  11  32  68 136 131  74  31  15   1
## 
## $density
##  [1] 0.004 0.044 0.128 0.272 0.544 0.524 0.296 0.124 0.060 0.004
## 
## $mids
##  [1] 2.75 3.25 3.75 4.25 4.75 5.25 5.75 6.25 6.75 7.25
## 
## $xname
## [1] "datos"
## 
## $equidist
## [1] TRUE
## 
## attr(,"class")
## [1] "histogram"
graphics.off()
print (normal_random())

## $breaks
##  [1] 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
## 
## $counts
##  [1]   1   3  13  41  81 109 126  74  41   9   1   1
## 
## $density
##  [1] 0.004 0.012 0.052 0.164 0.324 0.436 0.504 0.296 0.164 0.036 0.004 0.004
## 
## $mids
##  [1] 2.25 2.75 3.25 3.75 4.25 4.75 5.25 5.75 6.25 6.75 7.25 7.75
## 
## $xname
## [1] "datos"
## 
## $equidist
## [1] TRUE
## 
## attr(,"class")
## [1] "histogram"