Datos

La variable es la forma más básica que existe de almacenar información.
Una variable es una zona de memoria que ha sido reservada para almacenar datos.

a<-16
b<-13
c<-a+b
print(c)
## [1] 29

Tipos de variables

numeros<-10
numeros_flotantes<-10.5
caracteres<-"a"
strings<-"abc"
boleano<-TRUE

R es un lenguaje no tipado, es decir:
no se necesita decir que tipo de variable se va a guardar

Operadores de cálculo

suma<-10+5
resta<-10-5
division<-10/5
multiplicacion<-10*5
exponencial<-5**2
residual<-10 %% 3

Operadores de asignación

no funcionan en R

# edad=10
# edad+=3
# edad-=3
# edad/=3
# edad*=3
# edad++
# edad--

edad<-10

for(i in 1:20){
  edad=edad-3
  print(edad)
}
## [1] 7
## [1] 4
## [1] 1
## [1] -2
## [1] -5
## [1] -8
## [1] -11
## [1] -14
## [1] -17
## [1] -20
## [1] -23
## [1] -26
## [1] -29
## [1] -32
## [1] -35
## [1] -38
## [1] -41
## [1] -44
## [1] -47
## [1] -50

Arreglos

Un array es un conjunto de variables que todas forman el mismo elemento de almacenamiento de datos, en R se llaman vectores,pueden contener cualquier tipo de datos, incluso otro array

listapp<-list(23,45,66,"a","b","c")
listapp[1]
## [[1]]
## [1] 23
listapp1<-list("a","b","c")
listapp2<-list(5,6,7)
listapp3<-list(TRUE,FALSE,TRUE)

listapp4<-list(listapp1,listapp2,listapp3)
listapp4
## [[1]]
## [[1]][[1]]
## [1] "a"
## 
## [[1]][[2]]
## [1] "b"
## 
## [[1]][[3]]
## [1] "c"
## 
## 
## [[2]]
## [[2]][[1]]
## [1] 5
## 
## [[2]][[2]]
## [1] 6
## 
## [[2]][[3]]
## [1] 7
## 
## 
## [[3]]
## [[3]][[1]]
## [1] TRUE
## 
## [[3]][[2]]
## [1] FALSE
## 
## [[3]][[3]]
## [1] TRUE
listapp4[[2]][[3]]+7
## [1] 14
arreglo1<-c("uno","dos",3,4.5,7,TRUE,TRUE,FALSE)
print(arreglo1)
## [1] "uno"   "dos"   "3"     "4.5"   "7"     "TRUE"  "TRUE"  "FALSE"

llamar solo un valor del array

arreglo1[5] #regularmente en los lenguajes empieza en cero pero en R no
## [1] "7"
arreglo2<-c("hola",5.5,"que",arreglo1,"pasa",5)
print(arreglo2)
##  [1] "hola"  "5.5"   "que"   "uno"   "dos"   "3"     "4.5"   "7"     "TRUE" 
## [10] "TRUE"  "FALSE" "pasa"  "5"
length(arreglo2)
## [1] 13

llamar un rango de valores

arreglo2[4:7]
## [1] "uno" "dos" "3"   "4.5"

Matrices o Dataframe

miDf <- data.frame(
  "entero" = 1:4, 
  "factor" = c("a", "b", "c", "d"), 
  "numero" = c(1.2, 3.4, 4.5, 5.6),
  "cadena" = as.character(c("a", "b", "c", "d"))
)

miDf
##   entero factor numero cadena
## 1      1      a    1.2      a
## 2      2      b    3.4      b
## 3      3      c    4.5      c
## 4      4      d    5.6      d

Llamar un valor de una matriz

miDf[2,3]
## [1] 3.4

Llamar multiples valores por filas

miDf[c(1:2,4),3]
## [1] 1.2 3.4 5.6

Llamar multiples valores por columnas

miDf[,3:4]
##   numero cadena
## 1    1.2      a
## 2    3.4      b
## 3    4.5      c
## 4    5.6      d

Programación estructurada

if /else

Sencillo

# if (condition1) { 
#     expr1
#     } else if (condition2) {
#     expr2
#     } else if  (condition3) {
#     expr3
#     } else {
#     expr4
# }

