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 en 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 en r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es