Matrices:

Las matrices o variables indexadas (Arrays) son generalizaciones multidimensionales de vectores. De hecho, son vectores indexados por dos o más índices y que se imprimen de modo especial. Para crearlas utilizamos la función “matrix”. Si consultamos la ayuda de R, se nos mostrara los argumentos de esta función, acá se muestran los más importantes:

data: Un vector opcional de datos
nrow: El número de filas deseadas
ncol: El número de columnas deseadas
byrow: lógico. Si es FALSE (valor por defecto) la matriz es llenada por columnas, de otra manera la matriz es llenada por filas

Ejemplo:

matrix(5:34,nrow=5)
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    5   10   15   20   25   30
## [2,]    6   11   16   21   26   31
## [3,]    7   12   17   22   27   32
## [4,]    8   13   18   23   28   33
## [5,]    9   14   19   24   29   34
matrix(5:34,nrow=5, byrow = TRUE)
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    5    6    7    8    9   10
## [2,]   11   12   13   14   15   16
## [3,]   17   18   19   20   21   22
## [4,]   23   24   25   26   27   28
## [5,]   29   30   31   32   33   34
matrix(5:34,ncol=5, byrow = TRUE)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    5    6    7    8    9
## [2,]   10   11   12   13   14
## [3,]   15   16   17   18   19
## [4,]   20   21   22   23   24
## [5,]   25   26   27   28   29
## [6,]   30   31   32   33   34

Al igual que con vectores, podemos realizar operaciones con matrices:

m1<-matrix(1:12,ncol = 4)
m1
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
m2<-matrix(2*(1:12),ncol=4)
m2
##      [,1] [,2] [,3] [,4]
## [1,]    2    8   14   20
## [2,]    4   10   16   22
## [3,]    6   12   18   24
m1+m2 #realiza la suma elemento a elemento
##      [,1] [,2] [,3] [,4]
## [1,]    3   12   21   30
## [2,]    6   15   24   33
## [3,]    9   18   27   36
m1*m2 #realiza el producto elemento a elemento
##      [,1] [,2] [,3] [,4]
## [1,]    2   32   98  200
## [2,]    8   50  128  242
## [3,]   18   72  162  288
m1/m2 #realiza la división elemento a elemento
##      [,1] [,2] [,3] [,4]
## [1,]  0.5  0.5  0.5  0.5
## [2,]  0.5  0.5  0.5  0.5
## [3,]  0.5  0.5  0.5  0.5

Análogamente el resto de operaciones aritméticas.

También se puede realizar el producto matricial usando el operador %*%, tenga en cuenta que para que este producto este definido se necesita que el número de columnas de la primera matriz sea igual al número de filas de la segunda

m3<-matrix(1:12,ncol = 4)
m3
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
m4<-matrix(1:12,nrow = 4)
m4
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
## [3,]    3    7   11
## [4,]    4    8   12
m3%*%m4
##      [,1] [,2] [,3]
## [1,]   70  158  246
## [2,]   80  184  288
## [3,]   90  210  330

Acceder a la componentes de una matriz:

Ejemplo:

m3[2,4] #devuelve el elemento de m3 que est[a en la fila 2, columna 4
## [1] 11
m3[c(2,3),c(1,4)] # devuelve las filas 2 y 3 de las columnas 1 y 4
##      [,1] [,2]
## [1,]    2   11
## [2,]    3   12
m3[,3] #devuelve todas las filas de la columna 3
## [1] 7 8 9

También podemos acceder usando operaciones lógicas:
Supongamos que queremos extraer los elementos pares y mayores que 8

m5<-matrix(c(16,24,56,2,6,-4,4,0,6,10:20),4)
m5
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   16    6    6   13   17
## [2,]   24   -4   10   14   18
## [3,]   56    4   11   15   19
## [4,]    2    0   12   16   20
m5[m5>8 & m5%%2==0] # %% operador módulo (resto de una división])
## [1] 16 24 56 10 12 14 16 18 20

Data.frames:

Una hoja de datos (data.frames) es muy similar a una matriz, la diferencia fundamental con la matriz de datos es que este objeto no tiene por qué estar compuesto de elementos del mismo tipo. Los objetos pueden ser vectores, factores, matrices, listas e incluso hojas de datos.

Ejemplo:

datos1<-data.frame(Peso=c(90,120,56), Altura=c(1.90,1.87,1.70)) 
datos1
##   Peso Altura
## 1   90   1.90
## 2  120   1.87
## 3   56   1.70
datos2<-data.frame(datos1, Sexo=c("Hombre","Hombre","Mujer")) 
datos2 
##   Peso Altura   Sexo
## 1   90   1.90 Hombre
## 2  120   1.87 Hombre
## 3   56   1.70  Mujer

Para acceder a los elementos de un data.frame puede imitar lo realizado con vectores y matrices.

Existe otra manera de acceder a los elementos de una matriz; usando el operador $

datos2$Altura
## [1] 1.90 1.87 1.70