matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
donde matrix() corresponde al nombre de la función y todo lo que está dentro de los paréntesis son los argumentos de dicha función.
Argumentos
data: Es un vector de datos opcional
nrow: número deseado de filas
ncol: número deseado de columnas
byrow: valor lógico. Si es falso (valor por defecto), la matriz se llena por orden columna, de otra manera se llenará primero por filas
dimnames: utilizado para darles nombres a las filas y a las columnas, respectivamente
+dimnames=list(c("Blanco", "Negro", "Rojo"), c("Toyota", "Audi", "Nissan")))
Toyota Audi Nissan
Blanco 5 4 14
Negro 7 1 3
Rojo 13 7 11
Se hubiera logrado el mismo resultado si sólo se escribe uno de los argumentos nrow=3 ó ncol=3, no hace falta escribir los dos, ahora veamos cómo cambia el resultado si indicamos en byrow=T (TRUE), es decir que la matriz se llene por columnas y no por filas.
A<-matrix(c(5, 7, 13, 4, 1, 7, 14, 3, 11), nrow=3, ncol=3, byrow=T, +dimnames=list(c("Blanco", "Negro", "Rojo"), c("Toyota", "Audi", "Nissan")))
Toyota Audi Nissan
Blanco 5 7 13
Negro 4 1 7
Rojo 14 3 11
Para obtener más información sobre las matrices escriba ?matrix y ejecútelo pulsando enter si trabaja directamente en la página principal de R o pulsando Ctrl + r si trabaja desde un script (recomendado)
Agregando Filas y Columnas a una matriz: funciones rbind y cbind
Para agregar una fila a una matriz ya existente como en el caso de la matriz A creada en el ejemplo anterior, se debe utilizar la función rbind() y se usará la función cbind() para añadir columnas a una matriz. Como ejemplo agregaremos un nuevo color a la matriz A, con lo cual se debe entender que se agregará una fila más debajo de Rojo la cual llamaremos Azul y contendrá los valores 8, 5, 7. Con lo cual haremos:
Azul<-c(8,5,7) # con esto creamos el vector Azul con sus correspondientes elementos
A<-rbind(A, Azul)
Toyota Audi Nissan
Blanco 5 7 13
Negro 4 1 7
Rojo 14 3 11
Azul 8 5 7
Ahora agregaremos a esa misma matriz A, una nueva columna llamada Hyundai y contendrá los siguientes valores 2, 7, 3, 5
Hyundai<-c(2,7,3,5) #con esto creamos el vector Hyundai con sus correspondientes elementos
A<-cbind(A,Hyundai)
Toyota Audi Nissan Hyundai
Blanco 5 7 13 2
Negro 4 1 7 7
Rojo 14 3 11 3
Azul 8 5 7 5
Seleccionando elementos de una matriz.
Los elementos de una matriz están indexados con dos índices lo cual hace que resulte fácil acceder a los elementos y trabajar con ellos si lo que nos interesa es sólo una parte de la información contenida en una matriz y no la matriz entera, esto se logra con el operador de indexación [i, j] donde i es el elemento fila y j es el elemento columna, esto es así porque si A es una matriz, entonces sus elementos serán $a_{i,j}$, de manera que si quisiéramos seleccionar el número de automóviles blancos correspondiente a la marca Audi podríamos hacerlo de dos maneras:
1. Escribimos el nombre de la matriz y luego entre corchetes la ubicación siendo [nombre de fila, nombre de columna], los nombres deberán ir entre comillas.
A["Blanco", "Audi"]
[1] 7
2. Escribimos el nombre de la matriz y luego entre corchetes la ubicación siendo [número de fila, número de columna]
En la segunda orden lo que se indica a R es que me muestre el elemento que ocupa la posición (1,2), es decir, aquél elemento que está en la fila 1 y columna 2.
A["Blanco",]
Toyota Audi Nissan Hyundai
5 7 13 2
A manera de ejercicios haremos lo siguiente:
Eliminando filas y columnas
Ya hemos visto cómo se agregan filas y columnas a una matriz ya existente, pero a veces es útil también eliminarlas y así de fácil como es agregar así de fácil es eliminar también.
A continuación vamos a eliminar la fila y la columna que agregamos en el parte 5 y 6 del ejercicio anterior, es decir, vamos a eliminar la fila Verde y la columna Kia.
Para eliminar filas o columnas hay que tener en cuenta la forma de indexar Matrices, aquí hay un documento que explica muy bien esto.
Transponer una Matriz
Una función muy útil es la transposición de matrices, como ya se había mencionado anteriormente en Introducción a las funciones básicas de R: Funciones con Vectores, la función t() es para transponer tanto vectores como matrices, en este caso la usaremos para transponer la matriz A que hemos creado y editado a lo largo de toda esta página.
Suma y resta de matrices
Dos matrices son conformables para la suma y resta si son de la misma dimensión, teniendo esto en mente, en R podemos fácilmente sumar y restar matrices indicando la suma con + y la resta con –
Multiplicación de Matrices
Tal y como se había comentado anteriormente en Introducción a las funciones básicas de R: Funciones con Vectores, hay dos formas de multiplicar matrices: la multiplicación elemento a elemento y la multiplicación definida por el álgebra matricial donde debe cumplirse la condición de conformabilidad para la multiplicación donde el número de columnas de la primera matriz debe ser igual al número de filas de la segunda. Para multiplicar dos matrices elemento a elemento estas deben ser de igual dimensión.
Determinante de una matriz
Para obtener el determinante de cualquier matriz, se usa la función det(), recuérdese que para poder calcular el determinante de cualquier matriz esta debe ser cuadrada. El determinante de nuestra matriz A es:
det(A)
[1] 3028
solve(A)
Blanco Negro Rojo Azul
Toyota -0.06737120 -0.05614267 0.07793923 0.05878468
Audi 0.03830911 -0.13474240 -0.11294584 0.24108322
Nissan 0.09114927 0.07595773 0.04161162 -0.16776750
Hyundai -0.05812417 0.11822985 -0.07001321 0.09973580
Extrayendo la diagonal principal de una matriz
En ocasiones es muy importante trabajar sólo con los valores de la diagonal principal de una matriz, por ejemplo en el caso de la diagonal de la matriz de varianzas y covarianzas, donde la diagonal contienen los valores de las varianzas de las variables aleatorias, en este caso resultaría útil contar con una función que nos proporciones esa información dada una matriz, esa función es diag(), con esta función obtendremos la diagonal de la matriz A y de la inversa de A.
Tal y como se aprecia en los resultados, la función diag() nos devuelve un vector que contiene los elementos de la diagonal de la matriz que se le ha proporcionado. Nótese que si a la función diag() le proporcionamos una matriz, nos devuelve su diagonal, pero ¿Qué pasaría si en lugar de darle como argumento una matriz, le damos un número concreto? La respuesta a esta pregunta da pie a la siguiente sección.
Generar una matriz unitaria de dimensión m x m
Si a la función diag() en vez de proporcionarle una matriz para que nos devuelva su diagonal, le proporcionamos un número (un escalar) nos devuelve una matriz unitaria con elementos en su diagonal principal igual al número que le hemos proporcionado y de dimensión igual a ese mismo número multiplicado por él mismo, puesto que la matriz unitaria es cuadrada, es decir que si a R le decimos que ejecute diag(3) nos construirá una matriz unitaria 3x3, veámoslo a continuación.
Además hemos creado una matriz unitaria 5x5 y otra 8x8.
¿Ha sido de utilidad? ¿Ha sido claro? Deja tu comentario!
Jilber Urbina
nrow: número deseado de filas
ncol: número deseado de columnas
byrow: valor lógico. Si es falso (valor por defecto), la matriz se llena por orden columna, de otra manera se llenará primero por filas
dimnames: utilizado para darles nombres a las filas y a las columnas, respectivamente
Ejemplo:A<-matrix(c(5, 7, 13, 4, 1, 7, 14, 3, 11), nrow=3, ncol=3, byrow=F,
+dimnames=list(c("Blanco", "Negro", "Rojo"), c("Toyota", "Audi", "Nissan")))
Toyota Audi Nissan
Blanco 5 4 14
Negro 7 1 3
Rojo 13 7 11
Se hubiera logrado el mismo resultado si sólo se escribe uno de los argumentos nrow=3 ó ncol=3, no hace falta escribir los dos, ahora veamos cómo cambia el resultado si indicamos en byrow=T (TRUE), es decir que la matriz se llene por columnas y no por filas.
A<-matrix(c(5, 7, 13, 4, 1, 7, 14, 3, 11), nrow=3, ncol=3, byrow=T, +dimnames=list(c("Blanco", "Negro", "Rojo"), c("Toyota", "Audi", "Nissan")))
Toyota Audi Nissan
Blanco 5 7 13
Negro 4 1 7
Rojo 14 3 11
Para obtener más información sobre las matrices escriba ?matrix y ejecútelo pulsando enter si trabaja directamente en la página principal de R o pulsando Ctrl + r si trabaja desde un script (recomendado)
Agregando Filas y Columnas a una matriz: funciones rbind y cbind
Para agregar una fila a una matriz ya existente como en el caso de la matriz A creada en el ejemplo anterior, se debe utilizar la función rbind() y se usará la función cbind() para añadir columnas a una matriz. Como ejemplo agregaremos un nuevo color a la matriz A, con lo cual se debe entender que se agregará una fila más debajo de Rojo la cual llamaremos Azul y contendrá los valores 8, 5, 7. Con lo cual haremos:
Azul<-c(8,5,7) # con esto creamos el vector Azul con sus correspondientes elementos
A<-rbind(A, Azul)
Toyota Audi Nissan
Blanco 5 7 13
Negro 4 1 7
Rojo 14 3 11
Azul 8 5 7
Ahora agregaremos a esa misma matriz A, una nueva columna llamada Hyundai y contendrá los siguientes valores 2, 7, 3, 5
Hyundai<-c(2,7,3,5) #con esto creamos el vector Hyundai con sus correspondientes elementos
A<-cbind(A,Hyundai)
Toyota Audi Nissan Hyundai
Blanco 5 7 13 2
Negro 4 1 7 7
Rojo 14 3 11 3
Azul 8 5 7 5
Seleccionando elementos de una matriz.
Los elementos de una matriz están indexados con dos índices lo cual hace que resulte fácil acceder a los elementos y trabajar con ellos si lo que nos interesa es sólo una parte de la información contenida en una matriz y no la matriz entera, esto se logra con el operador de indexación [i, j] donde i es el elemento fila y j es el elemento columna, esto es así porque si A es una matriz, entonces sus elementos serán $a_{i,j}$, de manera que si quisiéramos seleccionar el número de automóviles blancos correspondiente a la marca Audi podríamos hacerlo de dos maneras:
1. Escribimos el nombre de la matriz y luego entre corchetes la ubicación siendo [nombre de fila, nombre de columna], los nombres deberán ir entre comillas.
A["Blanco", "Audi"]
[1] 7
2. Escribimos el nombre de la matriz y luego entre corchetes la ubicación siendo [número de fila, número de columna]
A[1,2]
[1] 7
[1] 7
En la segunda orden lo que se indica a R es que me muestre el elemento que ocupa la posición (1,2), es decir, aquél elemento que está en la fila 1 y columna 2.
También se pueden seleccionar vectores enteros, vamos a seleccionar todos los vehículos correspondientes al color blanco, para ello lo que le debemos pedir a R es que nos seleccione y muestre todos los elementos que están en la fila 1, esto se hace así:
A[1,] # otra forma de hacerlo es A["Blanco",]
Toyota Audi Nissan Hyundai
5 7 13 2
A manera de ejercicios haremos lo siguiente:
- Seleccionar todos los vehículos negros y rojos
- Seleccionar todos los vehículos marca Toyota y Audi
- Seleccionar sólo los Nissan y Hyundai azules
- Agregar una nueva marca: Kia con valores 7, 1, 9, 12
- Agregar una nueva fila llamada Verde con los siguientes valores 4, 5, 2, 1, 0
- Seleccionar los Hyundai y Kia azules y verdes
1. Seleccionar todos los vehículos negros y rojos A[2:3,] Toyota Audi Nissan Hyundai Negro 4 1 7 7 Rojo 14 3 11 3 | 4. Agregar una nueva marca: Kia con valores 7, 1, 9, 12 A<-cbind(A,Kia) Toyota Audi Nissan Hyundai Kia Blanco 5 7 13 2 7 Negro 4 1 7 7 1 Rojo 14 3 11 3 9 Azul 8 5 7 5 12 |
2. Seleccionar todos los vehículos marca Toyota y Audi A[,1:2] Toyota Audi Blanco 5 7 Negro 4 1 Rojo 14 3 Azul 8 5 | 5. Agregar una nueva fila llamada Verde con los siguientes valores 4, 5, 2, 1, 0 A<-rbind(A, Verde) Toyota Audi Nissan Hyundai Kia Blanco 5 7 13 2 7 Negro 4 1 7 7 1 Rojo 14 3 11 3 9 Azul 8 5 7 5 12 Verde 4 5 2 1 0 |
3. Seleccionar sólo los Nissan y Hyundai azules A[4,3:4] Nissan Hyundai 7 5 | 6. Seleccionar los Hyundai y Kia azules y verdes A[4:5,4:5] Hyundai Kia Azul 5 12 Verde 1 0 |
Ya hemos visto cómo se agregan filas y columnas a una matriz ya existente, pero a veces es útil también eliminarlas y así de fácil como es agregar así de fácil es eliminar también.
A continuación vamos a eliminar la fila y la columna que agregamos en el parte 5 y 6 del ejercicio anterior, es decir, vamos a eliminar la fila Verde y la columna Kia.
Para eliminar filas o columnas hay que tener en cuenta la forma de indexar Matrices, aquí hay un documento que explica muy bien esto.
Eliminando la columna Kia | Eliminando la fila Verde |
A<-A[ ,-5] A<-A[ ,-"Kia"] Toyota Audi Nissan Hyundai Blanco 5 7 13 2 Negro 4 1 7 7 Rojo 14 3 11 3 Azul 8 5 7 5 Verde 4 5 2 1 También se pudo haber eliminado de una sola vez A<-A[-5,-5] ó A<-A[-"Verde",-"Kia"] | A<-A[-5,] A<-A[-"Verde",] Toyota Audi Nissan Hyundai Blanco 5 7 13 2 Negro 4 1 7 7 Rojo 14 3 11 3 Azul 8 5 7 5 |
Una función muy útil es la transposición de matrices, como ya se había mencionado anteriormente en Introducción a las funciones básicas de R: Funciones con Vectores, la función t() es para transponer tanto vectores como matrices, en este caso la usaremos para transponer la matriz A que hemos creado y editado a lo largo de toda esta página.
Matriz A print(A) Toyota Audi Nissan Hyundai Blanco 5 7 13 2 Negro 4 1 7 7 Rojo 14 3 11 3 Azul 8 5 7 5 | Transpuesta de A t(A) Blanco Negro Rojo Azul Toyota 5 4 14 8 Audi 7 1 3 5 Nissan 13 7 11 7 Hyundai 2 7 3 5 |
Dos matrices son conformables para la suma y resta si son de la misma dimensión, teniendo esto en mente, en R podemos fácilmente sumar y restar matrices indicando la suma con + y la resta con –
A continuación le sumaremos a la matriz A de nuestro ejemplo anterior su transpuesta y luego a la matriz A le restaremos su transpuesta.
A + t(A) A+t(A) Toyota Audi Nissan Hyundai Blanco 10 11 27 10 Negro 11 2 10 12 Rojo 27 10 22 10 Azul 10 12 10 10 | A - t(A) A-t(A) Toyota Audi Nissan Hyundai Blanco 0 3 -1 -6 Negro -3 0 4 2 Rojo 1 -4 0 -4 Azul 6 -2 4 0 |
Tal y como se había comentado anteriormente en Introducción a las funciones básicas de R: Funciones con Vectores, hay dos formas de multiplicar matrices: la multiplicación elemento a elemento y la multiplicación definida por el álgebra matricial donde debe cumplirse la condición de conformabilidad para la multiplicación donde el número de columnas de la primera matriz debe ser igual al número de filas de la segunda. Para multiplicar dos matrices elemento a elemento estas deben ser de igual dimensión.
Debe recordarse que la multiplicación elemento a elemento se indica con el símbolo * y la multiplicación matricial con los símbolos %*%, a continuación se hacen estas dos multiplicaciones, multiplicaremos a la matriz A por su transpuesta:
Multiplicación elemento a elemento A*t(A) Toyota Audi Nissan Hyundai Blanco 25 28 182 16 Negro 28 1 21 35 Rojo 182 21 121 21 Azul 16 35 21 25 | Multiplicación matricial A%*%t(A) Blanco Negro Rojo Azul Blanco 247 132 240 176 Negro 132 115 157 121 Rojo 240 157 335 219 Azul 176 121 219 163 |
Para obtener el determinante de cualquier matriz, se usa la función det(), recuérdese que para poder calcular el determinante de cualquier matriz esta debe ser cuadrada. El determinante de nuestra matriz A es:
det(A)
[1] 3028
Inversa de una matriz
Es muy sencillo calcular la inversa de una matriz en R, todo lo que se necesita es aplicar la función solve() a la matriz de la cual se desea obtener su inversa. Es importante tener en en cuenta que sólo las matrices cuyo determinante sea diferente de cero tiene tienen una inversa definida (son invertibles), en nuestro caso la matriz A tiene determinante diferente de cero con lo cual se le puede calcular la inversa y esta es:
solve(A)
Blanco Negro Rojo Azul
Toyota -0.06737120 -0.05614267 0.07793923 0.05878468
Audi 0.03830911 -0.13474240 -0.11294584 0.24108322
Nissan 0.09114927 0.07595773 0.04161162 -0.16776750
Hyundai -0.05812417 0.11822985 -0.07001321 0.09973580
Extrayendo la diagonal principal de una matriz
En ocasiones es muy importante trabajar sólo con los valores de la diagonal principal de una matriz, por ejemplo en el caso de la diagonal de la matriz de varianzas y covarianzas, donde la diagonal contienen los valores de las varianzas de las variables aleatorias, en este caso resultaría útil contar con una función que nos proporciones esa información dada una matriz, esa función es diag(), con esta función obtendremos la diagonal de la matriz A y de la inversa de A.
Diagonal de A diag(A) [1] 5 1 11 5 | Diagonal de la inversa de A diag(solve(A)) [1] -0.06737120 -0.13474240 0.04161162 0.09973580 |
Generar una matriz unitaria de dimensión m x m
Si a la función diag() en vez de proporcionarle una matriz para que nos devuelva su diagonal, le proporcionamos un número (un escalar) nos devuelve una matriz unitaria con elementos en su diagonal principal igual al número que le hemos proporcionado y de dimensión igual a ese mismo número multiplicado por él mismo, puesto que la matriz unitaria es cuadrada, es decir que si a R le decimos que ejecute diag(3) nos construirá una matriz unitaria 3x3, veámoslo a continuación.
diag(3) [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1 | diag(5) [,1] [,2] [,3] [,4] [,5] [1,] 1 0 0 0 0 [2,] 0 1 0 0 0 [3,] 0 0 1 0 0 [4,] 0 0 0 1 0 [5,] 0 0 0 0 1 | diag(8) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 1 0 0 0 0 0 0 0 [2,] 0 1 0 0 0 0 0 0 [3,] 0 0 1 0 0 0 0 0 [4,] 0 0 0 1 0 0 0 0 [5,] 0 0 0 0 1 0 0 0 [6,] 0 0 0 0 0 1 0 0 [7,] 0 0 0 0 0 0 1 0 [8,] 0 0 0 0 0 0 0 1 |
Además hemos creado una matriz unitaria 5x5 y otra 8x8.
¿Ha sido de utilidad? ¿Ha sido claro? Deja tu comentario!
Jilber Urbina
Hola,os pregunto: Como podria eleminar una fila en una matriz.
ResponderEliminarAgradezco vuestra ayuda
Ana
# Creo una matriz A 5x5 para ilustar el ejemplo
ResponderEliminarset.seed(123)
columnas <- paste("Columna", 1:5, sep=" ")
filas <- paste("Fila", 1:5, sep=" ")
A <- matrix(rnorm(50), 5, 5, dimnames=list(filas, columnas))
# Recordá la indexación de matrices:
# podés acceder a los elementos de una fila y una columna através del operador []:
# Matriz[Fila, Columna]
# si tenés una matriz A 5x5, y querés eliminar la fila 5 y mantener todo el resto
# de la información, basta con indicar A[-5,] esto indica que te que elimine la fila 5
# pero que te mantenga todas las columnas. Abajo algunos ejemplos.
### Eliminar ·Fila 5· de la matriz A
A[-5, ] # Esto indica a R que tiene que darte de la matriz A todas las filas
# excepto la 5, pero manteniendote todas las columnas
# podés ver indexación de matrices en
# http://cran.r-project.org/doc/manuals/R-intro.html#Index-matrices
## Eliminar dos filas consecutivas: la 4 y la 5
A[-(4:5),]
## Eliminar dos filas no consecutivas: la 1 y la 5
A[-c(1,5), ]
# Eliminar una columna concreta, es lo mismo, por ejemplo eliminando la columna 5
A[ ,-5]
# eliminado fila 5 y columna 5
A[-5,-5]
# Espero que te sirva.
Muchas Gracias por la información, me sirvió mucho :)
ResponderEliminarHoli
EliminarTengo una duda con un "Reshape"
ResponderEliminarTengo una matriz:
a b c
x 1 2 3
y 3 3 2
y la necesito así:
x a 1
x b 2
x c 3
y a 3
y b 3
y c 2
Saludos!!
Fácilmente se puede realizar con la función 'melt' del paquete 'reshape'. Usa las siguientes líneas:
Eliminarinstall.packages("reshape")
library(reshape)
melt(t(mat))[, c(2,1,3)]
De super utilidad! Gracias
ResponderEliminarhola, si tengo un modelo y dentro de este modelo se genera un vector llamado estimate, como multiplico este vector por cada renglon de una tabla de datos?
ResponderEliminarComo puedo sumar los números de la diagonal?
ResponderEliminarsum(diag(nombre_de_tu_matriz))
EliminarLa función diag(·) extrae los elementos de la diagonal principal de una matriz, en tanto que la función sum(·), suma los elementos que le han sido proporcionados.
Este comentario ha sido eliminado por un administrador del blog.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarhola... como puedo obtener el rango de una matriz???
ResponderEliminarAcá te propongo 3 opciones sencillas:
Eliminarsea A, tu matriz definida de la siguiente manera A <- matrix(1:4, 2)
Opción 1, usar función 'rankMatrix'
library(Matrix)
rankMatrix(A)
Opción 2, contar el número de autovalores distintos de cero
sum(eigen(A)$values!=0)
Opción 3, con la función 'qr'
qr(A)$rank
¿Cómo puedo añadir, en un array, una columna resultante de operar con otras 2 columnas? Osea, se trataría de hacer una operación a todas las matrices que forman mi array de dimensión N.
ResponderEliminarGracias!
estoy tratando de correr un código pero no entiendo esta parte de las diagonales
ResponderEliminareste es el código
W<-diag(0,I)
Error en diag(0, I) : valor de 'nrow' no válido (demasiado grande o NA)
> for(i in 1:I){
+ a<-ss[i]
+ for(k in 1:num[i]){
+ W[i,adj[a+k-1]]<-1}
+ }
Error en 1:I : Argumento NA/NaN
como elimino columnas o filas que contengan NaN
ResponderEliminarTengo una matriz con determinante del orden e^-18 (es distinto de cero,pero no mucho), el caso es que no me deja invertirla, ¿cual es la forma de proceder en estos casos? (¿el valor del determinante es ese por errores en el redondeo cuando deberia ser 0?)
ResponderEliminarDe mucha utilidad, muchas gracias.
ResponderEliminarTengo una duda, cómo puedo invertir el orden de los elementos de una matriz? Es decir, si tengo una matriz así:
A=[1 5 6 8
2 7 8 3
3 2 5 7]
cómo puedo obtener esto:
B=[3 2 5 7
2 7 8 3
1 5 6 8]
Muchas gracias!
Una forma de hacerlo es A[rev(1:nrow(A)), ]
EliminarEjemplo
# creando tu matiz en R
A <- matrix(c(1,5,6,8,
2,7,8,3,
3,2,5,7), ncol=4, byrow=TRUE)
A
[,1] [,2] [,3] [,4]
[1,] 1 5 6 8
[2,] 2 7 8 3
[3,] 3 2 5 7
# cambiando el orden
A[rev(1:nrow(A)), ]
[,1] [,2] [,3] [,4]
[1,] 3 2 5 7
[2,] 2 7 8 3
[3,] 1 5 6 8
como multiplico un numero por una matriz?
ResponderEliminarcomo multiplico un numero por una matriz?
ResponderEliminarSimplemente hacés el producto usando el operador '*'. Ejemplo
ResponderEliminar> A <- matrix(1:4, 2) # Crea una matrix 2x2
> 2*A # producto de un número con una matriz
[,1] [,2]
[1,] 2 6
[2,] 4 8
¿Como puedo calcular la entrada de una matriz? Por ejemplo la entrada (2,3)
ResponderEliminarNo entiendo tu pregunta, aclara un poco más.
ResponderEliminarHola buenas, el ejercicio es el siguiente:"Crea una función que, dada un número n ∈ N y un valor k ∈ R, devuelva la matriz n × n:" no puedo adjuntar fotos pero el resultado es una matriz con todos los valores 1, menos en la diagonal que aparece el valor "k" (de dimension nxn).
ResponderEliminarYo tengo puesto esto, pero no se por que no se me ejecuta, pero lo que es la idea, está bien, me podrias ayudar?
M=function(n,k){
A=matrix(1,n,n)
b=diag(diag(A))
c=diag(k,n)
M=A-b+c
}
Hola, si tengo una matriz en la que mi primera columna "V1" tiene valores como "ENSG00000149089.11" y deseo quitar a todas el "." y los números que siguen al "." ¿qué código debo utilizar?. Son 60483 filas.
ResponderEliminarPodés utilizar lo siguiente:
ResponderEliminargsub("\\.[0-9]+$", "", TuMatriz[,"V1"])
si tengo una matriz de 5*5 donde la ultima columna es la suma de las anteriores columnas como puedo sacar cada una de las proporciones de las celdas?
ResponderEliminarSupogamos tu matriz 5x5 se llama Mat y está definida así:
EliminarMat <- matrix(1:20, ncol=4)
Mat <- cbind(Mat, rowSums(Mat))
La cual luce de esta manera
[,1] [,2] [,3] [,4] [,5]
[1,] 1 6 11 16 34
[2,] 2 7 12 17 38
[3,] 3 8 13 18 42
[4,] 4 9 14 19 46
[5,] 5 10 15 20 50
Entonces para obtener tu resultado podés usar la función 'sweep' de la siguiente manera
sweep(x=Mat[, -5], MARGIN = 1, STATS = Mat[, 5], FUN="/")*100
O más fácil aún, se puede usar '/' ya que esta es una función vectorizada
Mat[, -5]/Mat[, 5]*100
Ambos te darán el mismo resultado. :) el cual es.....
[,1] [,2] [,3] [,4]
[1,] 2.941176 17.64706 32.35294 47.05882
[2,] 5.263158 18.42105 31.57895 44.73684
[3,] 7.142857 19.04762 30.95238 42.85714
[4,] 8.695652 19.56522 30.43478 41.30435
[5,] 10.000000 20.00000 30.00000 40.00000
Buenas tardes, tengo una inquietud, si tengo una lista y dentro hay varias matrices, como podria realizar la suma de dichas matrices de tal manera que el resultado sea la suma de todas las matrices internas.
ResponderEliminarGracias
Buenas tardes, como puedo sumar matrices de manera directa que estan dentro de una lista?
ResponderEliminarGracias
Si esas matrices tienen la misma dimensión, entonces podés obtener la suma de la siguiente manera:
EliminarReduce("+", tuLista)
Donde "tuLista" es el nombre de la lista que contiene las matrices.
El resultado de eso es una matriz que resulta de sumar todas las matrices de la lista.
Si querés la suma de la suma de las matrices, entonces
sum(Reduce("+", tuLista))
Muchas gracias, si me funciono.
EliminarHola!
ResponderEliminarAlguien podría ayudarme en ¿cómo multiplicar una matriz de dimensiones mxn con otra matriz de dimensiones mxnxp siendo que la matriz final sea mxnxp?
Hola!
ResponderEliminarCómo puedo multiplicar una matriz mxn con otra de mxnxp?
Saludos
Hola, me gustaría saber si existe algún comando para la diagonal de un número en cualquier posición. Es decir si por ejemplo tengo una matriz A de 4x4 y me ubico en la posición A[2,3], podría sacar los valores de su respectiva diagonal en esa posición.
ResponderEliminarHola tengo un vector gigante de 10000 elementos y con él quiero quiero hacer matrices de 10 por 10 pero quiero que quede algo así: 2 3 4 5 6 el resto de las posiciones sin llenar que tengan un valor NA. Los valores que no son NA son 55 elementos de
ResponderEliminar2 3 4 5 mi vector gigante. Alguien puede ayudarme por favor?
2 3 4
2 3
2
Muchas gracias, muy útil.
ResponderEliminar