Uso de Listas, Matrices y Arrays en R

Listas

Conectan objetos donde cada uno puede tener una estructura distinta.
Una lista tiene una serie de componentes, a los que deberemos asignar un nombre.
Soporta menos operaciones que otras estructuras de datos debido a la falta de homogeneidad de los datos que la componen

familia <- list(padre="peter",madre="maria",numero.hijos=3, nombre.hijos=c("juan","carlos","eva"),edades.hijos=c(7,5,3),ciudad="madrid")

$padre
[1] "peter"

$madre
[1] "maria"

$numero.hijos
[1] 3

$nombre.hijos
[1] "juan" "carlos" "eva"   

$edades.hijos
[1] 7 5 3

$ciudad
[1] "madrid"

names(familia)
[1] "padre"        "madre"        "numero.hijos" "nombre.hijos" "edades.hijos" "ciudad"      

familia$padre
[1] "peter"

familia$numero.hijos
[1] 3

familia[[1]]
[1] "peter"

familia[[3]]
[1] 3

 

Matrices

Conjunto de elementos bidimensional.

Sintasis: matrix(data, nrow, ncol, byrow=F)

dataDatos que componen la matriz

nrowNúmero de filas

ncolNúmero de columnas

byrowIndica el orden en que se colocan los datos, por defecto se colocan por columnas.

matrix(1:6)
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
[5,]    5
[6,]    6

matrix(1:6, nrow=2)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

x <- matrix(1:6, nrow=2, byrow=T)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

 

Funciones con matrices

dim – Retorna las dimensiones de la matriz.

dimnames – Asigna o retorna el nombre de las dimensiones de la matriz.

colnames – Asigna o retorna el nombre de las columnas de la matriz.

rownames – Asigna o retorna el nombre de las filas de la matriz.

mode – Retorna el tipo de datos de los elementos de una matriz.

length – Retorna el número total de elementos de una matriz.

is.matrix – Retorna T si el objeto es una matriz, F si no lo es.

[ , ] – Consulta los elementos dentro de la matriz.

apply – Aplica una función sobre las filas o columnas de una matriz.

cbind – Añade una columna a la matriz dada.

rbind – Añade una fila a la matriz dada.

matrix(1:6)
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
[5,]    5
[6,]    6

matrix(1:6, nrow=2)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

x <- matrix(1:6, nrow=2, byrow=T) 

dim(x)
[1] 2 3

dimnames(x)<-list(c("edad","peso"), c("paco","juan","maria"))
x
     paco juan maria
edad    1    2     3
peso    4    5     6

dimnames(x)
[[1]]
[1] "edad" "peso"
[[2]]
[1] "paco"  "juan"  "maria"

colnames(x)
[1] "paco"  "juan"  "maria"

rownames(x)
[1] "edad" "peso"

mode(x)
[1] "numeric"

length(x)
[1] 6

is.matrix(x)
[1] TRUE

x[1,2]
[1] 2

x[,1]
edad peso 
   1    4 

x[1,]
 paco  juan maria 
    1     2     3 

apply(x,1, mean)
edad peso 
   2    5 

apply(x,2, mean)
 paco  juan maria 
  2.5   3.5   4.5 

apply(x,1, sum)
edad peso 
   6   15 

apply(x,2, summary)
        paco juan maria
Min.    1.00 2.00  3.00
1st Qu. 1.75 2.75  3.75
Median  2.50 3.50  4.50
Mean    2.50 3.50  4.50
3rd Qu. 3.25 4.25  5.25
Max.    4.00 5.00  6.00

cbind(x,c(0,0)) 
     paco juan maria  
edad    1    2     3 0
peso    4    5     6 0

rbind(x,c(0,0,0))
     paco juan maria
edad    1    2     3
peso    4    5     6
        0    0     0

Arrays

Conectan objetos donde todos los elementos deben ser del mismo tipo (todos números o todos caracteres).

datos<-array(c(45,46,65,55,170,167,48,49,68,56,169,165),c(2,3,2)) 
dimnames(datos)<-list(c("hombres","mujeres"),c("edad","peso","altura"), c("cadiz","soria"))
, , cadiz

        edad peso altura
hombres   45   65    170
mujeres   46   55    167

, , soria

        edad peso altura
hombres   48   68    169
mujeres   49   56    165

datos[,,"soria"]
        edad peso altura
hombres   48   68    169
mujeres   49   56    165

apply(datos,2,mean)
  edad   peso altura 
 47.00  61.00 167.75