[R-es] Extraer elementos diagonales de submatrices

Jorge I Velez jorgeivanvelez en gmail.com
Mie Oct 28 16:14:22 CET 2015


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>


Más información sobre la lista de distribución R-help-es