Ejercicio 2: Loops y Funciones en R (10 ejercicios)

  1. Evaluar si un numero es positivo o negativo e imprimir el resultado respectivo.
num <- (-2)
if(num < 0){
print("El numero es negativo")
} else if(num == 0){
print("El numero es cero")
} else{
print("El numero es positivo")
}
## [1] "El numero es negativo"
  1. Utilizar un bucle for para determinar si los elementos de un vector son pares o impares.
vector1 <- seq(2, 20, by=2)
vector1
##  [1]  2  4  6  8 10 12 14 16 18 20
if (vector1 %% 2==0) {
"Los elementos del vector son pares"
} else {
"Los elementos del vector son impares"
}
## Warning in if (vector1%%2 == 0) {: la condición tiene longitud > 1 y sólo
## el primer elemento será usado
## [1] "Los elementos del vector son pares"
  1. Calcular la cantidad de numeros pares en el vector x <- c(2,6,3,7,11,8).
x <- c(2,6,3,7,11,8)

y <- (x %% 2==0)

sum(y, na.rm = TRUE)
## [1] 3
  1. Usar un bucle para evaluar la raiz cuadrada de cada elemento del vector vec1 <- c(4, 9, 81, 100, 1000). Guardar los resultados en un nuevo vector.
raizcuadrada <- function(num) {
  resultado <- sqrt(num)
  return(resultado)
}

vec1 <- c(4, 9, 81, 100, 1000)
vec2 <- raizcuadrada (vec1)
vec2
## [1]  2.00000  3.00000  9.00000 10.00000 31.62278
  1. Mediante un bucle, determinar el tipo de clase de cada columna de la base de datos iris.
datos <- iris

clase_columnas <- lapply(datos, class)
print(clase_columnas)
## $Sepal.Length
## [1] "numeric"
## 
## $Sepal.Width
## [1] "numeric"
## 
## $Petal.Length
## [1] "numeric"
## 
## $Petal.Width
## [1] "numeric"
## 
## $Species
## [1] "factor"
  1. Crear una funcion que calcule el valor mas pequeño en cada columna de una matriz dada. Crear una matriz aleatoria de 5 x 5 para probar la funcion.
matriz <- matrix(10:34, 5, 5, by=1)
matriz
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   10   11   12   13   14
## [2,]   15   16   17   18   19
## [3,]   20   21   22   23   24
## [4,]   25   26   27   28   29
## [5,]   30   31   32   33   34
vec1 <- c(matriz [,1])

min_columna1 <- function(vector) {
  resultado <- min(vec1)
  return(resultado)
}

vec2 <- c(matriz [,2])

min_columna2 <- function(vector) {
  resultado <- min(vec2)
  return(resultado)
}

vec3 <- c(matriz [,3])

min_columna3 <- function(vector) {
  resultado <- min(vec3)
  return(resultado)
}

vec4 <- c(matriz [,4])

min_columna4 <- function(vector) {
  resultado <- min(vec4)
  return(resultado)
}

vec5 <- c(matriz [,5])

min_columna5 <- function(vector) {
  resultado <- min(vec5)
  return(resultado)
}
min_columna1 (c(matriz [,1]))
## [1] 10
min_columna2 (c(matriz [,2]))
## [1] 11
min_columna3 (c(matriz [,3]))
## [1] 12
min_columna4 (c(matriz [,4]))
## [1] 13
min_columna5 (c(matriz [,5]))
## [1] 14
  1. Crear una funcion que calcule la mediana de un vector numerico cuya cantidad de elementos sea tanto par como impar.
Mediana <- function(vector) {
  resultado <- median(vector)
  return(resultado)
}

vector1 <- c(1:20)
vector2 <- c(2:20)

median(vector1)
## [1] 10.5
median(vector2)
## [1] 11
  1. Crear una funcion que determine la cantidad de caracteres que posee una palabra ingresada. Ademas, la funcion debe devolver la palabra con el orden invertido de caracteres. (Sugerencia: Considerar strsplit y nchar).
dias_semana <- c("lunes", "martes", "miercoles", "jueves", "viernes")

mi_lista <- list(dias_semana)
mi_lista [[1]] [4]
## [1] "jueves"
numero_caracteres <- function(chars) {
  resultado <- nchar(chars)
  return(resultado)
}
numero_caracteres(mi_lista [[1]] [4])
## [1] 6
strsplit(dias_semana[4], split="")[[1]][nchar(dias_semana[4]):1]
## [1] "s" "e" "v" "e" "u" "j"
  1. Crear una funcion que evalue si un numero entero es un numero primo o no.
num <- (113)

if (num %% 2 == 0) { 
print("El numero NO es primo")
  
} else if (num %% 3 == 0) { 
print("El numero NO es primo")
  
} else if (num %% 5 == 0) { 
print("El numero NO es primo")
  
} else if (num %% 7 == 0) { 
print("El numero NO es primo")
  
} else if (num %% 11 == 0) { 
print("El numero NO es primo")
  
}else {

  print("El numero ES primo")
}
## [1] "El numero ES primo"
  1. Generar una funcion que calcule el factorial de un numero mediante el empleo de bucles. Para este ejercicio, no utilizar la funcion factorial que se encuentra en el R.
factorial_numero <- function(n) {
producto <- 1
for (i in 1:n) {
producto <- producto*i
}
return(producto)
}
factorial_numero(8)
## [1] 40320