I\'d like to sample a vector x of length 7 with replacement and sample that vector 10 separate times. I\'ve tried the something like the following but can\'t get the result
Looks like you got a suitable answer, but here's an approach that's similar to your first attempt. The difference is that we define samp
with the appropriate dimensions, and then iteratively index into that object and fill it one row at a time:
samp <- matrix(NA, ncol = 7, nrow = 10)
for(i in 1:10){
samp[i,] <- sample(x, size = length(x), replace = T)
}
Since you seem to want to sample with replacement, you can just get the 7*10 samples at once (which is more efficient for large sizes):
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)
The second version uses sample
directly, but there are some issues with that: if x
is a numeric of length 1, bad things happen. sample.int
is safer.
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...
This is a very convenient way to do this:
replicate(10,sample(x,length(x),replace = TRUE))