假设有一些数据.第foo_data_frame帧,其中一个希望找到目标列Y与其他一些列的回归.为此,通常使用一些公式和模型.例如:

linear_model <- lm(Y ~ FACTOR_NAME_1 + FACTOR_NAME_2, foo_data_frame)

如果公式是静态编码的,那就很好了.如果需要在多个因变量为常数的模型上求根(例如,2),可以这样处理:

for (i in seq_len(factor_number)) {
  for (j in seq(i + 1, factor_number)) {
    linear_model <- lm(Y ~ F1 + F2, list(Y=foo_data_frame$Y,
                                         F1=foo_data_frame[[i]],
                                         F2=foo_data_frame[[j]]))
    # linear_model further analyzing...
  }
}

我的问题是,当程序运行期间变量的数量动态变化时,如何进行同样的影响?

for (number_of_factors in seq_len(5)) {
   # Then root over subsets with #number_of_factors cardinality.
   for (factors_subset in all_subsets_with_fixed_cardinality) {
     # Here I want to fit model with factors from factors_subset.
     linear_model <- lm(Does R provide smth to write here?)
   }
}

推荐答案

参见?as.formula,例如:

factors <- c("factor1", "factor2")
as.formula(paste("y~", paste(factors, collapse="+")))
# y ~ factor1 + factor2

其中factors是一个字符向量,包含要在模型中使用的因子的名称.您可以将其粘贴到lm模型中,例如:

set.seed(0)
y <- rnorm(100)
factor1 <- rep(1:2, each=50)
factor2 <- rep(3:4, 50)
lm(as.formula(paste("y~", paste(factors, collapse="+"))))

# Call:
# lm(formula = as.formula(paste("y~", paste(factors, collapse = "+"))))

# Coefficients:
# (Intercept)      factor1      factor2  
#    0.542471    -0.002525    -0.147433

R相关问答推荐

用apply/map/etch替换循环以加快速度

R:对于没有数据的缓冲区,加权平均值为0

导入到固定列宽的R中时出现问题

隐藏e_mark_line的工具提示

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

未识别时区

如何从像glm这样的模型中提取系数表的相关性?

传递ggplot2的变量作为函数参数—没有映射级别以正确填充美学

如何使用ggplot对堆叠条形图进行嵌套排序?

从外部文件读取多个值作为字符向量

使用for循环和粘贴创建多个变量

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

自定义gggraph,使geom_abline图层仅在沿x轴的特定范围内显示

在ggplot2上从多个数据框创建复杂的自定义图形

如何提取R中其他字符串和数字之间的字符串?

在散点图中使用geom_point放置线图例

为什么函数toTitleCase不能处理english(1),而toupper可以?

如何获取R chromote中的当前URL?

在不重复主题的情况下重新排列组

R:使用ApexCharge更改标签在饼图中的位置