2016-11-23 1 views
0

Я хотел бы иметь тот же результат этого кода с помощью replicate функцииR, как я могу получить одинаковые результаты, используя функцию «для», чтобы получить результат из «replicate»?

set.seed(1) 
n <- 100 
sides <- 6 
p <- 1/sides 
zs <- replicate(10000,{ 
x <- sample(1:sides,n,replace=TRUE) 
(mean(x==6) - p)/sqrt(p*(1-p)/n) 
}) 

с помощью for функции. Код, который я пробовал, выглядит следующим образом.

n<-10000 
side<-6 
p<-1/side 
set.seed(1) 
for(i in 1:n){ 
z<-vector("numeric", n) 
x<-sample(1:side, 100, replace=TRUE) 
z[i]<-mean(x==6) 
} 

Но код выше не работает.

+0

Я пытаюсь понять, почему вы хотите использовать 'for', когда векторизованный (и, следовательно, обычно лучший) способ отлично работает ...? – LAP

+1

Возьмите 'z <-vector (" numeric ", n)' из цикла. В текущем случае на каждой итерации z инициализируется (снова) – etienne

ответ

0
Try this: 

set.seed(1) 
n <- 100 
sides <- 6 
p <- 1/sides 
zs <- replicate(10000,{ 
    x <- sample(1:sides,n,replace=TRUE) 
    (mean(x==6) - p)/sqrt(p*(1-p)/n) 
}) 

n<-10000 
sides<-6 
p<-1/sides 
set.seed(1) 
z<-vector("numeric", n) 
for(i in 1:n){ 
    x<-sample(1:sides, 100, replace=TRUE) 
    z[i]<-(mean(x==6) - p)/sqrt(p*(1-p)/100) 
} 

all(zs == z) 
# TRUE 
+0

Об этом слишком поздно. Большое спасибо!! –

Смежные вопросы