我首先使用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, 崩溃= '+')))
不确定如何执行上述操作。
答案 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] )