#r #permutation
#r #перестановка
Вопрос:
У меня есть результат перестановки, как показано ниже;
abc <- gtools::permutations(4,3,repeats.allowed = T)
Я пытаюсь изменить этот ответ так, чтобы вектор abc[,1]
оставался таким, какой он есть, но векторным abc[,2]
и abc[,3]
должен быть следующим;
abc[,2]
должен быть переставлен в 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4
abc[,3]
должен быть переставлен в 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4
Ответ №1:
Это очень вручную, поэтому не уверен, что вы ищете более автоматизированный подход к сортировке:
abc[,2] <- rep(rep(1:4, each = 2), length.out = nrow(abc))
abc[,3] <- rep(c(rep(1:2, 2), rep(3:4, 2)), length.out = nrow(abc))
дает:
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 2
[3,] 1 2 1
[4,] 1 2 2
[5,] 1 3 3
[6,] 1 3 4
[7,] 1 4 3
[8,] 1 4 4
[9,] 1 1 1
[10,] 1 1 2
[11,] 1 2 1
[12,] 1 2 2
[13,] 1 3 3
[14,] 1 3 4
[15,] 1 4 3
[16,] 1 4 4
[17,] 2 1 1
[18,] 2 1 2
[19,] 2 2 1
[20,] 2 2 2
[21,] 2 3 3
[22,] 2 3 4
[23,] 2 4 3
[24,] 2 4 4
[25,] 2 1 1
[26,] 2 1 2
[27,] 2 2 1
[28,] 2 2 2
[29,] 2 3 3
[30,] 2 3 4
[31,] 2 4 3
[32,] 2 4 4
[33,] 3 1 1
[34,] 3 1 2
[35,] 3 2 1
[36,] 3 2 2
[37,] 3 3 3
[38,] 3 3 4
[39,] 3 4 3
[40,] 3 4 4
[41,] 3 1 1
[42,] 3 1 2
[43,] 3 2 1
[44,] 3 2 2
[45,] 3 3 3
[46,] 3 3 4
[47,] 3 4 3
[48,] 3 4 4
[49,] 4 1 1
[50,] 4 1 2
[51,] 4 2 1
[52,] 4 2 2
[53,] 4 3 3
[54,] 4 3 4
[55,] 4 4 3
[56,] 4 4 4
[57,] 4 1 1
[58,] 4 1 2
[59,] 4 2 1
[60,] 4 2 2
[61,] 4 3 3
[62,] 4 3 4
[63,] 4 4 3
[64,] 4 4 4
Комментарии:
1. вы правы, я думал об автоматическом способе взглянуть на это. Потому что с тем, что я делаю, я хотел бы расширить идею до чего-то подобного
abc <- gtools::permutations(9,3,repeats.allowed = T)
, для чегоabc[,2] <- rep(rep(1:9, each = 3), length.out = nrow(abc))
должен быть другой столбецabc[,3] <- rep(c(rep(1:3, 3), rep(4:6, 3), rep(7:9, 3)), length.out = nrow(abc))
. Есть идеи о том, как я мог бы все автоматизировать?2. Схема расширения с каждым новым элементом понятна, если вы посмотрите на нее. Самое сложное — расширить его по столбцам, потому что тогда у вас также не было бы abc [, 4] и т. Д.
3. Чего именно вы хотите достичь? Зачем вам нужен шаблон сортировки? Возможно, есть совершенно другой способ получить желаемый результат.
4. с тем, что я делаю, единственное, что меняется в
n
ingtools::permutations(n=9,r=3,repeats.allowed = T)
, ноr
всегда будет 3. Другими словамиn
, может быть 4 или 9 или что-то еще, но r всегда будет 3. Поэтому abc[,4] невозможно. Все, что мне нужно, это вид расположения точно так, как вы его выводили выше. Я думал оexpand.grid()
том, но это не сортировало бы его соответствующим образом. В качестве примера, если бы я отсортировалexpand.grid(c(1,2,3,4),c(1,2,3,4),c(1,2,3,4))
, чтобы получить ваши результатыabc
выше, это сработало бы5. Вопрос был в том, зачем вам нужен этот шаблон перестановки? Какой анализ вы хотите выполнить и почему важно иметь этот конкретный шаблон сортировки? Я скептически отношусь к тому, что это необходимо, еще и потому, что при выполнении перестановок у вас будет каждая комбинация два раза, и я думаю, вы не хотите запускать свои вещи несколько раз для каждого шаблона.