拉出未绘制的数字

时间:2015-11-17 02:57:01

标签: r random generator

以下是我正在使用的代码。我想随机抽取数字,我想继续这样做,直到所有数字1:18都被绘制出来。我不想两次绘制相同的数字。

RandomArray <- sample(1:18, 6, replace=F)

RandomArray2 <- sample(1:18,6, replace = F)
RandomArray3 <- sample(1:18,6, replace = F)
RandomArray2 <- ifelse(RandomArray==RandomArray2,
  sample(1:18,6,replace=F),RandomArray2)

RandomArray3 <- ifelse(RandomArray2==RandomArray3,
            sample(1:18,6,replace=F),RandomArray3)

理想的输出是

RandomArray [1 2 3 4 5 6] RandomArray2 [7 8 9 10 11 12] RandomArray3 [13 14 15 16 17 18] 

我也尝试过做

x <- 1:18 
test2 <- sapply(x, function(x) 
  if (x == RandomArray) x-RandomArray else x)

但那也不对,因为我只是想摆脱我已经画过的数字。

感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

这有效:

r_vecs = split(sample(18), 1:3)

工作原理。 sample(18)是1:18的排列;并且1:3被“回收”到相同的长度。 @akrun指出使用rep(1:3, 6)代替回收的1:3可能会更快。

评论。最好将它们保存在列表中,而不是乱用大量名为RandomArray*的对象。矩阵将是另一个不错的选择:

r_vecs = matrix(sample(18), ncol=3)
相关问题