我关注R中的以下编程练习:
生成10.000个4维向量。
矢量的分量是从伯努利分布生成的,概率为0.5。
检测至少3'1'的所有载体。
为了生成一个这样的样本我使用
sample(0:1, 4, replace = TRUE)
为了生成矢量,我使用
x <- c(sample(0:1, 4, replace = TRUE))
由于我需要10.000个向量,我使用for
循环:
for(i in 1:10000){c(sample(0:1, 4, replace = TRUE))}
所以,现在我有10.000个向量。
为了继续执行任务,我应该将所有内容放入列表中。
然后,使用合适的if
条件,我认为应该可以完成任务。
任何人都可以帮助我吗?
答案 0 :(得分:3)
以下是您的问题的解决方案:
set.seed(135)
n <- 10000
X <- matrix(rbinom(4*n, size=1, prob=0.5), nrow=n)
apply(X, 1, function(x) sum(x)>2)
答案 1 :(得分:1)
@MarcoSandri的解决方案会更快,但您可以通过这种方式修改解决方案以使其正常工作
num = 0
for(i in 1:10000){
x = c(sample(0:1, 4, replace = TRUE))
if(sum(x) >= 3){
num = num + 1
}
}