我想抽样一个向量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)
}