使用第一个for循环中的数据帧进行循环(R)

时间:2017-04-20 04:34:19

标签: r for-loop

由于我的训练集和验证集之间的特征不平衡,我试图在使用不同set.seeds选择的100个训练集中构建预测模型,然后,我试图计算从中获得的性能统计数据的平均值。 100个验证集中的100个预测模型。

我已经想出如何使用不同的set.seeds创建100个数据帧,用于使用“for循环”将个体(即行)随机分配到训练和验证集中。这个代码的一个例子如下......

使用新的set.seed重新采样100个数据帧中的80%培训和20%验证集

for(i in 1:100){  
    set.seed(i)
    id <- sample(seq(1, 2), size = nrow(dataframe), replace = TRUE, prob = c(.8, .2))
    assign(paste0("train", i), dataframe[id == 1,])
    assign(paste0("valid", i), dataframe[id == 2,])
}

这将创建标记为“train1,train2,... train100”和“valid1,valid2,... valid100”的数据框。这些数据框在所包含的个人数量上略有不同。我现在想使用我创建的100个训练集开发100个预测模型。为了开发这些模型,我需要为每个训练集(即训练数据帧)建立100个变量矩阵。我已经包含了一个简单(但不正确)的例子,我想要做的是:

for(i in 1:100){  

#Matrix 1: age (spline with 1 knot) + sex + individual characteristics
mod1_X=as.formula(~(bs(AGE, df=3) + SEX + CHF + COPD + DEMENTIA)

assign(paste0("xmat",i), model.matrix(mod1_X,train[i]))
}

但是,上面的代码不起作用(我没有得到xmat1,xmat2 ... xmat100),因为我无法弄清楚如何指定train [i]。例如,我想使用数据帧train1来创建xmat1,但上面的代码没有在model.matrix()中指定train1。有没有人知道如何在第二个“for循环”中指定train [i],或者是否有人知道比“for循环”更好的方法来创建和测试多个训练/验证集中的模型(例如bootstrapping)?

0 个答案:

没有答案