Как случайным образом спарить элементы в векторе? [Р]

Я просмотрел около 7 различных ответов, а также искал файлы справки, и не повезло (я не использовал R в течение долгого времени, так что я довольно ржавый).

У меня есть вектор, представляющий популяцию из n игроков, играющих в разные стратегии выживания, и я хочу случайным образом связать каждый элемент с другим. Первоначально я попробовал код ниже, но, очевидно, это не может работать, так как результирующий объект имеет n элементов, тогда как мой результирующий объект должен иметь n / 2.

popsize = 10
nstrats = 3

Population <- sample(1:nstrats, popsize, T)
Opponents <- sample(Population)
Pairings <- cbind(Population, Opponents)

Я пытаюсь сделать это без цикла, хотя я с удовольствием приму любые предложения (особенно, если использование цикла является единственным способом сделать это!)

Спасибо заранее!

1 ответ

Решение

Это даст вам список пар от населения (он просто расщепляется Population на пары):

split(Population,rep(1:(popsize/2),each=2))

Если вы хотите случайным образом соединить элементы Population просто перемешайте его перед созданием пар:

split(sample(Population),rep(1:(popsize/2),each=2))
Другие вопросы по тегам