生成行和列中没有重复元素的排列

问题描述 投票:0回答:1

我有 4 支球队(A-D)和 4 场比赛(1-4)。

目标:我想生成一个数据框(4,4):

  • 有 4 行,可进行 4 轮
  • 有 4 列,适合 4 个游戏
  • 我想在这 4 行/回合中为每一列/游戏分配不同的团队
  • 而且我不想在行或列中出现重复项

我知道如何进行排列,并且知道如何避免每行中的重复项,但是当我试图避免行和列中的重复项时,我陷入了困境。

最后,我想得到一个像这样的数据框(水平或垂直没有重复):

A B C D

B D A C

D C B A

C A D B

显然,实际上我有更多的游戏和团队!

有人可以帮我吗?

谢谢!

r dataframe permutation
1个回答
0
投票

我认为你的问题相当于循环遍历向量。 IE。从 ABCD 开始,移至 BCDA,等等。我们可以这样做,例如像这样:

x <- LETTERS[1:4]
sapply(seq_along(x), \(i) x[c(i:length(x), seq_len(i - 1))])
     [,1] [,2] [,3] [,4]
[1,] "A"  "B"  "C"  "D" 
[2,] "B"  "C"  "D"  "A" 
[3,] "C"  "D"  "A"  "B" 
[4,] "D"  "A"  "B"  "C"
© www.soinside.com 2019 - 2024. All rights reserved.