numero<-21
if (numero==20){
  print("el número es 20")
}else{
  print("el número no es 20")
}
## [1] "el número no es 20"

con condicionales

numero2<-74

if (numero2==20){
    print("el número es 20")
  }else if (numero2>=21){
    print("el número es mayor que 20")
  }else if(numero2<=19){
    print("el número es menor que 20")
  }else{
    print("no es numero")

  }
## [1] "el número es mayor que 20"
#por alguna razon funciona sin el número

Ejercicio 1

# ver si un número es multiple de 3

con condicionales

#precios de camisetas de base 100

#si del club A, descuento del 10 porciento
#si es del club B descuento del 20%
#si es de otro club C,D,E no hay descuento

club <- 'B'
precio <- 100

if (club =='A'){
  cat('precio final',precio-10)  
} else if (club =='B'){
    cat("precio final",precio -20)  
} else {
    cat('precio final',precio)  
}
## precio final 80

Ejercicio 2 ver que el largo del nombre sea 5

if anidados

#precio extra si el cliente son mujeres se descuentan 5 pesos más,
#solo aplicable al club B

#precios de camisetas de base 100
#si del club A, descuento del 10 porciento
#si es del club B descuento del 20%
#si es de otro club C,D,E no hay descuento

club <- 'B'
precio <- 100
cliente<-"mujer"

if (club =='A'){
  cat('precio final',precio-10)  
} else if (club =='B'){
    if(cliente=="mujer"){
      cat("precio final",precio -30)
    }else{
      cat("precio final",precio -20)
    }
} else {
    cat('precio final',precio)  
}
## precio final 70

Operadores Lógicos y de Comparación

y &
o |
no !

igual a ==
diferente de !=
mayor que >
menor que <

mayor o igual >=
menor o igual <=

if varias condicionales

#la promoción ahora solo va a plicar personas de edad menos de 12 años

#precio extra si el cliente son mujeres se descuentan 5 pesos más,
#solo aplicable al club B

#precios de camisetas de base 100
#si del club A, descuento del 10 porciento
#si es del club B descuento del 20%
#si es de otro club C,D,E no hay descuento

club <- 'B'
precio <- 100
cliente<-"mujer"
edad<-20

if (club =='A'& edad<=12){
  cat('precio final',precio-10)  
} else if (club =='B'& edad<=12){
    if(cliente=="mujer"){
      cat("precio final",precio -30)
    }else{
      cat("precio final",precio -20)
    }
} else {
    cat('precio final',precio)  
}
## precio final 100
#la promoción ahora solo va a plicar personas de edad menos de 12 años
#O QUE SEAN discapacitados

#precio extra si el cliente son mujeres se descuentan 5 pesos más,
#solo aplicable al club B

#precios de camisetas de base 100
#si del club A, descuento del 10 porciento
#si es del club B descuento del 20%
#si es de otro club C,D,E no hay descuento

club <- 'A'
precio <- 100
cliente<-"mujer"
edad<-12
discapacidad=FALSE

if (club =='A'& (edad<=12|discapacidad==TRUE)){
  cat('precio final',precio-10)  
} else if (club =='B'& (edad<=12|discapacidad==TRUE)){
    if(cliente=="mujer"){
      cat("precio final",precio -30)
    }else{
      cat("precio final",precio -20)
    }
} else {
    cat('precio final',precio)  
}
## precio final 90

Ejercicio 3

miDf2 <- data.frame(
  "id" = 1:7, 
  "nombre" = c("Jose", "Pedro", "Pablo", "Juana","Araceli","Hilda","Adrian"),
  "edad" = c(21, 18, 16, 15,22,30,15),
  "dinero" = c(100,60,200,10,120,20,10),
  "conoce"=c(FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE),
  "sexo"=c("m","m","m","f","f","f","m")
  
  )


