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