我想用一个长度为7的向量x进行采样,然后用10个单独的样本进行采样.我尝试了类似下面的东西,但无法得到我想要的结果7x10输出.这会生成1x7向量,但我无法弄清楚其他9个向量
x <- runif(7, 0, 1)
for(i in 1:10){
samp <- sample(x, size = length(x), replace = T)
}
Run Code Online (Sandbox Code Playgroud)
jor*_*ran 28
这是一种非常方便的方法:
replicate(10,sample(x,length(x),replace = TRUE))
Run Code Online (Sandbox Code Playgroud)
由于您似乎想要进行替换采样,因此您可以一次获取 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)
Run Code Online (Sandbox Code Playgroud)
第二个版本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...
Run Code Online (Sandbox Code Playgroud)