<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
p
{mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=ES><div class=WordSection1><p><span lang=ES-AR>Estimado Jorge I Velez</span></p><p><o:p> </o:p></p><p><span lang=ES-AR>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?<o:p></o:p></span></p><p><span lang=ES-AR><o:p> </o:p></span></p><p><span lang=ES-AR>Ejemplo<o:p></o:p></span></p><p><span lang=ES-AR>123<o:p></o:p></span></p><p><span lang=ES-AR>12345<o:p></o:p></span></p><p><span lang=ES-AR>12<o:p></o:p></span></p><p><span lang=ES-AR><o:p> </o:p></span></p><p><span lang=ES-AR>O en una forma<o:p></o:p></span></p><p><span lang=ES-AR>1231234512<o:p></o:p></span></p><p><span lang=ES-AR><o:p> </o:p></span></p><p><span lang=ES-AR>¿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?<o:p></o:p></span></p><p><o:p> </o:p></p><p>Javier Rubén Marcuzzi<br>Técnico en Industrias Lácteas<br>Veterinario</p><p><o:p> </o:p></p><p><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p style='border:none;padding:0cm'><br><b>De: </b>Jorge I Velez<br><b>Enviado: </b>miércoles, 28 de octubre de 2015 12:15<br><b>Para: </b>R-help-es<br><b>Asunto: </b>[R-es] Extraer elementos diagonales de submatrices</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-family:"Times New Roman",serif'><o:p> </o:p></span></p><div><div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>Buenos dias a </span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'>todos</span><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>,</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>Quisiera extraer algunas entradas de una matrix "m" teniendo en cuenta algunas restricciones. El siguiente ejemplo ilustra la situacion:</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>## input</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>m <- structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, </span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, </span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>3, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 0, 0, 0, </span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>0, 0, 0, 5, 5, 5), .Dim = c(10L, 5L))</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>m</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>## output</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>output <- c(1:3, 1:5, 1:2)</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>output</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>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:</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><img width=306 height=304 id="Imagen_x0020_3" src="cid:image001.png@01D1119E.A25D6630" alt="Inline image 2"></span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>Observe </span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'>que</span><span style='font-size:12.0pt;font-family:"Arial",sans-serif'> 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.</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>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</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'># [1] 1 2 3 1 2 3 4 5 1 2</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>Agradezco a todos el tiempo que les tomo leer este mensaje, y por supuesto por cualquier sugerencia que me permita obtener este vector.</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>Saludos cordiales,</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>Jorge Velez.-</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p></div></div></div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>