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