Recuerda que un array es una colección de datos del mismo tipo con varias dimensiones. Observa el siguiente ejemplo en el que se crea un array de dimensiones 3x4x2.
a <- 1:24
dim(a) <- c(3, 4, 2)
a
Una matrix
es un array con dos dimensiones. Tienen una funcionalidad muy parecida, pero matrix es más 'cómoda'.
a1 <- array(9, dim = c(5, 4))
a2 <- matrix(1:20, nrow = 5) # como en FORTRAN
a3 <- matrix(1:20, nrow = 5, byrow = TRUE)
a4 <- 1:20
dim(a4) <- c(5, 4)
Con las coordenadas se obtienen los elementos particulares, como en los vectores:
a[1, 1, 1]
a[1, 1, 2]
a[3, 4, 2]
También podemos considerar subconjuntos de un array
a[2, , ] # es un array de dimensión c(4,2)
a4[1, ]
a4[, 2]
a4[c(1, 3), c(2, 4)]
y también se pueden dar las coordenadas matricialmente, por ejemplo:
im <- matrix(c(1, 3, 2, 4), nrow = 2)
im
a4[im]
x <- c(190, 8, 22, 191, 4, 1.7, 223, 80, 2, 210, 50, 3)
datos <- matrix(x, nrow = 4, byrow = T)
dim(datos)
ciudades <- c("Barna", "Tarraco", "Lleida", "Girona")
dimnames(datos) <- list(ciudades, NULL)
variables <- c("A", "B", "C")
dimnames(datos) <- list(ciudades, variables)
datos
dimnames(datos)
datos["Barna", ]
datos[, "C"]
a4 <- 1:20
dim(a4) <- c(5, 4)
attributes(a4)
colnames(a4) <- paste("v", 1:4, sep = "")
rownames(a4) <- paste("id", 1:5, sep = ".")
a4[, c("v1", "v3")]
attributes(a4)
matriz <- matrix(rnorm(20), ncol = 4)
o.matriz <- matriz[order(matriz[, 1]), ]
A %*% B
: producto de matricest(A)
: traspuesta de la matriz \( A \)solve(A,b)
: solución del sistema de ecuaciones \( Ax=b \).solve(A)
: inversa de la matriz \( A \)svd(A)
: descomposición en valores singularesqr(A)
: descomposición QReigen(A)
: valores y vectores propiosdiag(b)
: matriz diagonal (\( b \) es un vector)diag(A)
: matriz diagonal (\( A \) es una matriz)A %o% B == outer(A,B)
: producto exterior de dos vectores o matricesvar
, cov
y cor
calculan la varianza de \( x \) y la covarianza o correlación de \( x \) y \( y \) si éstos son vectores. Cuando \( x \) y \( y \) son matrices, entonces calculan las covarianzas (o correlaciones) entre las columnas de \( x \) y las columnas de \( y \).cov2cor
convierte 'eficientemente' una matriz de covarianzas en la correspondiente matriz de correlaciones.data(longley)
Cl <- cor(longley)
## Graphical Correlation Matrix:
symnum(Cl) # highly correlated
## Spearman's rho
cor(apply(longley, 2, rank))
cor(longley, method = "spearman") # mejor
La función outer(X, Y, FUN="*", ...)
proporciona de forma predifinda el producto exterior de los dos arrays. Sin embargo, podemos introducir otras funciones e incluso nuestras propias funciones.
x <- 1:9
names(x) <- x
# Multiplication & Power Tables
x %o% x
y <- 2:8
names(y) <- paste(y, ":", sep = "")
outer(y, x, "^")
Para combinar vectores, matrices o arrays utilizamos las instrucciones
rbind
y cbind
.
x1 <- 1:10
x2 <- 11:20
a6 <- diag(6) # matriz identidad
a7 <- cbind(x1, x2)
a8 <- rbind(x1, x2)
a24 <- cbind(a2, a4)
cbind(a4, a6) # no funciona
rbind(a4, a6) # no funciona
a9 <- matrix(rnorm(30), nrow = 5)
cbind(a4, a9)
rbind(a4, a9) # no funciona