Carlos Santos
2021-Sep-22 11:17 UTC
[R-es] problema de tiempo de ejecución con una rutina dentro de un programa de R
Hola a todos, familia de R Tengo un pequeño problema de tiempo de ejecución con una rutina, a ver si me pueden echar una mano y ayudarme si es posible, claro. La rutina es la siguiente: while(totclu != 3){ matrizF <- matrix(0, nrow = 1, ncol = totclu) for (j in 1:totclu) { q1 <- c(which(data1$Clus.Multi.FAIRNESS == k2A$Var1[1]), which(data1$Clus.Multi.FAIRNESS == k2A$Var1[j])) q2 <- nrow(as.data.frame(c(which(data1$Clus.Multi.FAIRNESS =k2A$Var1[1]), which(data1$Clus.Multi.FAIRNESS =k2A$Var1[j])))) observado <- table(data1$VarFC[q1])/q2 matrizF[i] <- dist(rbind(observado,propuesto),method = "euclidean") } matrizF[1] <- 99 min_observado <- which.min(matrizF) q4 <- which(data1$Clus.Multi.FAIRNESS == k2A$Var1[1]) data1$Clus.Multi.FAIRNESS[q4] <- as.character(k2A$Var1[min_observado]) k2A$Freq[min_observado] <- k2A$Freq[min_observado] + k2A$Freq[1] k2A <- as.data.frame(table(as.character(data1$Clus.Multi.FAIRNESS))) %>% arrange(Freq) totclu=nrow(k2A) } El problema fundamental es que la matriz que aparece como k2A es una matriz (nxn) lo que significa que puede ser muy grande, por ejemplo 1000x1000, y el tiempo que tarda es enorme y no veo como disminuir el tiempo de ejecución del "for" que pienso que es lo mas duro. No se si se puede poner como procesamiento en paralelo en r, pero tampoco ser como ponerlo Si me pueden echar una mano, les estaré muy agradecido muchas gracias de antemano Carlos Santos [[alternative HTML version deleted]]