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:


<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>

El dom, 13 dic 2020 a las 12:49, Carlos Ortega (<c...@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....@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@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
_______________________________________________
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

Reply via email to