Curso: S3-P2 Asignatura: Programación
John Escorza
Erika Ortiz
Lesly Proaño
Josheline Quilumbaquin
Docente: Francisco Valverde (PhD en Informática)
Función suma suma<-function(x,y){ + # suma de los elementos “x” e “y” + x+y + } La última operación evaluada es el valor que ha de retornar la función (también llamada salida). Por ejemplo, si evaluamos la función para los valores x=2 e y=3 obtenemos: suma(x=2,y=3) [1] 5
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
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) { + # función que calcula x elevado a 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”
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
absoluto <- function(x) {
if(x<0){ -x }
else { x }
}
absoluto(-3)
## [1] 3
EJERCICIO 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.
ftrozos <- function(x) {
if (x < 5) {0}
else {10}}
ftrozos(3)
## [1] 0
ftrozos(5)
## [1] 10
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<-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
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:
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
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.
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")