[R] Sample without replacement

Peter Dalgaard p.dalgaard at biostat.ku.dk
Wed Sep 22 17:37:20 CEST 2004


Mark G Orr <morrct at andrew.cmu.edu> writes:

> Hello, I have a simple problem (checked the archives and the
> appropriate help pages, to no avail).  I want to creat a vector that
> is length(2000). The vector is to consist of two strings( "std" and
> "dev") with 1760 "std"s and 240 "dev"s.  Furthermore, for each element
> of the vector, i want the selection of one of the strings to be
> approx. random.  The end result will be a vector with the following
> proportions:  .12 "dev" and .88 "std". My solution, below, almost
> works, but i don't get the exact desired proportions:
> 
> 
> sample.from.vector <- c(rep("std",1760),rep("dev",240))
> 
> make.vector <- rep(99,2000)
> 
> for (i in 1:2000){
>    make.vector[i] <- sample(sample.from.vector,1,replace=F)
> }
> 
> 
> As I understand the above code (which is not very well, obviously),
> each iteration assigns one element from the sample.from.vector  to the
> current make.vector element;  the element choosen from
> sample.from.vector is tagged so that i is not selected again.
> However, after the loop, make.vector contains, for example, 1758 stds
> and 242 devs.  Each iteration results in a different proportion of
> stds and devs (although close to the desired, not right on).
> 
> Any help would be greatly apprecitated.

It's staring you right in the face:

make.vector <- sample(sample.from.vector)

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907




More information about the R-help mailing list