EJERCICIO 1
Funcion Suma.
suma <- function(x,y){
(x+y)
}
suma(x = 2,y = 3)
## [1] 5
También podemos omitir los nombres de los argumentos si mantenemos la correspondencia con el orden o posición de los argumentos en el que damos los valores:
suma(2,3) [1] 5 > 5
suma <- function(x,y){
(x+y)
}
suma(2,3)
## [1] 5
EJERCICIO 2
Funcion Potencia con Paste y 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"
También podemos utilizar la función cat(), que tiene mayor versatilidad. Por ejemplo: 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”, “”) #uita el último espacio María tiene 2 hijos. > cat(“María tiene”, x, “hijos”, “”) #divide la expresión en dos líneas María tiene 2 hijos.
x<-2
cat(x)
## 2
cat("Maria")
## Maria
cat("Maria tiene", x, "hijos", ".")
## Maria tiene 2 hijos .
cat("Maria tiene", x, "hijos", "\b.")
## Maria tiene 2 hijos .
cat("Maria tiene\n", x, "hijos", "\b.")
## Maria tiene
## 2 hijos .
EJERCICIO 3
Funcion de Valor Absoluto con Condicionales (if).
absoluto <- function(x) {
if(x<0){ -x }
else { x }
}
absoluto(-3)
## [1] 3
EJERCICIO 4
Funcion a Trozos con Condicionales (if).
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 minima de energia que necesita tu cuerpo para funcionar. Nunca debemos ingerir menos cantidad de calorias de las que marca la tasa metabolica. 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 informacion del Sexo, A=Altura, P=Peso y E=Edad de cada persona, nuestros argumentos. 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 funcion que calcule el TMB con una formula si el sujeto es mujer y otra si es hombre.
TMB Mujer = 655 + (9,6 P) + (1,8 * A) – (4,7 * E)
TMB Hombre = 66 + (13,7 P) + (5 * A) – (6,8 * E)
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
EJERCICIO 6
Varias Formas de Obtener Resultados.
Imagina que queremos calcular el valor de la hipotenusa de un triángulo a partir de los valores de sus catetos. Único valor. Si solo queremos obtener el valor de la hipotenusa: hipotenusa<-function(cateto1, cateto2){ + sqrt(cateto12+cateto22) + } > hipotenusa(2,4) [1] 4.472136 Lista de valores. Si queremos que en el resultado se muestren los valores iniciales y finales: hipotenusa<-function(cateto1, cateto2){ + h<-sqrt(cateto12+cateto22) + list(cateto1=cateto1,cateto2=cateto2,hipotenusa=h) + } > hipotenusa(2,4) $cateto1 [1] 2 $cateto2 [1] 4 $hipotenusa [1] 4.472136 Con mas de un valor para cada cateto. Si queremos que el resultado tenga varios tipos de informacion (numerica o categorica) 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 Resultado como data.frame. Si queremos que el resultado sea de un mismo tipo pero con multiples variables podemos utilizar eldata.frame. hipotenusa<-function(cateto1, cateto2){ + h<-sqrt(cateto12+cateto22) + 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 Otra opcion para presentar los resultados: hipotenusa<-function(cateto1, cateto2){ + h<-sqrt(cateto12+cateto22) + 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
CASO 1: Único valor.
hipotenusa <- function(cateto1, cateto2){
sqrt(cateto1^2+cateto2^2)}
hipotenusa(2,4)
## [1] 4.472136
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
hipotenusa(2:4,4:6)
## $cateto1
## [1] 2 3 4
##
## $cateto2
## [1] 4 5 6
##
## $hipotenusa
## [1] 4.472136 5.830952 7.211103
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
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.
Para identificar un error.
f<-function(x,y) {
return("y debe ser numerico")
x+y
}
f(2,"hola")
## [1] "y debe ser numerico"
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")