[R] How to generate for one vector matrix

Marc Schwartz (via MN) mschwartz at mn.rr.com
Thu Oct 13 21:15:16 CEST 2005


On Thu, 2005-10-13 at 19:47 +0200, Jan Sabee wrote:
> Is there any routine to generate for one vector matrix.
> If I have X I want to generate start from zero to maximum value each vector.
> 
> For example, I have a vector x = (4,2,3,1,4)
> I want to generate n=6 times, for 4, start 0 to 4, then 2 start 0 to 2, ect.
> 
> The result something like this:
> 
> generate(x,n=6)
> 1,1,2,1,4
> 1,2,3,0,3
> 4,0,1,1,1
> 3,1,0,1,4
> 0,0,3,0,0
> 4,1,3,0,4
> 
> Could anyone help me. Thanks.
> Regards,
> Jan Sabee


If I am properly understanding what you are doing here, you have an
initial vector of values. You want to create a matrix, whose columns are
the result of random sampling with replacement from the initial vector
'n' times, where the sampling space for each column "i" is from 0:x[i]?

If correct, this should do it:

> x <- c(4, 2, 3, 1, 4)

> x
[1] 4 2 3 1 4

> sapply(x, function(x) sample(0:x, 6, replace = TRUE))
     [,1] [,2] [,3] [,4] [,5]
[1,]    4    2    1    1    2
[2,]    3    0    0    0    0
[3,]    1    2    0    1    3
[4,]    4    2    1    1    1
[5,]    3    1    3    1    0
[6,]    0    1    1    1    0


Just replace '6' in the sample() arguments with the 'n' you require.

See ?sapply and ?sample.

HTH,

Marc Schwartz




More information about the R-help mailing list