miDf2
##   id  nombre edad dinero conoce sexo
## 1  1    Jose   21    100  FALSE    m
## 2  2   Pedro   18     60  FALSE    m
## 3  3   Pablo   16    200  FALSE    m
## 4  4   Juana   15     10  FALSE    f
## 5  5 Araceli   22    120  FALSE    f
## 6  6   Hilda   30     20   TRUE    f
## 7  7  Adrian   15     10   TRUE    m
#fiesta, las mujeres entran gratis solo si son mayores de 18 años
#hombres ser mayores a 18 y tener mas de 100 pesos (cuesta el boleto)
#cualquiera puede entrar si conoce al encargado

# jose entra
# pedro no entra
# pablo no entra
# juana no entra
# araceli si entra
# hilda si entra
# adrian si entra

Bucles

while

contador<-1
while(contador<12){
  print("hola")
  contador=contador+1
}
## [1] "hola"
## [1] "hola"
## [1] "hola"
## [1] "hola"
## [1] "hola"
## [1] "hola"
## [1] "hola"
## [1] "hola"
## [1] "hola"
## [1] "hola"
## [1] "hola"
contador<-1
while(contador<12){
  print(contador)
  print("hola")
  contador=contador+1
}
## [1] 1
## [1] "hola"
## [1] 2
## [1] "hola"
## [1] 3
## [1] "hola"
## [1] 4
## [1] "hola"
## [1] 5
## [1] "hola"
## [1] 6
## [1] "hola"
## [1] 7
## [1] "hola"
## [1] 8
## [1] "hola"
## [1] 9
## [1] "hola"
## [1] 10
## [1] "hola"
## [1] 11
## [1] "hola"
#que me imprima todos los valores del arreglo 2

cuentaArreglo<-length(arreglo2)
contador<-1
while(contador<=cuentaArreglo){
  print(contador)
  print(arreglo2[contador])
  contador=contador+1
}
## [1] 1
## [1] "hola"
## [1] 2
## [1] "5.5"
## [1] 3
## [1] "que"
## [1] 4
## [1] "uno"
## [1] 5
## [1] "dos"
## [1] 6
## [1] "3"
## [1] 7
## [1] "4.5"
## [1] 8
## [1] "7"
## [1] 9
## [1] "TRUE"
## [1] 10
## [1] "TRUE"
## [1] 11
## [1] "FALSE"
## [1] 12
## [1] "pasa"
## [1] 13
## [1] "5"

Ejercicio 4, recorrer mi bucle miDf2 y traer el nombre de la primera mujer

Ciclo for

for(i in 1:10){
  print(paste("algo",i))
}
## [1] "algo 1"
## [1] "algo 2"
## [1] "algo 3"
## [1] "algo 4"
## [1] "algo 5"
## [1] "algo 6"
## [1] "algo 7"
## [1] "algo 8"
## [1] "algo 9"
## [1] "algo 10"
for(k in -7:10){
  print(paste("algo",k))
}
## [1] "algo -7"
## [1] "algo -6"
## [1] "algo -5"
## [1] "algo -4"
## [1] "algo -3"
## [1] "algo -2"
## [1] "algo -1"
## [1] "algo 0"
## [1] "algo 1"
## [1] "algo 2"
## [1] "algo 3"
## [1] "algo 4"
## [1] "algo 5"
## [1] "algo 6"
## [1] "algo 7"
## [1] "algo 8"
## [1] "algo 9"
## [1] "algo 10"
lista1<-c("a","b","c","h",2,3,4,5)

for(k in lista1){
  print(paste("algo"))
}
## [1] "algo"
## [1] "algo"
## [1] "algo"
## [1] "algo"
## [1] "algo"
## [1] "algo"
## [1] "algo"
## [1] "algo"
lista1<-c("a","b","c","h",2,3,4,5)

for(k in lista1){
  print(paste("algo",k))
}
## [1] "algo a"
## [1] "algo b"
## [1] "algo c"
## [1] "algo h"
## [1] "algo 2"
## [1] "algo 3"
## [1] "algo 4"
## [1] "algo 5"
#agregar 5 primeros valores a la primer lista

arreglo3=c("x","y")
arreglo4=c("a","b","c","d","e","f","h","i")


