Conceptos

Otro de los elementos comunes en el entorno de R son las matrices. Las matrices son un vector con un atributo denominado dimensión: reglones y columnas. En el siguiente ejemplo, vamos a crear una matriz de 10 elementos entre el 1 y 10 en dos filas y 5 columnas:

m <-matrix(1:10, nrow = 2, ncol = 5)
m #recuerde que de esta forma visualiza el elemento creado, experimente con print(m)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    3    5    7    9
## [2,]    2    4    6    8   10

Otros aspectos importantes que podemos obtener son información del elemento que acabamos de crear, por ejemplo

dim(m)
## [1] 2 5
class(dim(m))
## [1] "integer"
attributes(m)
## $dim
## [1] 2 5

Además, es importante notar que los elementos se rellenan columna a columna de izquierda a derecha. Esto es relevante cuando deseamos construir las matrices a mano. Otra forma es crear el vector deseado y luego asignar las dimensiones. Veamos el siguiente ejemplo:

m1 <-c(1,2,3,4,5,6,7,8,9,10) #o de la siguiente forma
m1 <-seq(1,10)

dim(m1)<-c(2,5)

Otra forma de crear las matrices es utilizando las funciones ** cbind ** y ** rbind **.

Al igual que con las opciones de vectores, podemos ejecutar operaciones matemáticas en las matrices, pero esto debe ejecutarse cuando las matrices tienen las mismas dimensiones. Otros elementos muy útiles en R son las listas y los factores.

Las listas son vectores que pueden contener elementos de diferente categoría, por ejemplo:

lista<-list(1, "a", TRUE)

o los Factores que son datos categóricos (ordenados o no ordenados)

f1<-factor(c("yes", "yes", "no"))
table(f1)
## f1
##  no yes 
##   1   2
unclass(f1)
## [1] 2 2 1
## attr(,"levels")
## [1] "no"  "yes"

Y si deseamos combinar con la opción rep ?

f2<-factor(rep(c("yes", "no"), times = 5)) 

o

f3<-factor(rep(c("a", "b", "c"), times = 5)) 

Dentro de un vector o matriz pueden haber elementos faltantes, lo cual se indica con NA o NaN. Para verificar si un vector tiene elementos NA o NaN podemos utilizar las siguientes opciones:

is.na(nombre del elemento) is.nan(nombre del elemento)

También es posible utilizar las funciones is. XX () con otras opciones como numeric, por citar un ejemplo.

Vamos a comprobar las siguiente característica de los NA y NAN:

p1<-c(5,6,NA,9)
is.na(p1)
## [1] FALSE FALSE  TRUE FALSE
is.nan(p1)
## [1] FALSE FALSE FALSE FALSE
p2<-c(5,6,NaN,NA,9)
is.na(p2)
## [1] FALSE FALSE  TRUE  TRUE FALSE

Con este ejemplo podemos probar que un valor “NaN” es un “NA”, pero no al contrario

Otro elemento que es muy importante para el trabajo en el entorno de R son los dataframes. Básicamente un dataframe permite guardar datos tabulares. Se caracteriza por que cada uno de los elementos tiene la misma longitud. Cada uno de los elementos es la columna y la longitud es la cantidad de elementos. El dataframe se diferencia de las matrices en que estas últimas tienen que tener todos los elementos de la misma clase. Esta condición permite que en un dataframe podamos agregar caracteres numéricos o textos, lo cual es fundamental para el uso de factores en diversos análisis estadísticos.

En los dataframe, también es posible adicionar los nombres de las filas y las columnas, lo cual se logra con los comandos row.names y col.names. Para crear un dataframe podemos utilizar varias opciones (una de las características más interesantes de R!):

Realice el siguiente ejemplo:

t1 <-data.frame(columna1=1:3, columna2=c("a","b","c"))
nrow(t1)
## [1] 3
ncol(t1)
## [1] 2
#Estas últimas dos opciones permiten obtener el número de filas y columnas del elemento
colnames(t1)
## [1] "columna1" "columna2"
rownames(t1)
## [1] "1" "2" "3"

Ahora, analice que ocurriría con el siguiente ejemplo:

t2 <-data.frame(columna1=1:3, columna2=c(“a”,“b”,“c”,“d”))

¿Qué es lo que sucede acá? ¿Cuál es la razón del comportamiento del entorno R?

El sistema de R, también es útil asignarle los nombres a los elementos, para lo cual podemos utilizar la opción names. Veámos el siguiente ejemplo:

ej1 <-c(11:14)
names(ej1)<-c("once", "doce", "trece")
ej2 <-list(2,4,6)
names(ej2)<-c("once", "doce", "trece")
print(ej2) #note que también podemos utilizar print para llamar los elementos.
## $once
## [1] 2
## 
## $doce
## [1] 4
## 
## $trece
## [1] 6

En las matrices también es posible utilizar nombres a los elementos:

m1<-matrix(1:6,nrow = 2, ncol = 3)
dimnames(m1)<-list(c("a","b"),c("d", "e","f"))

En una matriz todos los elementos deben ser de la misma clase mientras que en un dataframe esto no es necesario Luego vienen el video de subconjuntos y por ultimo leer y escribir datos.