2016-11-23 63 views
0

我想有使用replicate功能这段代码的结果相同,R,我怎样才能得到相同的结果使用函数“for”得到“复制”的结果?

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

检查时间太晚。非常感谢!! –

相关问题