7 votos

Problema con carácter de vectores y de regresión lineal en R

Pregunta rápida.

Quiero realizar una regresión lineal que se parece a esto:

lm(y ~ x1 + x2 + x3 + x4 +x5, mydata)

Esto funciona bien si puedo escribir manualmente el código.

Sin embargo, las variables independientes que se desea utilizar se almacenan como un personaje, como este:

> vars
[1] "x1 + x2 + x3 + x4 +x5"

He intentado escribir esto:

lm(y ~ vars, mydata)
Error in model.frame.default...

Pero da un error!

Así que he intentado esto:

lm(y ~ noquote(vars), mydata)
Error in model.frame.default...

Y luego esta

lm(y ~ print(vars, quote = FALSE), mydata)
Error in model.frame.default...

Alguien tiene idea de cómo puedo solucionar este problema? La cadena de caracteres "vars" es proporcionada por el programa de arriba, así que no puedo trabajar alrededor de ese nivel.

Gracias!

9voto

David J. Sokol Puntos 1730

Usted puede construir una fórmula de carácter vectores utilizando el estándar de las funciones R y as.formula(). El truco es tener en cuenta que usted necesita para tener una completa fórmula (que contenga al menos un ~) para R para crear una fórmula de objetos para usted. Aquí es un ejemplo

## predictors
vars <- "x1 + x2 + x3 + x4 + x5"

## dummy data for example
dat <- data.frame(matrix(rnorm(120), ncol = 6))
names(dat) <- c("y", paste("x", 1:5, sep = ""))

## create a formula - here we need to paste on the response part
##  y ~
form <- as.formula(paste("y ~", vars))

## Fit the model using `form`
mod <- lm(form, data = dat)

Si imprime form verás que R ha creado un objeto especial que ya no se imprime como una cadena de caracteres:

> form
y ~ x1 + x2 + x3 + x4 + x5

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X