2015-05-04 26 views
2

我想嘗試與輕微扭曲的替代品。我想要抽取一個列表,向量等... 5次,然後總結一下。並替換5個採樣值,並進行1000次。樣品5次和總和,與替換

x<- 1:1000 
samp <- matrix(NA, ncol = 1, nrow = 1000) 
for(i in length(x)){ 
samp[i,] <- sum(sample(x,5,replace = TRUE))} 

我無法弄清楚就是爲什麼這個心不是循環工作

回答

2

您在length(x)前錯過了1:(即從1到1 x的長度)。您的代碼應該是這樣的:

x<- 1:1000 
samp <- matrix(NA, ncol = 1, nrow = 1000) 
for(i in 1:length(x)){ 
    samp[i,] <- sum(sample(x,5,replace = TRUE))} 

偉大的工程:

> str(samp) 
int [1:1000, 1] 2715 2312 3180 1364 2851 2429 2888 2381 2772 2317 ... 

此外,for-loops有被R中緩慢的一個不好的名聲,所以你可能要考慮循環像使用其他的方法C++方式與(例如)replicate這樣的:

定義函數:

myfunc <- function(x) { 
    sum(sample(x,5,replace = TRUE)) 
} 

,然後用它是這樣的:

x <- 1:1000 
mymat <- matrix(replicate(1000, myfunc(x)), ncol=1) 

> str(mymat) 
int [1:1000, 1] 2481 2236 2492 1759 1905 3243 2606 2624 3013 2309 ... 
+0

這個偉大的工程!也感謝功能的想法:) – user3919708

+0

真的很高興我可以幫忙:) – LyzandeR