TALLER 13

Integrantes:

> Pedro Hinojosa

>Alisson Mendez

>Jhostin Nenger

>Natasha Piedra

>Nicole Yar.

REALIZAR LOS 7 EJEMPLOS DESCRITOS EN LA LECTURA SIGUIENTE:

En una función tenemos 3 tipos de elementos: Argumentos (o valores de entrada). Cuerpo: operaciones que han de realizarse. Se deben localizar entre corchetes”{}” Resultado (o valores de salida): la última expresión que se ejecuta.

Ejemplo 1. Función suma

suma <- function(x,y){ 
  x+y }

suma(x=2, y=3)
## [1] 5
suma(2,3)
## [1] 5

Ejemplo 2.Función potencia con paste y cat

Cuando queremos que el resultado de una función contenga texto podemos utilizar las función paste().

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", "\b.")
## María tiene 2 hijos .
#incluir un enter
cat("María tiene\n", x, "hijos", "\b.")
## María tiene
##  2 hijos .

Ejemplo 3.Función de valor absoluto con condicionales (if)

Aquí le estamos diciendo que si el valor de “x” es negativo nos devuelva su opuesto, en caso 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

Ejemplo 4. Función a trozos con condicionales (if).

Función a trozos: si x es menor a 5 toma el valor 0 y en caso contrario el valor 10.

Podemos utilizar funciones condicionales (if, while, etc.) dentro de la función.

ftrozos <- function(x) {
  if (x < 5) {0} 
  else {10}}
ftrozos(3) 
## [1] 0
ftrozos(5)
## [1] 10

Ejemplo 5. Cálculo 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)

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
TMB("mujer",165,53,20)
## [1] 1366.8

Ejemplo 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.

Caso 1: Único 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)
  #ahora va a mostar todos los valores ingresados en una lista
  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
# en este caso con el 2 y 4, 3 y 5, 4 y 6

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.

Otra opción para presentar los resultados:

hipotenusa<-function(cateto1, cateto2){
  h <- sqrt(cateto1^2+cateto2^2)
  #un dataframe pero con diferente valores de catetos
  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

Ejemplo 7. Función return

También se puede utilizar la función “return()” para obtener el resultado de un paso en particular en la ejecución, no necesariamente el último. Es útil por ejemplo para identificar un error.

Caso 1: Para identificar un error.

f <- function(x,y){
  return(x+y)
  if(is.character(return("y debe ser numérico"))) 
    x+y} 
#f(2,"hola")
f(2,6)
## [1] 8

Caso 2: Cuando no se utiliza la funcion return() nos arroja un error.

Si no utilizáramos la función return() obtendríamos un mensaje de error:

# f <- function(x,y){
# if(is.character("y debe ser numérico"))
# x+y}
# f(2,"hola")

NOTA: Recuerda que si no se utiliza return de manera explícita en una función,el valor de la última expresión evaluada se devuelve automáticamente en el resultado de la función.