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))
}
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
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"