R,生成只包含0和1的数字向量,长度确定

19

我想创建一个类似这样的列表/向量:

c(0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1)
或者
c(0,0,1,0,1,0,1,1,1,1,0,1,0,1,1,0,1)

这个向量的长度是一个变量“X”,而0和1的位置是完全随机的。

2个回答

28
X <- rbinom(20, 1, 0.5)

这是一个随机二项分布的生成函数,它将创建一个长度为20的向量 'X',其中包含 '0' 和 '1',成功概率为0.5。以下是输出结果。

> X
 [1] 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1

26

这可以通过从二进制数字集合中 带有替换 进行抽样来完成:

n <- 10 # sample size
sample(c(0,1), replace=TRUE, size=n)

顺带一提,如果你希望出于任何原因精确复制上述两个向量,你需要更改随机数生成器的种子:

set.seed(194842)
sample(c(0,1), replace=TRUE, size=21)
## [1] 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

set.seed(153291)
sample(c(0,1), replace=TRUE, size=17)
## [1] 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1

6
一个小技巧。您也可以写成sample(2)-1,这样就不必在sample函数中写c(0,1)了。我认为这样做也会更快一些。 - Rich Scriven
如果 size 很大,那么它不会更快,因为 -1 会导致额外的分配和循环。此外,如果想要速度,可以使用 sample.int - jangorecki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接