我在列表中有3个数据集,我想使用测试数据和训练数据的所有组合来构建模型。例如:
我现在使用的方法费力且不明智。这是一个示例,我的问题是,如何使该过程自动化?
Day1 <- data.frame(x = c(1,2,3))
Day2 <- data.frame(x = c(4,5,6))
Day3 <- data.frame(x = c(7,8,9))
Days <- list(Day1,Day2,Day3)
Test <- list()
Train <- list()
Train[[1]] <- bind_rows(Day1, Day2)
Test[[1]] <- Day3
Train[[2]] <- bind_rows(Day1,Day3)
Test[[2]] <- Day2
Train[[3]] <- bind_rows(Day2,Day3)
Test[[3]] <- Day1
答案 0 :(得分:2)
我们可以使用combn
创建所有索引组合,然后使用lapply
为Train
选择那些元素,并从Test
中删除那些元素。
train_inds <- combn(seq_along(Days), 2, simplify = FALSE)
Train <- lapply(train_inds, function(x) dplyr::bind_rows(Days[x]))
Test <- lapply(train_inds, function(x) dplyr::bind_rows(Days[-x]))
检查输出
Train
#[[1]]
# x
#1 1
#2 2
#3 3
#4 4
#5 5
#6 6
#[[2]]
# x
#1 1
#2 2
#3 3
#4 7
#5 8
#6 9
#[[3]]
# x
#1 4
#2 5
#3 6
#4 7
#5 8
#6 9
Test
#[[1]]
# x
#1 7
#2 8
#3 9
#[[2]]
# x
#1 4
#2 5
#3 6
#[[3]]
# x
#1 1
#2 2
#3 3