APLICANDO CONOCIMIENTOS ADQUIRIDOS ACERCA DE FUNCIONES
En este documento se presentan 7 ejercicios de aprendizaje sobre el uso de funciones, para la comunidad de RStudio.
AUTORES
COLABORACIÓN
EJERCICIO 1 -> FUNCION SUMA
- Se puede obtener el resultado de dos formas.
suma <- function(x,y){
x+y }
suma(x=2, y=3)
## [1] 5
suma(2,3)
## [1] 5
EJERCICIO 2 -> FUNCION POTENCIA CON PASTE Y CAT
- Para que el resultado contenga texto se puede usar la funcion paste o cat.
potencia <- function(x, y) {
result <- x^y
paste(x,"elevado a la potencia de", y, "es", result)}
potencia(2,3)
## [1] "2 elevado a la potencia de 3 es 8"
x <- 2
cat(x)
## 2
cat("María")
## María
cat("María tiene", x, "hijos", ".")
## María tiene 2 hijos .
cat("María tiene", x, "hijos", "\b.")
## María tiene 2 hijos .
cat("María tiene\n", x, "hijos", "\b.")
## María tiene
## 2 hijos .
EJERCICIO 3 -> FUNCION DE VALOR ABSOLUTO CON CONDICIONALES (IF)
- Aquí le estamos diciendo que si el valor de “x” es negativo nos devuelva su opuesto, de lo contrario que nos devuelva el valor original de “x”.
absoluto <- function(x) {
if(x<0){ -x }
else { x }
}
absoluto(-3)
## [1] 3
absoluto(3)
## [1] 3
EJERCICIO 4 -> FUNCION A TROZOS CON CONDICIONALES (IF)
- Si x es menor a 5 toma el valor 0 y en caso contrario el valor 10.
ftrozos <- function(x) {
if (x < 5) {0}
else {10}}
ftrozos(3)
## [1] 0
ftrozos(5)
## [1] 10
EJERCICIO 5 -> CALCULO DE LA TASA DE METABOLISMO BASAL
- La Tasa de Metabolismo Basal (TMB), es la cantidad mínima de energía que necesita tu cuerpo para funcionar. Nunca debemos ingerir menos cantidad de calorías de las que marca la tasa metabólica. La TMB se calcula siguiendo las siguientes ecuaciones.
- TMB Mujer = 655 + (9,6 * P) + (1,8 * A) – (4,7 * E)
- TMB Hombre = 66 + (13,7 * P) + (5 * A) – (6,8 * E)
- Donde necesitamos información del Sexo, A=Altura, P=Peso y E=Edad de cada persona.
TMB<-function(Sexo,Altura,Peso,Edad){
if(Sexo=="mujer"){ 655 + (9.6 * Peso) + (1.8 * Altura) - (4.7 * Edad)}
else{66 + (13.7 * Peso) + (5 * Altura) - (6.8 * Edad) }}
TMB("hombre",170,57,32)
## [1] 1479.3
- En este caso le decimos a la función que calcule el TMB con una fórmula si el sujeto es mujer y otra si es hombre.
EJERCICIO 6 -> VARIAS FORMAS DE OBTENER RESULTADOS
CASO 1
- Unico Valor: Si solo queremos obtener el valor de la hipotenusa.
hipotenusa <- function(cateto1, cateto2){
sqrt(cateto1^2+cateto2^2)}
hipotenusa(2,4)
## [1] 4.472136
CASO 2
- Lista de valores: Si queremos que en el resultado se muestren los valores iniciales y finales.
hipotenusa <- function(cateto1, cateto2){
h <-sqrt (cateto1^2+cateto2^2)
list(cateto1=cateto1,cateto2=cateto2,hipotenusa=h)}
hipotenusa(2,4)
## $cateto1
## [1] 2
##
## $cateto2
## [1] 4
##
## $hipotenusa
## [1] 4.472136
CASO 3
- Con más de un valor para cada cateto: Si queremos que el resultado tenga varios tipos de información (numérica o categórica) podemos utilizar una lista.
hipotenusa(2:4,4:6)
## $cateto1
## [1] 2 3 4
##
## $cateto2
## [1] 4 5 6
##
## $hipotenusa
## [1] 4.472136 5.830952 7.211103
CASO 4
- Resultado como data.frame: Si queremos que el resultado sea de un mismo tipo pero con múltiples variables podemos utilizar el data.frame.
hipotenusa<-function(cateto1, cateto2){
h <- sqrt(cateto1^2+cateto2^2)
data.frame(variable=c("cateto","cateto","hipotenusa"),valor=c(cateto1,cateto2,h))}
hipotenusa(2,4)
## variable valor
## 1 cateto 2.000000
## 2 cateto 4.000000
## 3 hipotenusa 4.472136
CASO 5
- Otra opcion para presentar los resultados.
hipotenusa<-function(cateto1, cateto2){
h <- sqrt(cateto1^2+cateto2^2)
data.frame(cateto1=cateto1,cateto2=cateto2,hipotenusa=h)}
hipotenusa(2:4,4:6)
## cateto1 cateto2 hipotenusa
## 1 2 4 4.472136
## 2 3 5 5.830952
## 3 4 6 7.211103
EJERCICIO 7 -> FUNCION RETURN
- Obtiene el resultado de un paso en particular en la ejecución, no necesariamente el último.
CASO 1
- Para identificar un error.
f <- function(x,y){
if(is.character(return("y debe ser numérico")))
x+y}
f(2,"hola")
## [1] "y debe ser numérico"
CASO 2
- Cuando no se utiliza la funcion return() nos arroja un error.
# f <- function(x,y){
# if(is.character("y debe ser numérico"))
# x+y}
# f(2,"hola")