Can't you just use sample() on each row without replacement to guarantee no matches among the five (or more) columns?
set.seed(51) Data <- sapply(1:100, function(x) sample(1:10, size=5)) Data <- data.frame(t(Data)) names(Data) <- letters[1:5] ---------------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77843-4352 > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- > project.org] On Behalf Of Rui Barradas > Sent: Sunday, November 11, 2012 4:36 PM > To: d...@riseup.net > Cc: r-help@r-project.org > Subject: Re: [R] biasing conditional sample > > Hello, > > The function that follows returns a matrix, not a data.frame but does > what you ask for. > > > fun <- function(x, y, n){ > f <- function(x, y){ > while(TRUE){ > rnd <- sample(x, 1) > if(!any(rnd %in% y)) break > } > rnd > } > for(i in seq_len(n)){ > tmp <- apply(y, 1, function(.y) f(x, .y)) > y <- cbind(y, tmp) > } > y > } > > > a <- cbind(sample(1:10, 100, TRUE)) # must have dims > fun(1:10, a, 4) # returns 5 columns, 'a' plus 4 > > > Hope this helps, > > Rui Barradas > Em 11-11-2012 19:06, d...@riseup.net escreveu: > > Hi all, > > > > I'm looking for some help to bias the sample function. Basically, I'd > like > > to generate a data frame where the first column is completely random, > the > > second, however, is conditional do the first, the third is > conditional to > > the first and the second and so on. By conditional I mean that I > shouldn't > > have repeated values in the line. I know it could be easily > implemented > > using permutation, but it is not the case here. I need at least five > > columns. Any idea to achieve what do I need? > > > > > > set.seed(51) > > data <- data.frame( > > id=as.factor(1:100), > > a=as.factor(sample(1:10, size=100, replace=TRUE)), > > b=as.factor(sample(1:10, size=100, replace=TRUE)), > > c=as.factor(sample(1:10, size=100, replace=TRUE)), > > d=as.factor(sample(1:10, size=100, replace=TRUE)), > > e=as.factor(sample(1:10, size=100, replace=TRUE)) > > ) > > > > ______________________________________________ > > 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. > > ______________________________________________ > 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. ______________________________________________ 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.