8.3 Nuestra primera función
Partimos del algoritmo para calcular el área de un cuadrilátero: lado x lado
.
Podemos convertir esto a operaciones de R y asignarlas a una función llamada area_cuad
de la siguiente manera:
<- function(lado1, lado2) {
area_cuad * lado2
lado1 }
Las partes de nuestra función son:
- Nombre:
area_cuad
. - Argumentos:
lado1
,lado2
. Estos son los datos que necesita la función para calcular el área, representan el largo de los lados de un cuadrilátero. - Cuerpo: La operación
lado1 * lado2
, escrita de manera que R pueda interpretarla.
Ejecutaremos nuestra función para comprobar que funciona. Nota que lo único que hacemos cada que la llamamos es cambiar la medida de los lados del cuadrilátero para el que calcularemos un área, en lugar de escribir la operación lado1 * lado2
en cada ocasión.
area_cuad(lado1 = 4, lado2 = 6)
## [1] 24
area_cuad(lado1 = 36, lado2 = 36)
## [1] 1296
En cada llamada a nuestra función estamos asignando valores distintos a los argumentos usando el signo de igual. Si no asignamos valores a un argumento, se nos mostrará un error
area_cuad(lado1 = 14)
## Error in area_cuad(lado1 = 14): el argumento "lado2" está ausente, sin valor por omisión
En R, podemos especificar los argumentos por posición. El orden de los argumentos se determina cuando creamos una función.
En este caso, nosotros determinamos que el primer argumento que recibe area_cuad
es lado1
y el segundo es lado2.
Así, podemos escribir lo siguiente y obtener el resultado esperado.
area_cuad(128, 64)
## [1] 8192
Esto es equivalente a escribir lado1 = 128, lado2 = 64
como argumentos.
Podemos crear ahora una función ligeramente más compleja para calcular el volumen de un prisma rectangular
Siguiendo la misma lógica de transformar un algoritmo a código de R, podemos crear una función con el algoritmo: arista x arista x arista
.
Definimos la función area_prisma()
.
<- function(arista1, arista2, arista3) {
area_prisma * arista2 * arista3
arista1 }
Probemos nuestra función.
area_prisma(arista1 = 3, arista2 = 6, arista3 = 9)
## [1] 162
También podríamos escribir esta función aprovechando nuestra función area_cuad
.
<- function(arista1, arista2, arista3) {
area_prisma area_cuad(arista1, arista2) * arista3
}
# Probemos la función
area_prisma(3, 6, 9)
## [1] 162
Con esto estamos listos para definir una función para crear histogramas con las características que nos pidió nuestro jefe hipotético.