R-在用户定义模型上的度量列表上循环

R-在用户定义模型上的度量列表上循环,r,regression,R,Regression,我目前在差异模型方面存在差异,并且希望以有效的方式度量同一模型的不同度量 例如,我有一个数据框,其中的列表示行驶里程、工作小时数、状态、组和时间 目前,我在其中复制和粘贴每个度量的模型的代码: # Create DID models model_miles <- lm(df$miles_driven ~ df$Group + df$Time + df$Group * df$Time, data = df)

我目前在差异模型方面存在差异,并且希望以有效的方式度量同一模型的不同度量

例如,我有一个数据框,其中的列表示行驶里程、工作小时数、状态、组和时间

目前,我在其中复制和粘贴每个度量的模型的代码:

# Create DID models
model_miles <- lm(df$miles_driven ~ df$Group 
                    + df$Time 
                    + df$Group * df$Time, data = df)
model_hours <- lm(df$hours_worked ~ df$Group 
       + df$Time 
       + df$Group * df$Time, data = df)

# Select results using clustered standard errors. The purpose of this is to 
# avoid making distributional assumptions about the errors in the models. 
results_miles <- clubSandwich::coef_test(model_miles, 
                                        vcov = "CR2", 
                                        cluster = df$state, 
                                        test = "Satterthwaite")
results_hours <- clubSandwich::coef_test(model_hours, 
                           vcov = "CR2", 
                           cluster = df$state, 
                           test = "Satterthwaite")

 results <- data.table::rbindlist(list(results_miles, results_hours))
View(results)
#创建DID模型

如果您使用
[[
而不是
$
,它将起作用

例如:

dat <- data.frame(A=1:1, B=1:2)
x <- "A"
lm(dat[[x]] ~ dat$B)

dat在这些情况下,我总是
lm
中粘合一个公式。下面的示例。如果您为
lm
提供了
data
参数,而不是显式传递
dataframe$varname
,则只需给出变量名即可

library(glue)
dostuff <- function(metric, dataframe){
  model.form <- '{metric} ~ b + c + c*d'
  lm(as.formula(glue(model.form)), data = dataframe)
}

df <- data.frame(a = runif(10), b = runif(10), c = runif(10), d = runif(10))

dostuff('a', df)
library(glue)
dostuff <- function(metric, dataframe){
  model.form <- '{metric} ~ b + c + c*d'
  lm(as.formula(glue(model.form)), data = dataframe)
}

df <- data.frame(a = runif(10), b = runif(10), c = runif(10), d = runif(10))

dostuff('a', df)
glue('{metric} ~ b + c + c*d')
paste(metric, '~ b + c + c*d')