<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Hola Carlos,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Vaya, lo siento pero creo que me sigue faltando algo para entenderlo todo...</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">1. Tienes una primera matriz en la que por fila tienes que elegir la columna en la que se produce el máximo.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">2. Pero si hay dos/o varios valores de máximo, tienes que coger el valor de "Var" de esa primera matriz y buscarla en la segunda matriz (la imagen que adjunta) y seleccionar la columna de acuerdo a f5...</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Si pones un ejemplo donde haya un único valor de máximo y otro donde hay que usar esta f5, quedaría ya del todo claro...</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Gracias,</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Carlos Ortega</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><a href="http://www.qualityexcellence.es">www.qualityexcellence.es</a><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El dom, 13 dic 2020 a las 15:31, Carlos Santos (<<a href="mailto:carlossantos.csm@gmail.com">carlossantos.csm@gmail.com</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:verdana,sans-serif">Perdón Carlos, con las prisas se me olvidó por completo añadir lo que faltaba, tienes toda la razón</div><div style="font-family:verdana,sans-serif"><br></div><div style="font-family:verdana,sans-serif">Supongamos que tenemos esta matriz, se quiere conseguir para el mayor valor por fila tomar el valor de la posición que ocupa la primera columna "Var" en base a la columna elegida y si hay varios valores máximos iguales, entonces ejecutar la función "f5" para elegir una y según valor máximo obtenido proceder de la misma manera que antes.</div><div style="font-family:verdana,sans-serif"><br></div><div style="font-family:verdana,sans-serif">El problema es cuando tengo matrices de 3000x3000 o 10000x10000, y además los dígitos de la columna primera son superiores al puesto en este ejemplo, entonces el tiempo de calculo es excesivo.</div><div style="font-family:verdana,sans-serif"><br></div><div style="font-family:verdana,sans-serif"><img src="cid:ii_kin7w8n30" alt="image.png" width="517" height="325"><br></div><div style="font-family:verdana,sans-serif"><br></div><div style="font-family:verdana,sans-serif">codigo:</div></div></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:verdana,sans-serif"><div class="gmail_default" style="font-family:verdana,sans-serif">f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in% c(EMISOR,RECEPTOR[x])) %>%</div>    dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}<br>#<br>#<br>fila = 1<br>rr = nrow(data2)<br>data1 <- data1 %>% mutate(Clus.Multi.OPTIMO=Clus.Multi.MAX)  <br>#<br>repeat{<br>    smc <- sum(data2[fila,((2+fila):(nrow(data2)+2))]==max(data2[fila,((2+fila):(nrow(data2)+2))]))<br>    EMISOR <- data2[fila,1]$Var<br>    RECEPTOR <- data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,((2+fila):(nrow(data2)+2))]))-2,1]$Var<br>    Rmax <- RECEPTOR[mclapply((1:smc),f5) %>% unlist() %>% which.max()]<br>    data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX == data2[fila,1]$Var)] <- Rmax<br>    fila = fila + 1<br>    if (fila == rr) {break}<br>}</div></div></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:verdana,sans-serif"><div class="gmail_default" style="font-family:verdana,sans-serif"></div><br></div></div><div id="gmail-m_-1660742982892200730gmail-m_-198326376745946536DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br> <table style="border-top:1px solid rgb(211,212,222)">
        <tbody><tr>
      <td style="width:55px;padding-top:18px"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" target="_blank"><img alt="" style="width: 46px; height: 29px;" width="46" height="29"></a></td>
                <td style="width:470px;padding-top:17px;color:rgb(65,66,78);font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:18px">Libre de virus. <a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" style="color:rgb(68,83,234)" target="_blank">www.avast.com</a>          </td>
        </tr>
