[R-es] Como puedo reducir el tiempo de ejecución en la siguiente rutina

Carlos Santos c@r|o@@@nto@@c@m @end|ng |rom gm@||@com
Dom Dic 13 15:31:38 CET 2020


>
> Perdón Carlos, con las prisas se me olvidó por completo añadir lo que
> faltaba, tienes toda la razón
>
> 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.
>
> 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.
>
> [image: image.png]
>
> codigo:
>


> f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in%
> c(EMISOR,RECEPTOR[x])) %>%
>     dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}
> #
> #
> fila = 1
> rr = nrow(data2)
> data1 <- data1 %>% mutate(Clus.Multi.OPTIMO=Clus.Multi.MAX)
> #
> repeat{
>     smc <-
> sum(data2[fila,((2+fila):(nrow(data2)+2))]==max(data2[fila,((2+fila):(nrow(data2)+2))]))
>     EMISOR <- data2[fila,1]$Var
>     RECEPTOR <-
> data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,((2+fila):(nrow(data2)+2))]))-2,1]$Var
>     Rmax <- RECEPTOR[mclapply((1:smc),f5) %>% unlist() %>% which.max()]
>     data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX ==
> data2[fila,1]$Var)] <- Rmax
>     fila = fila + 1
>     if (fila == rr) {break}
> }
>


>
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Libre
> de virus. www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
> <#m_-198326376745946536_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
> El dom, 13 dic 2020 a las 12:49, Carlos Ortega (<cof using qualityexcellence.es>)
> escribió:
>
>> Hola,
>>
>> Mejor si pones un ejemplo de tu matriz y cuentas lo que quieres hacer...
>> El  enfoque puede ser muy diferente al que has planteado.
>>
>> Gracias,
>> Calros Ortega
>> www.qualityexcellence.es
>>
>> El dom, 13 dic 2020 a las 12:33, Carlos Santos (<
>> carlossantos.csm using gmail.com>) escribió:
>>
>>> Buen dia,
>>>
>>> Tengo un problema cuando ejecuto la siguiente rutina, porque con una
>>> matriz
>>> muy grande el tiempo de ejecución se va a bastantes  horas.
>>>
>>> Cualquier idea para mejorarlo y reducir significativamente el tiempo,
>>> estaría muy agradecido
>>>
>>> Muchas gracias por vuestra ayuda
>>>
>>>
>>> #_____________________________________________________________________________________
>>>
>>> f5 <- function(x){data1 %>% filter(Clus.Multi.OPTIMO %in%
>>> c(EMISOR,RECEPTOR[x])) %>%
>>>     dplyr::select(1:numvar+1) %>% data.matrix() %>% CohenD()}
>>>
>>> #
>>>
>>> ______________________________________________________________________________________
>>>
>>> fila = 1
>>> rr = nrow(data2)
>>>
>>> repeat{
>>>     smc <-
>>>
>>> sum(data2[fila,((2+fila):(nrow(data2)+2))]==max(data2[fila,((2+fila):(nrow(data2)+2))]))
>>>     EMISOR <- data2[fila,1]$Var
>>>     RECEPTOR <-
>>>
>>> data2[which(as.vector(t(data2[fila,])[,1])==max(data2[fila,((2+fila):(nrow(data2)+2))]))-2,1]$Var
>>>
>>>     Rmax <- RECEPTOR[mclapply((1:smc),f5) %>% unlist() %>% which.max()]
>>>
>>>     data1$Clus.Multi.OPTIMO[which(data1$Clus.Multi.MAX ==
>>>  data2[fila,1]$Var)] <- Rmax
>>>     fila = fila + 1
>>>     if (fila == rr) {break}
>>> }
>>>
>>> <
>>> https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
>>> >
>>> Libre
>>> de virus. www.avast.com
>>> <
>>> https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
>>> >
>>> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>
>>>         [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es using r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20201213/13e91864/attachment-0001.html>

------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 54553 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20201213/13e91864/attachment-0001.png>


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