2012-04-21 24 views
8

我想抽樣一個向量x,長度爲7,替換和樣本向量分開10次。我試過類似以下的東西,但無法得到我期待的7x10輸出結果。這將產生一個1X7向量,但我想不出來得到其他9個載體R:多次替換一個向量的樣本

x <- runif(7, 0, 1) 
for(i in 1:10){ 
    samp <- sample(x, size = length(x), replace = T) 
} 

回答

20

這是做這是一個非常方便的方法:

replicate(10,sample(x,length(x),replace = TRUE)) 
4

因爲你似乎想與抽樣更換,你可以得到7個* 10個樣本一次(這是更有效的對大尺寸):

x <- runif(7) 
n <- 10 
xn <- length(x) 
matrix(x[sample.int(xn, xn*n, replace=TRUE)], nrow=xn) 

# Or slightly shorter: 
matrix(sample(x, length(x)*n, replace=TRUE), ncol=n) 

第二個版本直接使用sample,但也存在一些問題與此:如果x是長度爲1的數字,發生不好的事情。 sample.int更安全。

x <- c(pi, -pi) 
sample(x, 5, replace=T) # OK 
x <- pi 
sample(x, 5, replace=T) # OOPS, interpreted as 1:3 instead of pi... 
2

看起來你有一個合適的答案,但這裏的方法與你的第一次嘗試類似。區別在於我們定義了具有適當尺寸的samp,然後迭代索引到該對象並一次填充一行:

samp <- matrix(NA, ncol = 7, nrow = 10) 
for(i in 1:10){ 
    samp[i,] <- sample(x, size = length(x), replace = T) 
}