为R中的循环创建,以运行相同的模型10次

为R中的循环创建,以运行相同的模型10次,r,for-loop,R,For Loop,我试图在插补后在R中写一个循环。插补插补了10个数据集,我想在每个数据集中运行相同的模型,并预测每个数据集中的结果得分。我当前的代码不起作用: for (i in 1:10) { impi <- glm(died ~ agecat + female_1 + insurance + mech + transfer + iss + mxaisbr1 + maxais + cm_chf_1 + cm_mets_1 + cm_liver_1 + cm

我试图在插补后在R中写一个循环。插补插补了10个数据集,我想在每个数据集中运行相同的模型,并预测每个数据集中的结果得分。我当前的代码不起作用:

for (i in 1:10) {
impi <- glm(died ~ agecat + female_1 + insurance + mech + transfer +
            iss + mxaisbr1 + maxais + cm_chf_1 + cm_mets_1 + cm_liver_1 +
            cm_htn_c_1 + cm_bldloss_1 + state, data = subset(imp, .imp == i), family = binomial)
preimpi <- predict(impi, type = c('response'))
}
for(1:10中的i){

impi一种解决方案是将impi和preimpi初始化为列表,例如

impi = list()
preimpi = list()
for (i in 1:10) {
  impi[[i]] <- glm(died ~ agecat + female_1 + insurance + mech +
               transfer + iss + mxaisbr1 + maxais + cm_chf_1 + 
               cm_mets_1 + cm_liver_1 + cm_htn_c_1 + cm_bldloss_1 +
               state, data = subset(imp, .imp == i), family = binomial)
  preimpi[[i]] <- predict(impi[[i]], type = c('response'))
}
impi=list()
preimpi=list()
因为(我在1:10){

impi[[i]]一种解决方案是将impi和preimpi初始化为列表,例如

impi = list()
preimpi = list()
for (i in 1:10) {
  impi[[i]] <- glm(died ~ agecat + female_1 + insurance + mech +
               transfer + iss + mxaisbr1 + maxais + cm_chf_1 + 
               cm_mets_1 + cm_liver_1 + cm_htn_c_1 + cm_bldloss_1 +
               state, data = subset(imp, .imp == i), family = binomial)
  preimpi[[i]] <- predict(impi[[i]], type = c('response'))
}
impi=list()
preimpi=list()
因为(我在1:10){

impi[[i]]最有效的方法是创建一个数据集列表(10个数据集)然后使用
dplyr
purr
包为每个数据集运行模型。您可以在这里找到一些信息:但是,for循环没有问题。看起来您在每次迭代时都覆盖了
preimpi
。谢谢!您知道我怎么才能不覆盖preimpi吗?我的for循环代码的输出是impi和preimp我想你需要先创建一组空值来存储结果:最有效的方法是创建一个数据集列表(你的10个数据集)然后使用
dplyr
purr
包为每个数据集运行模型。您可以在这里找到一些信息:但是,for循环没有问题。看起来您在每次迭代时都覆盖了
preimpi
。谢谢!您知道我怎么才能不覆盖preimpi吗?我的for循环代码的输出是impi和preimpi而不是我想要的imp1-imp10和preimp1-preimp10。我认为您需要首先创建一组空值来存储结果:
impi = list()
for (i in 1:10) {
  impi[[i]] <- glm(died ~ agecat + female_1 + insurance + mech +
               transfer + iss + mxaisbr1 + maxais + cm_chf_1 + 
               cm_mets_1 + cm_liver_1 + cm_htn_c_1 + cm_bldloss_1 +
               state, data = subset(imp, .imp == i), family = binomial)
}
preimpi = lapply(impi, FUN = predict, type = "response")