for(i in arreglo4){
  arreglo3<-c(arreglo3,i)
  print(arreglo3)
}
## [1] "x" "y" "a"
## [1] "x" "y" "a" "b"
## [1] "x" "y" "a" "b" "c"
## [1] "x" "y" "a" "b" "c" "d"
## [1] "x" "y" "a" "b" "c" "d" "e"
## [1] "x" "y" "a" "b" "c" "d" "e" "f"
## [1] "x" "y" "a" "b" "c" "d" "e" "f" "h"
##  [1] "x" "y" "a" "b" "c" "d" "e" "f" "h" "i"
#agregar 5 primeros valores a la primer lista

arreglo3=c("x","y")
arreglo4=c("a","b","c","d","e","f","h","i")


for(i in 1:5){
  arreglo3<-c(arreglo3,arreglo4[i])
  print(arreglo3)
}
## [1] "x" "y" "a"
## [1] "x" "y" "a" "b"
## [1] "x" "y" "a" "b" "c"
## [1] "x" "y" "a" "b" "c" "d"
## [1] "x" "y" "a" "b" "c" "d" "e"

Ejercicio 4, recorrer mi bucle miDf2 y imprimir nombre por nombre

Programación Modular

funciones

nombre<-function(){
  print("se esta ejecutando la funcion")
}
imprimiendo<-function(){

arreglo3=c("x","y")
arreglo4=c("a","b","c","d","e","f","h","i")


for(i in 1:5){
  arreglo3<-c(arreglo3,arreglo4[i])
  print(arreglo3)
}

  
}
imprimiendo()
## [1] "x" "y" "a"
## [1] "x" "y" "a" "b"
## [1] "x" "y" "a" "b" "c"
## [1] "x" "y" "a" "b" "c" "d"
## [1] "x" "y" "a" "b" "c" "d" "e"
imprimiendo()
## [1] "x" "y" "a"
## [1] "x" "y" "a" "b"
## [1] "x" "y" "a" "b" "c"
## [1] "x" "y" "a" "b" "c" "d"
## [1] "x" "y" "a" "b" "c" "d" "e"

Funciones con 1 argumento

convLibras<-function(kil){
  kil*2.20
}
convLibras(100)
## [1] 220

ahora si quiero que me lo guarde en una variable

convLibras<-function(kil){
  librasT<-kil*2.20
}
convLibras(100)
#si imprimo libras T me va a marcar un error, las funciones que se crean dentro, mueren al salir
#librasT

Funciones con 1 argumento retornar resultado

Asi las sacamos

convLibras<-function(kil){
  librasT<-kil*2.20
  return(librasT)
}
convLibras(100) #el resultado es libras T
## [1] 220
#la podemos poner en otra variable
librasT2<-convLibras(100)
print(librasT2)
## [1] 220

funciones multiples argumentos

multiplica3<-function(a,b,c){
 multiplicado<- a*b*c
 return (multiplicado)
}
result1<-multiplica3(5,46,7)
print(result1)
## [1] 1610

funciones multiples return

multSuma<-function(a,b,c){
  multiplicado<-a*b*c
  sumado<-a+b+c
  return (list(m=multiplicado, s=sumado)) #aqui si tiene que ir en igual
}
multSuma(2,2,2)
## $m
## [1] 8
## 
## $s
## [1] 6
x<-multSuma(2,2,2)
typeof(x)
## [1] "list"
x$m
## [1] 8
x$s
## [1] 6
circulo<-function(r){ #función de propiedades de un circulo
A<-pi*r^2 #área
P<-2*pi*r #perímetro
return(list(Ar=A,Pe=P))
}

y<-circulo(0.2)
print('Área para r=0.2')
## [1] "Área para r=0.2"
y$Ar
## [1] 0.1256637
print('Perímetro para r=0.2')
## [1] "Perímetro para r=0.2"
y$Pe
## [1] 1.256637

Ejercicio 5 funcion que traiga media, mediana y desviación estandar de un arreglo de numeros

arreglo22<-c(22,33,22,34,23,45,20,22)

promedio<-function(unarreglo){
  mean(unarreglo)
}

promedio(arreglo22)
## [1] 27.625

Ejercicio Final funcion que usando el miDf2 se le ponga el nombre y me diga si puede o no entrar a la fiesta