Если вы хотите, чтобы самый быстро меняющийся столбец был первым столбцом, я думаю, у вас есть несколько вариантов.
Начнем с простого определения факторов:
list1 <- list(
Names = c("Model_1", "Model_2"),
Batch_size = c(20, 32),
Cycle = 1:5)
(Если это из уже существующего фрейма, то можно сделать list1 <- lapply(df1, unique)
, чтобы получить это.)
Отсюда
rev(do.call(expand.grid, rev(list1)))
# Names Batch_size Cycle
# 1 Model_1 20 1
# 2 Model_1 20 2
# 3 Model_1 20 3
# 4 Model_1 20 4
# 5 Model_1 20 5
# 6 Model_1 32 1
# 7 Model_1 32 2
# 8 Model_1 32 3
# 9 Model_1 32 4
# 10 Model_1 32 5
# 11 Model_2 20 1
# 12 Model_2 20 2
# 13 Model_2 20 3
# 14 Model_2 20 4
# 15 Model_2 20 5
# 16 Model_2 32 1
# 17 Model_2 32 2
# 18 Model_2 32 3
# 19 Model_2 32 4
# 20 Model_2 32 5
Это включает в себя «сортировку», но по столбцам сами, а не ряды. То есть, rev(list1)
работает только с тремя элементами, а rev(expand.grid(...))
также меняет местами только три элемента (столбцы кадра).