-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
project.org] On Behalf Of Rui Barradas
Sent: Sunday, November 11, 2012 4:36 PM
To: dms at riseup.net
Cc: r-help at 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, dms at riseup.net escreveu:
Hi all,
I'm looking for some help to bias the sample function. Basically, I'd
to generate a data frame where the first column is completely random,
second, however, is conditional do the first, the third is
the first and the second and so on. By conditional I mean that I
have repeated values in the line. I know it could be easily
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))
)