</tbody></table>
<a href="#m_-1660742982892200730_m_-198326376745946536_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"></a></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El dom, 13 dic 2020 a las 12:49, Carlos Ortega (<<a href="mailto:cof@qualityexcellence.es" target="_blank">cof@qualityexcellence.es</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:verdana,sans-serif;font-size:small">Hola,</div><div style="font-family:verdana,sans-serif;font-size:small"><br></div><div style="font-family:verdana,sans-serif;font-size:small">Mejor si pones un ejemplo de tu matriz y cuentas lo que quieres hacer...</div><div style="font-family:verdana,sans-serif;font-size:small">El  enfoque puede ser muy diferente al que has planteado.</div><div style="font-family:verdana,sans-serif;font-size:small"><br></div><div style="font-family:verdana,sans-serif;font-size:small">Gracias,</div><div style="font-family:verdana,sans-serif;font-size:small">Calros Ortega</div><div style="font-family:verdana,sans-serif;font-size:small"><a href="http://www.qualityexcellence.es" target="_blank">www.qualityexcellence.es</a><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El dom, 13 dic 2020 a las 12:33, Carlos Santos (<<a href="mailto:carlossantos.csm@gmail.com" target="_blank">carlossantos.csm@gmail.com</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Buen dia,<br>
<br>
Tengo un problema cuando ejecuto la siguiente rutina, porque con una matriz<br>
muy grande el tiempo de ejecución se va a bastantes  horas.<br>
<br>
Cualquier idea para mejorarlo y reducir significativamente el tiempo,<br>
estaría muy agradecido<br>
<br>
Muchas gracias por vuestra ayuda<br>
<br>
#_____________________________________________________________________________________<br>
<br>
f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in%<br>
c(EMISOR,RECEPTOR[x])) %>%<br>
    dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}<br>
<br>
#<br>
______________________________________________________________________________________<br>
<br>
fila = 1<br>
rr = nrow(data2)<br>
<br>
repeat{<br>
    smc <-<br>
sum(data2[fila,((2+fila):(nrow(data2)+2))]==max(data2[fila,((2+fila):(nrow(data2)+2))]))<br>
    EMISOR <- data2[fila,1]$Var<br>
    RECEPTOR <-<br>
data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,((2+fila):(nrow(data2)+2))]))-2,1]$Var<br>
<br>
    Rmax <- RECEPTOR[mclapply((1:smc),f5) %>% unlist() %>% which.max()]<br>
<br>
    data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX ==<br>
 data2[fila,1]$Var)] <- Rmax<br>
    fila = fila + 1<br>
    if (fila == rr) {break}<br>
}<br>
<br>
<<a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" rel="noreferrer" target="_blank">https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail</a>><br>
Libre<br>
de virus. <a href="http://www.avast.com" rel="noreferrer" target="_blank">www.avast.com</a><br>
<<a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" rel="noreferrer" target="_blank">https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail</a>><br>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2><br>
<br>
        [[alternative HTML version deleted]]<br>
<br>
_______________________________________________<br>
R-help-es mailing list<br>
<a href="mailto:R-help-es@r-project.org" target="_blank">R-help-es@r-project.org</a><br>
<a href="https://stat.ethz.ch/mailman/listinfo/r-help-es" rel="noreferrer" target="_blank">https://stat.ethz.ch/mailman/listinfo/r-help-es</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr"><span style="font-family:verdana,sans-serif">Saludos,</span><br style="font-family:verdana,sans-serif">
<span style="font-family:verdana,sans-serif">Carlos Ortega</span><br style="font-family:verdana,sans-serif">
<span style="font-family:verdana,sans-serif"><a href="http://www.qualityexcellence.es" target="_blank">www.qualityexcellence.es</a></span></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><span style="font-family:verdana,sans-serif">Saludos,</span><br style="font-family:verdana,sans-serif">
<span style="font-family:verdana,sans-serif">Carlos Ortega</span><br style="font-family:verdana,sans-serif">
<span style="font-family:verdana,sans-serif"><a href="http://www.qualityexcellence.es" target="_blank">www.qualityexcellence.es</a></span></div>