[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