[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