Buenos dias a todos, Quisiera extraer algunas entradas de una matrix "m" teniendo en cuenta algunas restricciones. El siguiente ejemplo ilustra la situacion: ## input m <- structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5), .Dim = c(10L, 5L)) m ## output output <- c(1:3, 1:5, 1:2) output Si el numero de filas es r y el numero de columnas k, la idea es construir submatrices de dimension k x k y extraer los elementos diagonales NO ceros. Ahora, en caso de encontrar un cero, debe desplazarse a la siguiente fila, y construir una nueva matriz k x k. Graficamente esto seria : [image: Inline image 2] Observe que en este caso, r = 10 y k = 5. En la primera submatriz, la diagonal tiene los valores 1, 2, 3, 0, 0, de los cuales SOLO deben seleccionarse 1, 2 y 3 (en lila). El primer cero se encuentra en la posicion [1, 4], asi que la siguiente submatriz debe construirse COMENZANDO en la fila 4, columna 1. A partir de esta segunda submatriz se obtienen los elements 1, 2, 3, 4 y 5, que corresponden a su diagonal (en azul celeste). La posicion del ultimo elemento de esta diagonal es [8, 5], asi que la siguiente submatriz debe comenzar en la fila 9. A partir de esta submatriz se obtienen los valores 1 y 2 (en naranja). El resultado final de todo este proceso es el vector # [1] 1 2 3 1 2 3 4 5 1 2 Agradezco a todos el tiempo que les tomo leer este mensaje, y por supuesto por cualquier sugerencia que me permita obtener este vector. Saludos cordiales, Jorge Velez.- ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20151028/afa217d1/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: example.png Type: image/png Size: 35497 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20151028/afa217d1/attachment-0001.png>
Javier Rubén Marcuzzi
2015-Oct-28 19:35 UTC
[R-es] Extraer elementos diagonales de submatrices
Estimado Jorge I Velez No comprendo un punto, dices que deseas construir sub matrices y extraer elementos de sub matrices, en el ejemplo en output no hay sub matrices (tres matrices como resultado) sino una cadena de números. ¿Cómo necesitas el resultado?, ¿Cómo se ve en el ejemplo?, ¿Cómo matrices de matrices? Ejemplo 123 12345 12 O en una forma 1231234512 ¿Hay que dejar algo (índice) como para que accedas a algo reconocido o especificado, ej, segundo valor de la segunda sub matriz (2,2), ¿o con tener la lista de números le es útil? Javier Rubén Marcuzzi Técnico en Industrias Lácteas Veterinario De: Jorge I Velez Enviado: miércoles, 28 de octubre de 2015 12:15 Para: R-help-es Asunto: [R-es] Extraer elementos diagonales de submatrices Buenos dias a todos, Quisiera extraer algunas entradas de una matrix "m" teniendo en cuenta algunas restricciones. El siguiente ejemplo ilustra la situacion: ## input m <- structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5), .Dim = c(10L, 5L)) m ## output output <- c(1:3, 1:5, 1:2) output Si el numero de filas es r y el numero de columnas k, la idea es construir submatrices de dimension k x k y extraer los elementos diagonales NO ceros. Ahora, en caso de encontrar un cero, debe desplazarse a la siguiente fila, y construir una nueva matriz k x k. Graficamente esto seria: Observe que en este caso, r = 10 y k = 5. En la primera submatriz, la diagonal tiene los valores 1, 2, 3, 0, 0, de los cuales SOLO deben seleccionarse 1, 2 y 3 (en lila). El primer cero se encuentra en la posicion [1, 4], asi que la siguiente submatriz debe construirse COMENZANDO en la fila 4, columna 1. A partir de esta segunda submatriz se obtienen los elements 1, 2, 3, 4 y 5, que corresponden a su diagonal (en azul celeste). La posicion del ultimo elemento de esta diagonal es [8, 5], asi que la siguiente submatriz debe comenzar en la fila 9. A partir de esta submatriz se obtienen los valores 1 y 2 (en naranja). El resultado final de todo este proceso es el vector # [1] 1 2 3 1 2 3 4 5 1 2 Agradezco a todos el tiempo que les tomo leer este mensaje, y por supuesto por cualquier sugerencia que me permita obtener este vector. Saludos cordiales, Jorge Velez.- ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20151028/15f9fa5f/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: A08A9F83AB65410AB3B9945904D1D19A.png Type: image/png Size: 34007 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20151028/15f9fa5f/attachment-0001.png>
Estimado Javier, Gracias por tu mensaje. No, lo unico que requiero es la lista de números (i1, 2, 3, 1, 2, 3, 4, 5, 1, 2). Saludos cordiales, Jorge.- 2015-10-28 14:35 GMT-05:00 Javier Rubén Marcuzzi < javier.ruben.marcuzzi en gmail.com>:> Estimado Jorge I Velez > > > > No comprendo un punto, dices que deseas construir sub matrices y extraer > elementos de sub matrices, en el ejemplo en output no hay sub matrices > (tres matrices como resultado) sino una cadena de números. ¿Cómo necesitas > el resultado?, ¿Cómo se ve en el ejemplo?, ¿Cómo matrices de matrices? > > > > Ejemplo > > 123 > > 12345 > > 12 > > > > O en una forma > > 1231234512 > > > > ¿Hay que dejar algo (índice) como para que accedas a algo reconocido o > especificado, ej, segundo valor de la segunda sub matriz (2,2), ¿o con > tener la lista de números le es útil? > > > > Javier Rubén Marcuzzi > Técnico en Industrias Lácteas > Veterinario > > > > > > > *De: *Jorge I Velez > *Enviado: *miércoles, 28 de octubre de 2015 12:15 > *Para: *R-help-es > *Asunto: *[R-es] Extraer elementos diagonales de submatrices > > > > > > Buenos dias a todos, > > > > Quisiera extraer algunas entradas de una matrix "m" teniendo en cuenta > algunas restricciones. El siguiente ejemplo ilustra la situacion: > > > > ## input > > m <- structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, > > 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, > > 3, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 0, 0, 0, > > 0, 0, 0, 5, 5, 5), .Dim = c(10L, 5L)) > > m > > > > ## output > > output <- c(1:3, 1:5, 1:2) > > output > > > > Si el numero de filas es r y el numero de columnas k, la idea es construir > submatrices de dimension k x k y extraer los elementos diagonales NO > ceros. Ahora, en caso de encontrar un cero, debe desplazarse a la > siguiente fila, y construir una nueva matriz k x k. Graficamente esto > seria: > > > > [image: Inline image 2] > > > > Observe que en este caso, r = 10 y k = 5. En la primera submatriz, la > diagonal tiene los valores 1, 2, 3, 0, 0, de los cuales SOLO deben > seleccionarse 1, 2 y 3 (en lila). El primer cero se encuentra en la > posicion [1, 4], asi que la siguiente submatriz debe construirse COMENZANDO > en la fila 4, columna 1. > > > > A partir de esta segunda submatriz se obtienen los elements 1, 2, 3, 4 y > 5, que corresponden a su diagonal (en azul celeste). La posicion del > ultimo elemento de esta diagonal es [8, 5], asi que la siguiente submatriz > debe comenzar en la fila 9. A partir de esta submatriz se obtienen los > valores 1 y 2 (en naranja). El resultado final de todo este proceso es el > vector > > > > # [1] 1 2 3 1 2 3 4 5 1 2 > > > > Agradezco a todos el tiempo que les tomo leer este mensaje, y por supuesto > por cualquier sugerencia que me permita obtener este vector. > > > > Saludos cordiales, > > Jorge Velez.- > > > > > > >[[alternative HTML version deleted]]