我想抽樣一個向量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)
}
我想抽樣一個向量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)
}
這是做這是一個非常方便的方法:
replicate(10,sample(x,length(x),replace = TRUE))
因爲你似乎想與抽樣更換,你可以得到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...
看起來你有一個合適的答案,但這裏的方法與你的第一次嘗試類似。區別在於我們定義了具有適當尺寸的samp
,然後迭代索引到該對象並一次填充一行:
samp <- matrix(NA, ncol = 7, nrow = 10)
for(i in 1:10){
samp[i,] <- sample(x, size = length(x), replace = T)
}