拉出尚未抽出的号码
Pull Numbers That Have Not Been Drawn
这是我正在使用的代码。我想随机抽取数字,我想一直这样做,直到抽出所有数字 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)
但这也不对,因为我只想去掉已经画好的数字。
感谢您的帮助。
这个有效:
r_vecs = split(sample(18), 1:3)
它是如何工作的。 sample(18)
是 1:18 的排列; 1:3 是 "recycled" 相同的长度。 @akrun 指出使用 rep(1:3, 6)
代替回收的 1:3 会更快。
评论。 最好将它们保存在一个列表中,而不是与一大堆像 RandomArray*
这样命名的对象混在一起。矩阵将是另一个不错的选择:
r_vecs = matrix(sample(18), ncol=3)
这是我正在使用的代码。我想随机抽取数字,我想一直这样做,直到抽出所有数字 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)
但这也不对,因为我只想去掉已经画好的数字。
感谢您的帮助。
这个有效:
r_vecs = split(sample(18), 1:3)
它是如何工作的。 sample(18)
是 1:18 的排列; 1:3 是 "recycled" 相同的长度。 @akrun 指出使用 rep(1:3, 6)
代替回收的 1:3 会更快。
评论。 最好将它们保存在一个列表中,而不是与一大堆像 RandomArray*
这样命名的对象混在一起。矩阵将是另一个不错的选择:
r_vecs = matrix(sample(18), ncol=3)