Esta estructura evalua una condicion, y entrega dos caminos si se cumple se ejecuta la primera condicion, y si no se cumple la segunda. Como vemos en el ejemplo
x <- 11
if(x > 10){
costo <- x + 6
a <- 12
}else{
costo <- x - 1
a <- 9
}
print(costo)
## [1] 17
print(a)
## [1] 12
La estructura condicional multiple es un poco mas compleja, donde se definen tres condiciones. Donde R evalua la primera condicion , si no se ejecuta, pasa a la segunda condicion, si esta cumple se ejecuta, y si tampoco cumple con la segunda condicion, se ejecuta la tercera condicion establecida.
x <- 55
if(x > 0){
"El numero es Positivo"
} else if (x < 0){
"El numero es Negativo"
} else{
"El numero es nulo"
}
## [1] "El numero es Positivo"
Datos de Entrada
Se ingresa los siguinetes datos. Cada una de las condiciones son tramos de edad que tienen diferentes precios, segun su edad. ASi cada edad tendra un valor de los productos segun en el tramo en que se encuentren. Se debe indicar que manda la primera condicion.
Edad <- 47 # Edad del Cliente
n <- 12 # Cantidad de producto a
m <- 10 # Cantidad de producto b
if(Edad < 18 | Edad > 87 ){
costo <- "El Producto no esta disponible para su edad"
}else if(18 <= Edad & 25 <= Edad){
costo <- n *1000 + m*1900
}else if(26 <= Edad & 51 <= Edad){
costo <- n *2000 + m*2900
}else{
costo = n*500+m*5000
}
print(costo)
## [1] 31000
Crearemos una funcion que permitira establecer pregunta sque uno responde y de acuerdo a eso nos da el valor de lo solicitado.
Datos de entrada
preg <- function(){
cat("Introduzca su edad:") # Plantea el problema
Edad <- readLines(n = 1) # Toma el numero
Edad <- as.numeric(Edad) # Lo transforma a numero
cat("Escriba la cantidad de producto A:")
n <- readLines(n = 1) # Toma el numero
n <- as.numeric(n) # Lo transforma a numero
cat("Escriba la cantidad de producto B:")
m <- readLines(n = 1) # Toma el numero
m <- as.numeric(m) # Lo transforma a numero
if(Edad < 18 | Edad > 87 ){
costo <- "El Producto no esta disponible para su edad"
}else if(18 <= Edad & 25 <= Edad){
costo <- n*1000 + m*1900
}else if(26 <= Edad & 51 <= Edad){
costo <- n*2000 + m*2900
}else{
costo = n*500+m*5000
}
cat("Ud debera pagar la cantidad de: /n")
print(costo)
}
Otro comando es swich, el cual ejecuta una parte del codigo, ejemplo:
s <- 1:10
caso <- "mean"
switch(caso,
mean = mean(s),
median = median(s),
sd = sd(s))
## [1] 5.5
Se pueden colocar cuantos bloques uno necesite, siempre se va a ejecutar la palabra que seleccionemos. Construiremos una funcion pregunta con los siguinetes datos
consulta <- function(){
cat(" Introduzca los valores a calcular")
s <- readLines(n=5)
s <- as.numeric(s)
cat("Introdusca la palabra mean, median o sd, segun desee")
caso <- readLines(n = 1)
switch(caso,
mean = mean(s),
median = median(s),
sd = sd(s))
}
Con este algorismo se realiza las consultas , la persona ingresa lo que se le solicita y aparece la respuesta.
El bucle mas utilizado en R es FOR. Este comando toman variables y le asignan elementos de un objeto (listas, vectores, etc) en forma sucesiva a medida que se van corriendo los ciclos.
for(i in 5:20){
print("Soy el Mejor")
}
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
## [1] "Soy el Mejor"
for(i in 1:4){
print("Soy lo peor")
}
## [1] "Soy lo peor"
## [1] "Soy lo peor"
## [1] "Soy lo peor"
## [1] "Soy lo peor"
Rodiones <- c( "Tommy Lolo", "Rodiona Raskolnicova")
for(i in 1:length(Rodiones)){
print(paste(" los nombres de mis mascotas:", Rodiones[i]))
}
## [1] " los nombres de mis mascotas: Tommy Lolo"
## [1] " los nombres de mis mascotas: Rodiona Raskolnicova"
Es importante indicar que el uso de los corchetes son para indicar el iesimo valor de Rodiones, no Rodiones completo. Otro detalle importante a tener en vista, en vez de poner 1:6, se introduce 1:length(Rodiones. Siempre hay que tratar que se trate de ingresar la menos cantidad de elemntos en un codigo.
Utilizaremos el mismo principio para el siguiente ejemplo
m <- matrix(rnorm(24,5), nrow =2)
for(i in 1:nrow(m)){
print(mean(m[i, ]))
}
## [1] 5.065063
## [1] 4.919994
Otro ejemplo
x <- matrix(6:11, 2, 3)
x
## [,1] [,2] [,3]
## [1,] 6 8 10
## [2,] 7 9 11
for (i in seq_len(nrow(x))) {
for(j in seq_len(ncol(x))) {
print(x[i , j])
}
}
## [1] 6
## [1] 8
## [1] 10
## [1] 7
## [1] 9
## [1] 11