Как случайным образом спарить элементы в векторе? [Р]
Я просмотрел около 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))