Archivo de la categoría: matrices

Matrices en R-project (Programación)

Para Usuarios R Nicaragua. Búscanos en Facebook y conviertete en parte de esta comunidad de grupo R.

Practiquemos un poco de matrice en R utilizando las clases de O’reilly, marca registrada.

Hagamos una matrix de 3 filas por 4 columnas, compuestas de ceros.

>matrix(0, 3, 4)

.       [,1] [,2] [,3] [,4]
[1,]     0     0      0     0
[2,]     0     0      0     0
[3,]     0     0      0     0
.La matrix anterior esta conformada con 12 elementos. Vamos pues a llenarla con 12 números. manera sencilla podemos aplicar a forma de ejemplo, la secuencia del 1 al 12.

>a <- 1:12

.Para mostrar el valor de “a” escribimos.

>print(a)

La salidad será:

[1] 1 2 3 4 5 6 7 8 9 10 11 12

.Introduzcamos “a” a la matriz.

 >matrix(a, 3, 4)


.         [,1] [,2] [,3] [,4]
[1,]      1       4     7   10
[2,]      2       5     8    11
[3,]      3       6     9    12
.Debemos destacar que los elementos empiezan a ordenarse de arriba hacia abajo.
Podemos crear una matriz con la función dim.

Por ejemplo, crear el vector, para este caso solo tomaremos “a”.
>dim(a) <- c(3, 4)

.Simplemente colocamos las dimenciones. Como resultado quedará la matriz:

.       [,1] [,2] [,3] [,4]
[1,]      1     4     7    10
[2,]     2     5     8     11
[3,]     3     6     9     12

.”a” ya será una matriz.

.Podemos extraer la el elemento de la tercera fila y segunda columna de esta manera.

.Cambiar el 6 por 4.
a[3, 2] <- 4

.Extraer una fila, por ejemplo, la fila 2.
a[2,]
[1] 2, 5, 8, 11

.Extraer una columna, por ejemplo, la fila 4.
a[,4]
[1] 10, 11, 12

.Extraer múltiples filas y múltiples columnas.
a[, 2:4]
.        [,1] [,2] [,3]
[1,]     4     7    10
[2,]     5     8     11

.Graficar una matriz es sencillo. Podemos utilizar la función contour.
elevacion <- matrix(1, 10, 10)
elevacion[4, 6] <- 0
contour(elevacion)

. En 3D.
>persp(elevacion)

.Una mejor vista


 

>persp(elevaion, expand=0.2)

Hazte miembro de nuestro grupo en facebook o en google plus. Usuarios R Nicaragua.

Lic. Deybi Morales León

morales.economia@gmail.com

Algebra matricial en R

R puede ser un sustituto perfecto a Matlab y excel para trabajar matrices, aquí le comparto un documento elaborado para la comunidad sobre cómo trabajar matrices con R-project.

Podemos convertir vectores en matrices.
>X<-matrix(data, nrow, ncol, byrow)
La sintaxis empieza con el nombre de la matriz, luego la funciónpara generar la matriz, seguido de abrir paréntesis, el nombre del vector creado, sigue el número de filas, número de columnas y cómoempezarán las observaciones por filas o por columnas. Para Darle elorden de cómo agrupar por fila agregamos byrow=TRUE, para que seagrupen en columnas byrow=FALSE.Miremos el ejemplo:
>seq1 <- seq(1:6)
>matrix1<-matrix(seq1,3,2, byrow=TRUE)
>matrix1
Se notará que se empiezan a grupar las las observaciones de fila en fila. Pero ecuando aplicamos byrow=FALSE, estas se agruparánen columnas.

> seq1 matrix1 matrix1

Es simpática la forma en que se presenta un matriz en R. Si quer-emos identificar la columna dos solo debemos guiarnos por el en-cabezado, en el anterior caso [,2].Cada que veamos una matrix debemos recordar que se conforma de [filas, columnas]. nrow=número de filas y ncol=número de colum-nas.para conocer las dimenciones de una matriz creada utilizamos la función dim:
> dim(matrix1)

Imaginémosnos en el caso de unir dos matrices con matrices o conun vector, entonce utilizaremos la función cbind:
> v1 matrix2 matrix2

La función cbind convierte data.frame en matrices.
> A

En la tabla anterior tenemos la tasa anual de inflación por paísescentromericanos. A través de la función cbind la hemos convertido a la matriz A.Si tuvieramos la tasa de inflación para el año 2002 en Belice, soloaplicamos según la ubicación del elemento para cambiar la obser- vación. Por ejemplo supongamos que fue de dos puntos:
> A[1,3]=2
> A

Para eliminar el los encabezados o nombres de columnas
> dimnames(A)

Si queremos extraer un elemento de la matriz solo damos la ubi-cación del elemento. Supongamos que queremos la tasa de inflación de Nicaragua en el 2006. Esta se ubica en la fila en la fila 6, columna 8.
> A[6,7]

Podemos ponerle nombres a las filas o columnas de una matriz,supongamos que creamos la matriz 3×4:
> B

Agreguemos nombres o encabezados. Arbitrariamente diremosque son tasas de inflación del 2001 al 2004 para Nicaragua, Belice y Honduras:
> dimnames(B)

Si queremos eliminar los encabezados solo aplicamos:
> dimnames(B)

Obtener las sumas de las columnas de la matriz A
>colSums(A)

Obtener las sumas de las filas de la matriz B
rowSums(B)

Multiplicar, sumar, restar o dividir la matriz A por un escalar onúmero
> k A+k
> A*k
> A/k
> A+3
> A-3
> A*3
> A/3

Obtener la medias de las filas o de las columnas de la matriz A
> rowMeans(A)
> colMeans(A)

Otra función útil es cbind ó rbind. Estas la utilizamos para unir matrices, observe el ejemplo:
> matrix1 matrix1
> matrix2 matrix2
> cbind(matrix1,matrix2)
> matrix(cbind(matrix1,matrix2))
> matrix(cbind(matrix1,matrix2),2)
> matrix(rbind(matrix1,matrix2),2)

Otros usuarios en vez de utilizar matriz, utiliza el comando array.
> array(rbind(matrix1,matrix2),2)
> array(rbind(matrix1,matrix2))

> array(rbind(matrix1,matrix2))
> array(rbind(matrix1,matrix2))
> array(c(1,2,3,4,5,6,7,4), c(2,4))
> array(c(1:3), c(2,4))

Saludos.

Deybi Antonio Morales León
morales.economia@gmail.com