как выполнить процедуру комбинирования вектора, чтобы исходный вектор был первой строкой

у меня есть этот вектор

 b=c(5,8,9)

Я хочу выполнить комбинацию для b, выбирая 2 элемента за раз, чтобы у меня были исходные элементы b в качестве моей первой строки, чтобы получить

        [,1] [,2] [,3]
[1,]    5     8    9
[2,]    8     9    5

Я попробовал combn(b, 2), и это дало мне это

        [,1] [,2] [,3]
[1,]    5     5    8
[2,]    8     9    9

Могу ли я получить помощь для достижения желаемого результата?


person user3327637    schedule 11.10.2018    source источник
comment
Это перестановки, поскольку порядок имеет значение. То, что вы наблюдаете с combn(b, 2), это все комбинации b выберите 2. Таких комбинаций всего 3: (5, 8), (5, 9), (8, 9). Результатом является столбцовая матрица.   -  person Joseph Wood    schedule 11.10.2018
comment
Кроме того, это R? Если это так, вы должны добавить тег r.   -  person Joseph Wood    schedule 12.10.2018
comment
Не понятно, о чем вы спрашиваете. Если вам нужно, чтобы первая строка была исходными значениями, тогда вам не нужно выбирать элементы 2 — вы хотите использовать первое значение, а затем выбрать (образец) 1 из двух других значений? поэтому ваша матрица должна иметь первую строку как 5, 8, 9, а вторую строку как (8 или 9), (5 или 9), (5 или 8)?   -  person Tyler    schedule 12.10.2018
comment
Да, ты прав, Тайлер, мне нужен мой вывод как (5 8 9) карты в (8 9 5) или (5 8 9) карты в (9 5 8).   -  person user3327637    schedule 13.10.2018


Ответы (1)


Поскольку вторая строка желаемого результата не определена однозначно, нет необходимости в каких-либо сложных инструментах:

b <- 1:10
rbind(b, c(b[-1], b[1]))
#   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# b    1    2    3    4    5    6    7    8    9    10
#      2    3    4    5    6    7    8    9   10     1

В этом случае я только "сдвигаю" b на одну позицию во второй строке, что действительно приводит к перестановке. Я предполагаю, что элементы b не повторяются.

person Julius Vainora    schedule 06.11.2018
comment
@ user3327637, это ответ на твой вопрос? - person Julius Vainora; 17.11.2018