[R-es] Pasar nombre variable regresión

Griera-yandex gr|er@ @end|ng |rom y@ndex@com
Jue Nov 18 14:17:53 CET 2021


Hola:

Gracias por la respuesta. Nunca he utilizado variables globales por miedo de meter la pata.

Sí, tienes razón. Lo mejor es pasar al nuevo espacio el dataframe. Se simplifica mucho.

Gracias y saludos.



On Thu, 18 Nov 2021 13:58:53 +0100
Proyecto R-UCA <r-uca using uca.es> wrote:

> Buenas,
> 
> No he profundizado en el motivo pero como dices falla si las variables
> no están en el data.frame. Tienes que agregarlas primero al data.frame.
> 
> Si el espacio del que hablas es el padre, o algún ascendiente, no
> habría problemas, pues R cuando no existe una variable en un entorno
> mira en los padres.
> 
> En caso contrario, lo que puedes hacer es asignar la variable
> globalmente en dicho entorno, por ejemplo
> dd <<- data.frame(weight = weight, group = group, ctl = ctl, trt=trt)
> crearía un data.frame dd accesible desde cualquier parte.
> 
> Esto de crear variables globales debe ser un último recurso pues puede
> generar problemas. Te recomiendo intentes pasar el data.frame como
> argumento a la función que va a hacer las regresiones.
> 
> Un saludo.
> 
> El jue, 18-11-2021 a las 13:34 +0100, Griera-yandex escribió:
> > Gracias por la respuesta!
> > 
> > El código tuyo funciona sin problema, pero cuando lo "adapto" me da
> > error:
> > 
> > > ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
> > + trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
> > + group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
> > + weight <- c(ctl, trt)
> > + df <- data.frame (weight = weight, group = group)
> > + rm(ctl, trt, group, weight)           ## Ya que la regresión se
> > ejecutaria, por ejemplo, dentro de otro espacio y estos objetos no
> > estarian accesibles
> > + model <- "df$weight ~ df$group"
> > + summary (lm(model))
> > Error in df$weight : object of type 'closure' is not subsettable
> > 
> > Que estoy haciendo mal?
> > 
> > Muchas gracias y saludos!
> > 
> > 
> > On Thu, 18 Nov 2021 13:12:43 +0100
> > Proyecto R-UCA <r-uca using uca.es> wrote:
> > 
> > > Buenas,
> > > 
> > > a ver si esto te sirve:
> > > ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
> > > trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
> > > group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
> > > weight <- c(ctl, trt)
> > > dd <- data.frame(weight = weight, group = group, ctl = ctl,
> > > trt=trt)
> > > model <- "dd$weight ~ dd$group"
> > > summary(lm(model))
> > > 
> > > Únicamente tendrías que construir previamente la fórmula con paste.
> > > 
> > > La salida es:
> > > Call:
> > > lm(formula = model)
> > > 
> > > Residuals:
> > >     Min      1Q  Median      3Q     Max 
> > > -1.0710 -0.4938  0.0685  0.2462  1.3690 
> > > 
> > > Coefficients:
> > >             Estimate Std. Error t value Pr(>|t|)    
> > > (Intercept)   5.0320     0.2202  22.850 9.55e-15 ***
> > > dd$groupTrt  -0.3710     0.3114  -1.191    0.249    
> > > ---
> > > Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> > > 
> > > Residual standard error: 0.6964 on 18 degrees of freedom
> > > Multiple R-squared:  0.07308,   Adjusted R-squared:  0.02158 
> > > F-statistic: 1.419 on 1 and 18 DF,  p-value: 0.249
> > > 
> > > Un saludo.
> > > 
> > > El jue, 18-11-2021 a las 12:03 +0100, Griera escribió:
> > > > Hola, buenos días:
> > > > 
> > > > No es un problema concreto que tenga ahora, pero es un problema
> > > > general
> > > > que no se si tiene solución fácil. Hago una regresión (de
> > > > lm.html):
> > > > 
> > > > ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
> > > > trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
> > > > group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
> > > > weight <- c(ctl, trt)
> > > > lm.D9 <- lm(weight ~ group)
> > > > 
> > > > Si quiero que la variable independiente sea una "variable", y
> > > > hago:
> > > > 
> > > > X = "group"
> > > > lm.D9 <- lm(weight ~ X)
> > > > 
> > > > Y da el error: Error in model.frame.default(formula = XVD ~
> > > > group,
> > > > drop.unused.levels = TRUE) : 
> > > >   variable lengths differ (found for 'group')
> > > > 
> > > > Ya que, como me decían el otro día "estás asignando a la variable
> > > > X el
> > > > valor "X" y no el
> > > > contenido de la variable X."
> > > > 
> > > > ¿No hay forma de que entienda que "X" es el nombre de la variable
> > > > independiente "group", que no sea pasar la posición de la
> > > > variable?
> > > > 
> > > > Muchas gracias y saludos a todos.
> > > > 
> > > > _______________________________________________
> > > > R-help-es mailing list
> > > > R-help-es using r-project.org
> > > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> > > 
> > > _______________________________________________
> > > R-help-es mailing list
> > > R-help-es using r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> 
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es