Using R's lm on a dataframe with a list of predictors

Viewed 38552

I have a dataframe with let's say N+2 columns. The first is just dates (mainly used for plotting later on), the second is a variable whose response to the remaining N columns I would like to compute. I'm thinking there must be something like

df = data.frame(y = 1:10, x1 = runif(10), x2 = rnorm(10))
fit = lm(y~df[,2:3],data=df)

This doesn't work. I've also tried and failed with

fit = lm(y~sapply(colnames(df)[2:3],as.name),data=df)

Any thoughts?

3 Answers

I am fairly new to R, but I found another way to do this for named columns in a data frame. Say you want to run regression using all columns except for column x2, then you'll write:

df = data.frame(y = 1:10, x1 = runif(10), x2 = rnorm(10))
# Removes the column containing x2 so regression on x1 only
model <- lm(Y ~ . - x2, data = df)
# to remove more columns (assuming there were more columns in the data frame)
model <- lm(Y ~ . - x2 - x3 - x4, data = df)

The rest of the answers are pretty old, so maybe it's a new feature, but it's pretty neat!

Related