On Sep 13, 2010, at 10:30 AM, James Hudson wrote:

> I‚d like to sample the vector „y‰ repeatedly. In this dummy dataset, I‚d
> like to sample (and store) it 1, 2, and 3 times.
> 
> Is there a straightforward way to do this without using a „for‰ loop?
> 
> x <- c(1 :3)
> 
> y <- c(1:10)
> 
> (run.sample <- sample (y, x))
> 
> Thanks very much,
> 
> James Hudson


When you say "1, 2 and 3 times", do you mean that you want 1, 2 and 3 elements 
from 'y' randomly sampled:

set.seed(1)

> sapply(x, function(i) sample(y, i))
[[1]]
[1] 3

[[2]]
[1] 4 6

[[3]]
[1] 10  2  8



Or, do you want the entire 'y' vector permuted 1, 2 and 3 times:


set.seed(1)

> sapply(x, function(i) replicate(i, sample(y)))
[[1]]
      [,1]
 [1,]    3
 [2,]    4
 [3,]    5
 [4,]    7
 [5,]    2
 [6,]    8
 [7,]    9
 [8,]    6
 [9,]   10
[10,]    1

[[2]]
      [,1] [,2]
 [1,]    3   10
 [2,]    2    2
 [3,]    6    6
 [4,]   10    1
 [5,]    5    9
 [6,]    7    8
 [7,]    8    7
 [8,]    4    5
 [9,]    1    3
[10,]    9    4

[[3]]
      [,1] [,2] [,3]
 [1,]    5    9    5
 [2,]    6    6    8
 [3,]    4    7    4
 [4,]    2    4    2
 [5,]   10    8    1
 [6,]    8   10    6
 [7,]    9    1    7
 [8,]    1    2    9
 [9,]    7    3    3
[10,]    3    5   10


I am guessing the first scenario, but included the second just in case.

See ?sapply in which help for both sapply() and replicate() is available.

HTH,

Marc Schwartz

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to