Las “más importantes” son: scripts, consola y environment/files/plots/packages.
Para personalizar RStudio hay que ir a: Tools -> Global Options. Allí pueden cambiar el color del ambiente, tipo de letra, orden, etc. La idea es utilizar RStudio de la forma mas intuitiva para ustedes.
(#) para escribir comentarios en el script. Si quiero
marcar varias lineas como comentario: ctrl + shift + c
Es importante escribir índices para documentar sus códigos. Para
observarlo debo escribir: ctrl + shift + o
Los títulos pueden estar jerarquizados:
# El mas importante
## Este es un poco menos importante
### Este es un poco menos importante que el anterior
#### El menos importante
Es importante actualizarlo constantemente para no perder funcionalidad.
Los paquetes son basicamente conjuntos de funciones. Los paquetes se instalan una vez, pero se llaman siempre que se vayan a utilizar.
Esto se puede hacer de dos maneras:
Desde la pestaña packages en la esquina inferior derecha.
Con comandos
install.packages("dplyr")
## Error in contrib.url(repos, "source"): trying to use CRAN without setting a mirror
Varios paquetes a la vez:
install.packages(c("dplyr","ggplot2","rio"))
## Error in contrib.url(repos, "source"): trying to use CRAN without setting a mirror
Error común:
install.packages("dplyr", "ggplot2")
## Error in install.packages("dplyr", "ggplot2"): unable to install packages
Por lo general es bueno instalarlas desde el inicio del trabajo dado que comúnmente usamos las mismas librerías al realizar análisis de datos. Con esta función le decimos a R que instale el paquete si este no está instalado (algo típico cuando cambiamos de computador):
if(!require(dplyr)) {install.packages("dplyr")}
Cargar librerías:
library(dplyr)
Si queremos ver que hay dentro de cada paquete:
ls("package:dplyr", all = TRUE) #ls = list objects
Importante: el paquete debe ser instalado una vez, pero cargado cada vez que se utilice. Muchas veces hay actualizaciones. Para revisar e instalarlas.
update.packages()
## Error in contrib.url(repos, type): trying to use CRAN without setting a mirror
Alternativamente puedo conectar paquete con función utilizando
::. Si hago esto no es necesario llamar a la librería para
utilizar esa función en particular. No obstante, lo recomendable es
cargar todas las librerías de los paquetes que voy a utilizar al
inicio.
Sobre una función en particular:
help(mean)
?mean
mean #pulsar la tecla F1
## function (x, ...)
## UseMethod("mean")
## <bytecode: 0x7f92bc911ea8>
## <environment: namespace:base>
sd
## function (x, na.rm = FALSE)
## sqrt(var(if (is.vector(x) || is.factor(x)) x else as.double(x),
## na.rm = na.rm))
## <bytecode: 0x7f92bd9f2ea8>
## <environment: namespace:stats>
Sobre un paquete en particular:
help("dplyr")
library(help="dplyr")
Esc: interrumpir el comando actualCtrl + s: guardartab: autocompletarCtrl + Enter: ejecutar líneaCtrl + Shift + C: comentar<-: Alt + - / option + -%>%: ctrl + shift + m (pipe)Ctrl + l: limpiarCtrl + alt + b: ejecutar todo hasta aquí (flechas en la
consola me permiten ver los últimos comandos utilizados).Shift + lineas: seleccionar varias lineasCtrl + f: buscar/remplazarCtrl + "flecha arriba" en la consola: ver comandos
utilizados.Eliminar todos los objetos:
rm(list=ls())
Eliminar sólo un objeto:
rm(data1)
Si quiero limpiar la consola tengo que apretar
Ctrl + L.
Hay ocasiones en que queremos saber de que paquete es una función determinada. Para ello, revisar: https://sebastiansauer.github.io/finds_funs/
Por ejemplo:
x <- "hola"
Noten que en la consola aparece un signo +. En estos
casos RStudio se detiene porque probablemente se les olvido un
) o bien un #. En estos casos hay que corregir
el error para ejecutar nuevamente y luego apretar esc en la
consola para seguir ejecutando los comandos.
De manera separada (seleccionar las
ordenes+ctrl+Enter):
2+2
## [1] 4
3*5^(1/2)
## [1] 6.708204
Ejecutar todas las instrucciones:
2+2 ; 3*5^(1/2)
## [1] 4
## [1] 6.708204
3+4
## [1] 7
5*4
## [1] 20
8/4
## [1] 2
6^7
## [1] 279936
6^77
## [1] 8.272681e+59
log(10)
## [1] 2.302585
log(1)
## [1] 0
sqrt(91) # raiz cuadrada
## [1] 9.539392
round(7.3) # redondear
## [1] 7
Incluso grandes operaciones:
sqrt(91) + 4892788*673 - (log(4)*round(67893.9181, digits = 2))
## [1] 3292752213
Incluso uso de números imaginarios:
2i+5i+sqrt(25i)
## [1] 3.53553+10.53553i
con el signo <- asignamos valores. También se puede
utilizar =, pero no es recomendable, ya que confunde.
y <- 2 + 4
y
## [1] 6
Las asignaciones son MUDAS. Si no las llamo, no aparecen en la consola. Lo anterior es una operación sencilla, pero lo que queremos es generar asignaciones con funciones.
Podemos utilizar funciones. Las funciones son la parte central del
uso de R. Algunas funciones vienen instaladas en R. Otras funciones hay
que obtenerlas desde paquetes. También es posible escribir tus propias
funciones (). Las funciones estan por lo general escritas
en paréntesis, por ejemplo filter(). Hay ocasiones en que
las funciones estan relacionadas con un paquete específico
dplyr::filter().
sqrt(49)
## [1] 7
summary(mtcars$mpg)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.40 15.43 19.20 20.09 22.80 33.90
Nota: mtcars viene incluidad en R.
Para ver mas:
data()
Otra función:
x <- 2
y <- 3
z <-c(x,y)
z
## [1] 2 3
Uso de funciones aritméticas:
mean(z)
## [1] 2.5
median(z)
## [1] 2.5
Relaciones entre objetos:
w <- mean(z)
Creación de objetos por asignación:
a <- 3+10
b <- 2*4
Comparar objetos:
a > b
## [1] TRUE
Notar que las asignaciones son silenciosas:
a
## [1] 13
b
## [1] 8
# o altenativamente utilizar print
print(a)
## [1] 13
print(b)
## [1] 8
Creación de objetos usando funciones:
valores <- c(a,b)
promedio <- mean(valores)
print(promedio)
## [1] 10.5
promedio
## [1] 10.5
Podemos escribir un promedio aquí usando función
mean():
a <- 2
b <- 5
valores1 <- c(a,b)
promedio1 <-mean(valores1)
print(promedio1)
## [1] 3.5
Limpiamos datos nuevamente:
rm(list = ls())
rm(promedio)
Es importante espaciar codigos. Definimos dos vectores utilizando la
función c()
educ <- c(8,12,8,11,16,14,8,10,14,12)
ingreso <- c(325,415,360,380,670,545,350,420,680,465)
Calculamos promedio, desviación estándar y correlación
mean(ingreso)
## [1] 461
promedioingreso <- mean(ingreso)
sd(ingreso)
## [1] 129.1382
sdingreso <- sd(ingreso)
cor(educ, ingreso)
## [1] 0.9110521
coreduing <- cor(educ,ingreso)
Graficamos
plot(educ, ingreso)
Estimar una regresión lineal
lm(ingreso ~ educ)
##
## Call:
## lm(formula = ingreso ~ educ)
##
## Coefficients:
## (Intercept) educ
## -8.71 41.57
De los siguientes ejemplos, ¿Cuáles son nombres de variables válidas en R?
# min_height
# max.height
# _age
# .mass
# MaxLength
# Min-length
# 2widths
# Calsius2kelvin
R opera componente por componente, por lo que es muy sencillo poder trabajar con vectores y matrices.
Para crear un vector utilizamos la funcion c()
x <- c(1,2,3,4,5)
#o bien
y <- c(6:8)
Veamos los vectores
z <- x + y
z
## [1] 7 9 11 10 12
Supongamos los siguientes vectores:
x<-c(1:4)
y<-c(1:3)
¿Cuál es su longitud?
length(x)
## [1] 4
length(y)
## [1] 3
Si no tienen la misma longitud, ¿cual sería el resultado de
x + y?
z <- x + y
z
## [1] 2 4 6 5
IMPORTANTE: En este caso R realiza la operación de todos modos, pero nos indica que hay una advertencia de que sus dimensiones difieren. Lo relevante de los vectores es que sólo se puede concatenar elementos del mismo tipo, de lo contrario R nos arroja error.
x <- rep(1.5:9.5,4) #genera repeticiones de los valores definidos
y <- c(20:30)
x1 <- c(1,2)
x2 <- c(3,4)
x3 <- c(x1,x2)
x4 <- c(c(1,2), c(3,4))
Subconjunto de un vector
y[3] # obtener el tercer elemento
## [1] 22
y[2:4]
## [1] 21 22 23
y[4:2]
## [1] 23 22 21
y[c(2,6)]
## [1] 21 25
y[c(2,16)]
## [1] 21 NA
Sintaxis general
mi.matriz <- matrix(vector,
ncol = num_columnas, nrow = num_filas,
byrow = valor_logico,
dimnames = list(vector_nombres_filas,
vector_nombres_columnas)
)
## Error in as.vector(x, mode): cannot coerce type 'closure' to vector of type 'any'
Para crear matrices utilizamos la función matrix()
x <- matrix (data = c(1,2,3,4),
nrow = 2,
ncol = 2)
x1 <- matrix(c(1,2,3,4),
2,
2)
No es necesario poner data=, pero por orden mental es
mejor hacerlo.
x
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
x1
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
Notar que por DEFECTO rellena columna por columna. Podemos explicitar que queremos realizar la matriz fila por fila
y <- matrix(data = c(1:4),
nrow = 3,
ncol = 2,
byrow = TRUE)
y
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 1 2
Podemos saber cual es la dimensión de x
dim(y)
## [1] 3 2
dim(y)[1] # cantidad de filas
## [1] 3
dim(y)[2] # cantidad de columnas
## [1] 2
y<- matrix(c(1,2,3,4), nrow=2, ncol=2, byrow=2)
y
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
Los va a repetir!
y <- matrix(c(1,2,3,4), nrow=2, ncol=3, byrow= 2)
y
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 1 2
Notar que el orden en cualquier matrix es filas x columnas. Podemos también omitir la cantidad de filas o columnas en la matriz y obtenemos el mismo resultado
y <- matrix(c(1:4), 2, byrow=T)
y
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
En el caso de crear matrices vacías hay que definir las dimensiones
y <- matrix(nrow=3, ncol=3)
y #útil para los loops
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA NA NA
## [3,] NA NA NA
Darle nombre a las filas y columnas
y <- matrix (c(1:4), 2, byrow = FALSE,
dimnames=list(c("X1","X2"),c("Y1", "Y2")))
y
## Y1 Y2
## X1 1 3
## X2 2 4
Se puede realizar desde las funciones colnames y rownames
colnames(x) <- c("Variable 1", "Variable 2")
rownames(x) <- c("a1", "a2")
x
## Variable 1 Variable 2
## a1 1 3
## a2 2 4
Añadir filas o columnas a una matriz
w <- c(5,6)
Unir mediante filas (queda con el nombre del vector la observación)
z <- rbind(x,w)
z
## Variable 1 Variable 2
## a1 1 3
## a2 2 4
## w 5 6
Unir mediante columnas
z <- cbind(x,w)
z
## Variable 1 Variable 2 w
## a1 1 3 5
## a2 2 4 6
¿Y si tienen diferente cantidad de filas y/o columnas? repite el vector o observaci?n con menor longitud
x <- matrix(c(1:9),3)
x
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
y <- c(5,6)
y
## [1] 5 6
z<-rbind(x,y)
z
## [,1] [,2] [,3]
## 1 4 7
## 2 5 8
## 3 6 9
## y 5 6 5
Podemos pasar un vector a una matriz
x<-1:10
x
## [1] 1 2 3 4 5 6 7 8 9 10
dim(x)<-c(2,5)
x
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
Trasponer matrices:
x <- matrix(c(1:9),3)
xtraspuesta <- t(x)
Potencialmente se pueden hacer muchas más operaciones que involucren matrices. Por ejemplo, subconjuntos de una matriz: segundo y cuarto elemento de la segunda fila:
M <- matrix(1:8, nrow=2)
M
## [,1] [,2] [,3] [,4]
## [1,] 1 3 5 7
## [2,] 2 4 6 8
M[1,1]
## [1] 1
M[1,]
## [1] 1 3 5 7
M[,2]
## [1] 3 4
M[2,c(2,4)]
## [1] 4 8