x <- c(1:10) #estoy creando un vector llamado x que tiene los números del 1 al 10
hola <- list(hola1 = 1:10, hola2 = "amarillo", hola3= "x", "y", "z")
x
## [1] 1 2 3 4 5 6 7 8 9 10
hola
## $hola1
## [1] 1 2 3 4 5 6 7 8 9 10
##
## $hola2
## [1] "amarillo"
##
## $hola3
## [1] "x"
##
## [[4]]
## [1] "y"
##
## [[5]]
## [1] "z"
y <- c(2:11)
g <- cbind(x,y) #juntamos columnas de vectores
gg <- rbind(x,y) # juntamos filas de vectores
# tipos de vectores
w <- c(0.5,0.9) # numérico
ww <- c("amarillo", "verde") #categórico
www <- c(TRUE, FALSE ) # lógico
a <- as.character(x) #cambiando x a un caracter
b <- as.logical(x) #cambiando a un valor lógico
mean(x) # da el promedio
## [1] 5.5
sd(x) # da la desviación estándar
## [1] 3.02765
length(x) # da el largo del vector
## [1] 10
sum(x) #suma los elementos dentro del vector
## [1] 55
min(x) # da el valor mínimo
## [1] 1
max(x) # da el valor máximo
## [1] 10
sort(x) # ordena valores
## [1] 1 2 3 4 5 6 7 8 9 10
x[3] # extrae sólo el tercer dato
## [1] 3
x[1:5] # extrae datos de 1 al 5
## [1] 1 2 3 4 5
nrow(g) # número de filas
## [1] 10
ncol(g) # número de columnas
## [1] 2
hola$hola2
## [1] "amarillo"
hola <- list(a= list(1,2,3,4, "amarillo", 1,2,3), b= c(1:10))
# si quisiera el elemento 4 de mi lista a hago lo siguiente
hola[[c(1,4)]] # aquí digo: creáme un vector de la lista uno con el elemento 4 de ella o bien:
## [1] 4
hola[[1]][[4]] # es lo mismo
## [1] 4
faltantes <- c(1,2,3,NA,NA,6,7)
sinfaltantes <- is.na(faltantes)
faltantes[!sinfaltantes]
## [1] 1 2 3 6 7
sintaxis: if(condicion1) { ##operaciones } else if (condicion2) { ## otra operación }else{ ## otra operación } ## condicionales
# primer ejemplo de if ==
a <- 2
if(a==2){
b<- 4
}else{
b<- 3
}
b
## [1] 4
# segundo ejemplo de if >
if(a>1){
c<-2
}else{
c<-0
}
c
## [1] 2
# tercer ejemplo, asignación a un objeto
d <- if(a<3){
10
}else{
0
}
d
## [1] 10
# cuarto ejemplo sin else
if(a==2){
e<-3
}
e
## [1] 3
for(rango){ operaciones } ### caracteres
for(i in 1:10){
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
# creo un objeto llamado color dentro del vector colores que va repitiendo para cada elemento dentro de colores
colores<- c("azul", "amarillo", "rojo")
for(color in colores){
print(color)
}
## [1] "azul"
## [1] "amarillo"
## [1] "rojo"
for(i in seq_along(colores)){ #hace toda la lista de mi vector
print(colores[i])
}
## [1] "azul"
## [1] "amarillo"
## [1] "rojo"
# es lo mismo que
for(i in 1:length(colores)){ # va desde el 1 hasta el fin de mi vector "colores"
print(colores[i])
}
## [1] "azul"
## [1] "amarillo"
## [1] "rojo"
for(i in 2:length(colores)){ # va desde el segundo hasta el fin de mi vector "colores"
print(colores[i])
}
## [1] "amarillo"
## [1] "rojo"
x <- seq(from= 1, to= 30, by= 5) # va dando los números de 5 en 5
for(i in x){
print(i)
}
## [1] 1
## [1] 6
## [1] 11
## [1] 16
## [1] 21
## [1] 26
while(condicion){ operacion }
aaa <- 3
while(aaa < 12){
print("condicion cumplida")
aaa <- aaa+2
}
## [1] "condicion cumplida"
## [1] "condicion cumplida"
## [1] "condicion cumplida"
## [1] "condicion cumplida"
## [1] "condicion cumplida"
con más de una condición en el while:
while(aaa < 5 && aaa > 2){
print(aaa)
aaa = aaa +1
}
repeat{ ## operaciones if(condicion){ ## mas operaciones } else { break } }
aaa <- 3
# Bucle con repeat
repeat {
print(aaa)
aaa <- aaa + 1
# Condición para romper el bucle
if (aaa >= 5) {
break
}
}
## [1] 3
## [1] 4
for(iterador){ if(condicion){ (se salta si cumple la condición) next } ## operaciones }
for(i in 1:50){
if(i>5){
next
}
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
a <- c(1,2,3,4,5)
A <- rep(a, c(1,2,3,4,5)) # estamos diciendo que repetiremos el elemento uno del vector "a" 1 vez, el elemento 2, 2 veces y así sucesivamente...
A
## [1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
ejemplo <- matrix(1:10, nrow= 2, ncol=5)
apply(ejemplo, 1, sum)
## [1] 25 30
A <- matrix(1:10, 2,5)
B <- matrix(2:11, 2,5)
C <- matrix(3:12, 2,5)
lista <- list(A,B,C)
lapply(lista, "[", 2,1)
## [[1]]
## [1] 2
##
## [[2]]
## [1] 3
##
## [[3]]
## [1] 4
# agarra la segunda columna de las 3 matrices en LISTA
A <- matrix(1:10, 2,5)
B <- matrix(2:11, 2,5)
C <- matrix(3:12, 2,5)
lista <- list(A,B,C)
sapply(lista, "[", 2,1)
## [1] 2 3 4
# agarra la segunda columna de las 3 matrices en un solo VECTOR
mapply(rep,1:4, 4)
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 1 2 3 4
## [3,] 1 2 3 4
## [4,] 1 2 3 4
# primero hacemos el "espacio" donde pondremos los puntos
plot(c(1,3), c(1,5), type= "n", xlab = "eje de las x", ylab= "eje de las y", pch= 4)
x <- c(1,2,3) # las posiciones x de los puntos
y <- c(3,4,5) # las posiciones y de los puntos
points(x,y) # graficando los puntos
linea_reg <- lm(y~x) # una regresión para ver qué tanto de y es predicha por x
abline(linea_reg) # graficamos la línea de regresión
lines(c(1,3), c(0,5), col= "blue") # una línea que queramos marcar
## ejemplo en un data frame predeterminado de R
plot(iris$Sepal.Length, iris$Sepal.Width, col= "turquoise", pch= 5)
reg <- lm(iris$Sepal.Width~iris$Sepal.Length)
abline(reg)
## histogramas
hist(iris$Sepal.Length, breaks = 10, col = "purple") # con frecuencias
hist(iris$Sepal.Length, freq= FALSE) # sin frecuencias (grafica probabilidades)
## dotchart
dotchart(mtcars$mpg, labels= row.names(mtcars))
## boxplots
boxplot(mpg~cyl, data= mtcars, col= rainbow(3), xlab= "cilindors", ylab= "millas por galón")
grep("hola", c("hola", "hello", "hi", "hola"))
## [1] 1 4
nchar(c("hola", "hello", "hi", "hola"))
## [1] 4 5 2 4
paste("hola", "¿cómo", "estás", "?")
## [1] "hola ¿cómo estás ?"
i <- 20
sprintf("hola, tengo %d años, en 5 años tendré %d años. Hace 5 años tenía %d años", i, i+5, i-5)
## [1] "hola, tengo 20 años, en 5 años tendré 25 años. Hace 5 años tenía 15 años"
substring("Monterrey, Nuevo León", 1,9 )
## [1] "Monterrey"
strsplit("Monterrey, Apodaca, Santiago, Juárez", ",") # divide cada vez que ve una coma
## [[1]]
## [1] "Monterrey" " Apodaca" " Santiago" " Juárez"
gregexpr("aaa", "aaacdddcccaaaeworijaaajoijaa")
## [[1]]
## [1] 1 11 20
## attr(,"match.length")
## [1] 3 3 3
## attr(,"index.type")
## [1] "chars"
## attr(,"useBytes")
## [1] TRUE