[R] biasing conditional sample

Rui Barradas ruipbarradas at sapo.pt
Sun Nov 11 23:35:45 CET 2012


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, dms at 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 at 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.




More information about the R-help mailing list