设置问题:我想将我的500行数据子集分成10个子集,每个子集50行。然后,我想将它们中的9个用作训练集,将1个用作测试,以使每个子集都有一个“机会”作为测试数据。
到目前为止我所做的:
# Get my 10 equal subsets and convert each to a data matrix.
b <- seq(50, 500, 50)
subsets <- lapply(seq_along(b), function(i) trainN[(b-49)[i]:b[i], ])
subsetsDF <- lapply(subsets, data.matrix)
# subsetsDF is a list of 10 data matrices
我不能做什么: 我不知道如何遍历i = 1到10的数据矩阵索引,使用索引i作为测试数据并将其他绑定到一起并将其分配给“训练数据”到目前为止,我的尝试是:
function(data) {
n_subset <- 1:10
for(j in seq_along(n_subset)) {
test <- data[[j]]
#train <- do.call(rbind, data[[-j]]) of course this isn't right
}
}
注意:我欢迎任何完全重组我的方法的建议。当我反思我要做什么时,会发现这不是最好的方法。尽管如此,提出的问题仍然使我感兴趣。因此,我欢迎严格解决我的问题的答案以及提供更好方法的答案。 (例如,我知道for循环在R中效率不高...我不知道如何使用apply函数来完成此操作。完成此操作后,我需要将其嵌套在另一个函数中,该函数运行从中得出的10个不同模型k的多个值中每个值的不同测试/训练划分。)