R:在回归中使用包含变量名的字符串

时间:2015-12-05 19:02:34

标签: r

我首先使用grep来获取以前言开头的所有变量名称:“h_。”然后我将该数组折叠成一个单独的字符串,用加号分隔。有没有办法在线性回归中随后使用这个字符串?

例如:

holiday_array <- grep("h_", names(df), value=TRUE)
holiday_string =  paste(holiday_array, collapse=' + ' )
r_3 <- lm(log(assaults) ~ year + month + holiday_string, data = df)

我收到了直截了当的错误variable lengths differ (found for 'holiday_string')

我可以这样做,例如:

  holiday_formula <- as.formula(paste('log(assaults) ~ attend_v + year+ month + ', paste("", holiday_vars, collapse='+')))
  r_3 <- lm(holiday_formula, data = df)

但我不想为每组新控件键入单独的公式构造。我希望能够在lm函数中添加“string”。这可能吗?

以上是有问题的,因为我要说我想在holiday_formula中包含的公式中添加另一组控制变量,所以像这样:

  

weather_vars&lt; - grep(“w_”,names(df),value = TRUE)weather_formula   &lt; - as.formula(paste(holiday_formula,paste(“+”,weather_vars,   崩溃= '+')))

不确定如何执行上述操作。

1 个答案:

答案 0 :(得分:3)

我不知道构建公式参数的简单方法与您拒绝的方法不同(尽管我使用update.formula考虑和拒绝,因为它也需要使用as.formula),但这是实现同一目标的另一种方法。它使用“。” - R公式的扩展功能,并依赖于[ - 函数接受列选择的字符参数的能力:

  r_3 <- lm(log(assaults) ~ attend_v + year+ month + . ,
            data = df[ , c('assaults', 'attend_v', 'year', 'month', holiday_vars] )