Muchas gracias Jorge! Si la opción del loop con for ya la tenía implementada y me demora bastante por eso quería probar con apply o en este caso sapply, muchas gracias! Saludos!! F Macedo El 03/07/15 a las 23:09, Jorge I Velez escribió:> Hola Fernando, > > Podrias considerar las siguientes opciones: > > R2 <- vector("list", x) > for(i in 1:x){ > modelo <- lm(y ~ efectos[, 1:i]) > R2[[i]] <- summary(modelo)$r.squared > } > R2 > > ? opt2 <- sapply(1:x, ?function(i){ > modelo <- lm(y ~ efectos[, 1:i]) > summary(modelo)$r.squared > }) > opt2 > > Para mas información revisa ?sapply, ?lapply y ?lm. En caso de que > necesites otros parámetros del modelo de regresión, te sugiero revisar > el resultado de > > modelo <- lm(y ~ efectos[, 2]) > names(summary(modelo)) > > Saludos cordiales, > > Jorge Velez > JCSMR, Canberra > > > 2015-07-04 12:01 GMT+10:00 Fernando Macedo <fermace en gmail.com > <mailto:fermace en gmail.com>>: > > Buenas a todos, acá estoy yo de nuevo con problemas de loops. > > Tengo el siguiente problema: un vector de datos (y) y una serie de > efectos. El loop lo que intenta es evaluar el R² de modelos > incrementando por vuelta una variable efecto. > > Seria algo así: > > for(i in 1:x) { > modelo=lm(y~efectos[,1:i]) > ... codigo para guardar R² y otros por cada vuelta... > } > > apply() puede ir columna a columna pero no sé como hacer para que > me vaya "acumulando columnas" por así decir. De echo no se si > puede hacer. > > Espero haberme explicado y como siempre agradezco de antemano la > atención. > > Un abrazo! > > -- > Fernando Macedo > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org <mailto:R-help-es en r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
De nada, Fernando. Otra alternativa es usando mclapply() en el paquete "parallel". Estoy en Mac/Linux y funciona muy bien. Seguramente hay algunos equivalentes en Windows. Saludos, Jorge Velez JCSMR, Canberra 2015-07-04 12:17 GMT+10:00 Fernando Macedo <fermace en gmail.com>:> Muchas gracias Jorge! > > Si la opción del loop con for ya la tenía implementada y me demora > bastante por eso quería probar con apply o en este caso sapply, muchas > gracias! > > Saludos!! > > F Macedo > > El 03/07/15 a las 23:09, Jorge I Velez escribió: > > Hola Fernando, > > Podrias considerar las siguientes opciones: > > R2 <- vector("list", x) > for(i in 1:x){ > modelo <- lm(y ~ efectos[, 1:i]) > R2[[i]] <- summary(modelo)$r.squared > } > R2 > > ? opt2 <- sapply(1:x, ?function(i){ > modelo <- lm(y ~ efectos[, 1:i]) > summary(modelo)$r.squared > }) > opt2 > > Para mas información revisa ?sapply, ?lapply y ?lm. En caso de que > necesites otros parámetros del modelo de regresión, te sugiero revisar el > resultado de > > modelo <- lm(y ~ efectos[, 2]) > names(summary(modelo)) > > Saludos cordiales, > > Jorge Velez > JCSMR, Canberra > > > 2015-07-04 12:01 GMT+10:00 Fernando Macedo <fermace en gmail.com>: > >> Buenas a todos, acá estoy yo de nuevo con problemas de loops. >> >> Tengo el siguiente problema: un vector de datos (y) y una serie de >> efectos. El loop lo que intenta es evaluar el R² de modelos incrementando >> por vuelta una variable efecto. >> >> Seria algo así: >> >> for(i in 1:x) { >> modelo=lm(y~efectos[,1:i]) >> ... codigo para guardar R² y otros por cada vuelta... >> } >> >> apply() puede ir columna a columna pero no sé como hacer para que me vaya >> "acumulando columnas" por así decir. De echo no se si puede hacer. >> >> Espero haberme explicado y como siempre agradezco de antemano la atención. >> >> Un abrazo! >> >> -- >> Fernando Macedo >> >> _______________________________________________ >> 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 Jorge. Usando sapply mejoró un poco pero no demasiado en realidad. Una vez lo estuve relojeando a mclapply (y otras funciones de ese paquete), pero no probé mas allá de algunos ejemplos. Voy a terminar este trabajo y lo pruebo, ya te contaré cuanto mejoró. Un abrazo y gracias nuevamente! El 5 de julio de 2015, 11:27, Jorge I Velez <jorgeivanvelez en gmail.com> escribió:> De nada, Fernando. > > Otra alternativa es usando mclapply() en el paquete "parallel". Estoy en > Mac/Linux y funciona muy bien. Seguramente hay algunos equivalentes en > Windows. > > Saludos, > > Jorge Velez > JCSMR, Canberra > > > > 2015-07-04 12:17 GMT+10:00 Fernando Macedo <fermace en gmail.com>: > >> Muchas gracias Jorge! >> >> Si la opción del loop con for ya la tenía implementada y me demora >> bastante por eso quería probar con apply o en este caso sapply, muchas >> gracias! >> >> Saludos!! >> >> F Macedo >> >> El 03/07/15 a las 23:09, Jorge I Velez escribió: >> >> Hola Fernando, >> >> Podrias considerar las siguientes opciones: >> >> R2 <- vector("list", x) >> for(i in 1:x){ >> modelo <- lm(y ~ efectos[, 1:i]) >> R2[[i]] <- summary(modelo)$r.squared >> } >> R2 >> >> ? opt2 <- sapply(1:x, ?function(i){ >> modelo <- lm(y ~ efectos[, 1:i]) >> summary(modelo)$r.squared >> }) >> opt2 >> >> Para mas información revisa ?sapply, ?lapply y ?lm. En caso de que >> necesites otros parámetros del modelo de regresión, te sugiero revisar el >> resultado de >> >> modelo <- lm(y ~ efectos[, 2]) >> names(summary(modelo)) >> >> Saludos cordiales, >> >> Jorge Velez >> JCSMR, Canberra >> >> >> 2015-07-04 12:01 GMT+10:00 Fernando Macedo <fermace en gmail.com>: >> >>> Buenas a todos, acá estoy yo de nuevo con problemas de loops. >>> >>> Tengo el siguiente problema: un vector de datos (y) y una serie de >>> efectos. El loop lo que intenta es evaluar el R² de modelos incrementando >>> por vuelta una variable efecto. >>> >>> Seria algo así: >>> >>> for(i in 1:x) { >>> modelo=lm(y~efectos[,1:i]) >>> ... codigo para guardar R² y otros por cada vuelta... >>> } >>> >>> apply() puede ir columna a columna pero no sé como hacer para que me >>> vaya "acumulando columnas" por así decir. De echo no se si puede hacer. >>> >>> Espero haberme explicado y como siempre agradezco de antemano la >>> atención. >>> >>> Un abrazo! >>> >>> -- >>> Fernando Macedo >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es en r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >> >> >> >-- Fernando Macedo [[alternative HTML version deleted]]