Вот base R
подход к проблеме с lapply
циклами.
Сначала, если вы хотите автоматически извлечь имена переменных, заканчивающиеся на _2
, которые должны быть всеми вашими зависимыми переменными, которые вы могли быреализуйте следующий код:
dep_vars<-grep("_2$",colnames(dataset),value = T) #This selects all variables ending in `_2` which should all be dependent variables.
reg_vars<-gsub("_2$","",dep_vars) #This removes the `_2` from the dependent variables which should give you the common stem which can be used to select both dependent and independent variables from your data frame.
Затем вы можете использовать это в цикле lapply
для создания формул:
full_results <- lapply(reg_vars, function(i) summary(lm(paste0("log(",i,"_2)~",i,"_1+AGE"),data=dataset)))
Теперь у вас будет список итогов линейной регрессии, гдеВы можете извлечь информацию, которую вы хотите.Я думаю, что это то, что вы хотите для вывода, но, пожалуйста, уточните, если нет:
print_results<-lapply(full_results,function(i) data.frame(
Dep_va = names(attributes(i[["terms"]])$dataClasses)[1],
Ind_var = names(attributes(i[["terms"]])$dataClasses)[2],
Covariates = names(attributes(i[["terms"]])$dataClasses)[3],
Pvalue = i[["coefficients"]][2,4],
upper.cI = i[["coefficients"]][2,1]+1.96*i[["coefficients"]][2,2],
low.cI = i[["coefficients"]][2,1]-1.96*i[["coefficients"]][2,2]))
Этот код даст вам список фреймов данных, и если вы хотите объединить его в один data.frame
:
final_results<-do.call("rbind",print_results)
Вывод результатов:
Dep_va Ind_var Covariates Pvalue upper.cI low.cI
1 A_2 A_1 AGE 0.25753805 1.113214 -0.1877324
2 B_2 B_1 AGE 0.68452053 1.211355 -1.9292236
3 C_2 C_1 AGE 0.04827506 1.497688 0.3661343
Надеюсь, это поможет!Дайте мне знать, если вы искали разные результаты.