我想在使用caret::createFolds
后将个别折叠带入全球环境。下面是一个工作示例。
# Load libraries
library(tibble)
library(caret)
# Set the seed so example is reproducible
set.seed(123)
# Create example data set
df1 <- tibble(id = seq(1, 100, by = 1),
gender = as.factor(rbinom(n = 100, size = 1, prob = 0.50)),
working = as.factor(rbinom(n = 100, size = 1, prob = 0.40)),
pweight = sample(50:500, 100, replace = TRUE))
# Create 5 folds
folds <- createFolds(df1$id, k = 5)
这创建了5个数据集,每个数据集有20个观察值,正如预期的那样。我现在想做的是将每个数据集带入全球环境。我可以使用以下命令单独执行此操作:
fold1 <- df1[folds[[1]], ]
fold2 <- df1[folds[[2]], ]
fold3 <- df1[folds[[3]], ]
fold4 <- df1[folds[[4]], ]
fold5 <- df1[folds[[5]], ]
但是我想写一个函数或循环来更简洁地完成这个。在我的真实世界的例子中,我有20倍,所以它是相当多的代码。我希望折叠顺序为名称(即fold1,fold2,fold3等)。
我正在尝试list2env(folds, envir = .GlobalEnv)
,但这并没有将各个数据集带入全球环境。
我仍在学习如何最好地使用功能,所以任何解释也会非常感激。