Oliver gracias por le pista! Es un poco mas complicado, el código tiene varios pasos incluidos calculo de nuevas variables con los betas del glm y otras vueltas. Necesitaría una sentencia que tome cada lote haga los cálculos por separado y luego los une en el dataframe de salida El 30 de mayo de 2016, 10:02, Olivier Nuñez <onunez en unex.es> escribió:> Mira lapply .... > > Si L= list(L1,L2,...,L120) es una lista de tus lotes > > ajuste <- function(L) glm(y~x,data=L) > fit=lapply(L1,ajuste) > > donde "fit" es la lista de 120 ajustes. > > Un saludo. Olivier > > ----- Mensaje original ----- > De: "Andres Hirigoyen" <andreshirigoyen en gmail.com> > Para: r-help-es en r-project.org > Enviados: Lunes, 30 de Mayo 2016 14:55:19 > Asunto: [R-es] Codigo > > Buenos días tengo una consulta sobre un código rutinario que quiero > ejecutar. > > Tengo 120 Lotes con un ID diferente (del C001 al C120) a cada uno de los > cuales debo efectuares un GLM y con los parámetros obtenidos calcular otras > variables para luego hacer gráficas, razón por la cual no puedo procesarlos > todos juntos. > Intente hacer una sentencia repeat() o con for() para que me ejecute de > forma individual cada lote y no tener que hacerlo a mano, pero no me > sale... > ¿¿Alguna idea?? > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Hola, Puedes utilizar el código de Oliver utilizando la librería "broom" que permite obtener los parámetros (coeficientes) y características del modelo (null.deviance, AIC, BIC) en un cómodo data.frame El código sería algo así como esto. library(broom) L <- list(L1, L2..., L120) ajuste <- function(L) { g <- glm(y ~., data = L) g_df <- tidy(g) #tidy es una función del paquete "broom" que devuelve los coeficientes y sus errores. return(g_df) } fit <- apply(L, ajuste) Saludos, Carlos Ortega www.qualityexcellence.es El 30 de mayo de 2016, 15:15, Andres Hirigoyen <andreshirigoyen en gmail.com> escribió:> Oliver gracias por le pista! > Es un poco mas complicado, el código tiene varios pasos incluidos calculo > de nuevas variables con los betas del glm y otras vueltas. Necesitaría una > sentencia que tome cada lote haga los cálculos por separado y luego los une > en el dataframe de salida > > El 30 de mayo de 2016, 10:02, Olivier Nuñez <onunez en unex.es> escribió: > > > Mira lapply .... > > > > Si L= list(L1,L2,...,L120) es una lista de tus lotes > > > > ajuste <- function(L) glm(y~x,data=L) > > fit=lapply(L1,ajuste) > > > > donde "fit" es la lista de 120 ajustes. > > > > Un saludo. Olivier > > > > ----- Mensaje original ----- > > De: "Andres Hirigoyen" <andreshirigoyen en gmail.com> > > Para: r-help-es en r-project.org > > Enviados: Lunes, 30 de Mayo 2016 14:55:19 > > Asunto: [R-es] Codigo > > > > Buenos días tengo una consulta sobre un código rutinario que quiero > > ejecutar. > > > > Tengo 120 Lotes con un ID diferente (del C001 al C120) a cada uno de los > > cuales debo efectuares un GLM y con los parámetros obtenidos calcular > otras > > variables para luego hacer gráficas, razón por la cual no puedo > procesarlos > > todos juntos. > > Intente hacer una sentencia repeat() o con for() para que me ejecute de > > forma individual cada lote y no tener que hacerlo a mano, pero no me > > sale... > > ¿¿Alguna idea?? > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Hola, yo en general uso una opción más desprolija y que puede ser menos efectiva pero si la cantidad de lotes no es excesiva no sería extremadamente lenta. Uso for() en general usando los datos de id de los animales, lotes u lo que sea. # inicializo una variable para almacenar resultados salidas=NULL for( i in unique(data$id)){ tmp=data[data$id==i,] ......... salidas=rbind(salidas,"salidas") } De ahí saco lm, plots etc para cada subset de datos. Igual no es la mejor solución pero me saca del paso. Saludos F. Macedo El 30/05/16 a las 11:06, Carlos Ortega escribió:> Hola, > > Puedes utilizar el código de Oliver utilizando la librería "broom" que > permite obtener los parámetros (coeficientes) y características del modelo > (null.deviance, AIC, BIC) en un cómodo data.frame > > El código sería algo así como esto. > > library(broom) > L <- list(L1, L2..., L120) > > ajuste <- function(L) { > g <- glm(y ~., data = L) > g_df <- tidy(g) #tidy es una función del paquete "broom" que > devuelve los coeficientes y sus errores. > return(g_df) > } > > fit <- apply(L, ajuste) > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 30 de mayo de 2016, 15:15, Andres Hirigoyen <andreshirigoyen en gmail.com> > escribió: > >> Oliver gracias por le pista! >> Es un poco mas complicado, el código tiene varios pasos incluidos calculo >> de nuevas variables con los betas del glm y otras vueltas. Necesitaría una >> sentencia que tome cada lote haga los cálculos por separado y luego los une >> en el dataframe de salida >> >> El 30 de mayo de 2016, 10:02, Olivier Nuñez <onunez en unex.es> escribió: >> >>> Mira lapply .... >>> >>> Si L= list(L1,L2,...,L120) es una lista de tus lotes >>> >>> ajuste <- function(L) glm(y~x,data=L) >>> fit=lapply(L1,ajuste) >>> >>> donde "fit" es la lista de 120 ajustes. >>> >>> Un saludo. Olivier >>> >>> ----- Mensaje original ----- >>> De: "Andres Hirigoyen" <andreshirigoyen en gmail.com> >>> Para: r-help-es en r-project.org >>> Enviados: Lunes, 30 de Mayo 2016 14:55:19 >>> Asunto: [R-es] Codigo >>> >>> Buenos días tengo una consulta sobre un código rutinario que quiero >>> ejecutar. >>> >>> Tengo 120 Lotes con un ID diferente (del C001 al C120) a cada uno de los >>> cuales debo efectuares un GLM y con los parámetros obtenidos calcular >> otras >>> variables para luego hacer gráficas, razón por la cual no puedo >> procesarlos >>> todos juntos. >>> Intente hacer una sentencia repeat() o con for() para que me ejecute de >>> forma individual cada lote y no tener que hacerlo a mano, pero no me >>> sale... >>> ¿¿Alguna idea?? >>> >>> [[alternative HTML version deleted]] >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es en r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > >
Carlos, capaz no me explique bien, va de nuevo... Tengo un dataFrame con varias variables que describen Lotes (127), he creado un código que calcula nuevas variables, re codifica otras y ordenas otras tantas. Es muy laborioso correr ese código 127 veces por lo cual quería hacer un sentencia (del tipo if() o repeat()), para obtener al final todos los lotes procesados. Saludos y gracias por tan rápida respuesta El 30 de mayo de 2016, 11:06, Carlos Ortega <cof en qualityexcellence.es> escribió:> Hola, > > Puedes utilizar el código de Oliver utilizando la librería "broom" que > permite obtener los parámetros (coeficientes) y características del modelo > (null.deviance, AIC, BIC) en un cómodo data.frame > > El código sería algo así como esto. > > library(broom) > L <- list(L1, L2..., L120) > > ajuste <- function(L) { > g <- glm(y ~., data = L) > g_df <- tidy(g) #tidy es una función del paquete "broom" que > devuelve los coeficientes y sus errores. > return(g_df) > } > > fit <- apply(L, ajuste) > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 30 de mayo de 2016, 15:15, Andres Hirigoyen <andreshirigoyen en gmail.com> > escribió: > >> Oliver gracias por le pista! >> Es un poco mas complicado, el código tiene varios pasos incluidos calculo >> de nuevas variables con los betas del glm y otras vueltas. Necesitaría una >> sentencia que tome cada lote haga los cálculos por separado y luego los >> une >> en el dataframe de salida >> >> El 30 de mayo de 2016, 10:02, Olivier Nuñez <onunez en unex.es> escribió: >> >> > Mira lapply .... >> > >> > Si L= list(L1,L2,...,L120) es una lista de tus lotes >> > >> > ajuste <- function(L) glm(y~x,data=L) >> > fit=lapply(L1,ajuste) >> > >> > donde "fit" es la lista de 120 ajustes. >> > >> > Un saludo. Olivier >> > >> > ----- Mensaje original ----- >> > De: "Andres Hirigoyen" <andreshirigoyen en gmail.com> >> > Para: r-help-es en r-project.org >> > Enviados: Lunes, 30 de Mayo 2016 14:55:19 >> > Asunto: [R-es] Codigo >> > >> > Buenos días tengo una consulta sobre un código rutinario que quiero >> > ejecutar. >> > >> > Tengo 120 Lotes con un ID diferente (del C001 al C120) a cada uno de >> los >> > cuales debo efectuares un GLM y con los parámetros obtenidos calcular >> otras >> > variables para luego hacer gráficas, razón por la cual no puedo >> procesarlos >> > todos juntos. >> > Intente hacer una sentencia repeat() o con for() para que me ejecute de >> > forma individual cada lote y no tener que hacerlo a mano, pero no me >> > sale... >> > ¿¿Alguna idea?? >> > >> > [[alternative HTML version deleted]] >> > >> > _______________________________________________ >> > R-help-es mailing list >> > R-help-es en r-project.org >> > https://stat.ethz.ch/mailman/listinfo/r-help-es >> > >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es >[[alternative HTML version deleted]]