r-增加循环中的变量名



我正试图用不同的自变量在for循环中运行一系列回归。

手动创建的自变量示例:

indep_vars_1 <- c("income", "female")
indep_vars_2 <- c("education", "wealth", "resources")
...
indep_vars_50 <- c("income", "size", "smoking", "pregnancy")

组合从1到50的所有内容:

indep_vars_all <- list(indep_vars_1, indep_vars_2 .... indep_vars_50)

创建循环:

for (i in indep_vars_all) {
model_i <- pisa.reg.pv(pvlabel = "MATH", x = i, data = df)
}

回归使用一个名为Intsvy的软件包运行,该软件包用于处理具有特定权重的调查数据(无需在软件包中过多详细说明(。

请使用这个循环,我们如何才能得到model_1到model_50?我很困惑如何增加"模型"。我尝试过model_imodel[i]和其他类似的组合,但都没有成功。

谢谢

您可以创建列表并保存模型。试试这个:

#Vars
indep_vars_1 <- c("income", "female")
indep_vars_2 <- c("education", "wealth", "resources")
indep_vars_50 <- c("income", "size", "smoking", "pregnancy")
#Combine
indep_vars_all <- list(indep_vars_1, indep_vars_2 , indep_vars_50)
#create a list
List <- list()
#Loop
for (i in 1:length(indep_vars_all)) {
List[[i]] <- pisa.reg.pv(pvlabel = "MATH", x = indep_vars_all[[i]], data = df)
}
#List of your models
names(List) <- paste0('model.',1:length(indep_vars_all))
List
list2env(List,envir = .GlobalEnv)

这是作为for循环替代品的lapply()版本。

indep_vars_all <- setNames(indep_vars_all, paste0("indep_vars_", 1:50))
list2env(lapply(indep_vars_all, function(i){
pisa.reg.pv(pvlabel = "MATH", x = i, data = df)
}), .GlobalEnv)

执行完上面的代码后,indep_vars_1indep_vars_50将被分配到您的工作区中。

最新更新