R:如何随机创建一个相等的变量块?

R: How to create a equal blocks of variables randomly?

我有一个包含 n = 20 个变量(列数)的数据框,分布在 b = 5 个块(每个块 4 个变量)上。 我想从 5 个变量块中创建 p = 4 个随机且大小相等的块 个变量

我试过了:

sample (x = 1: p, size = n, replace = TRUE) 
[1] 1 1 1 1 1 1 1 1 1 2 2 2 3 3 3 4 4 4 4 4

预期结果示例(每个块 5 个变量):

[1] 4 1 2 1 4 2 3 1 2 3 2 1 4 3 1 2 3 3 4 4 

感谢您的帮助!

在下面的评论中讨论了这个问题,这是一个解决方案:

创建一个看起来像你想要的向量,然后使用 sample 通过不放回地采样整个向量来随机排序它:

p <- 4
b <- 5

sample(rep(1:p, b), size = p * b)

[1] 3 1 4 3 3 4 1 1 4 2 2 4 3 2 1 2 2 4 3 1

你可以试试:

sample(x = rep(1:p,n/p), size = n, replace = FALSE)