Hi: One way to permute your sample 1000 times is to use the r*ply() function from the plyr package. Let s denote your original vector, randomly generated as follows:
s <- rbinom(800, 0.6) # simulates your Yes/No vector library(plyr) u <- raply(1000, sample(s)) # generates a 1000 x 800 matrix As Steve mentioned, you can also use replicate(): v <- replicate(1000, sample(r)) # generates an 800 x 1000 matrix # With mydata as your original data frame, the 1000 reshuffles can be attached with df <- data.frame(mydata, t(u)) # or df <- data.frame(mydata, v) names(df)[3:1002] <- paste('S', 1:1000, sep = '') write.csv(df, file = 'myExcelFile.csv', quote = FALSE, row.names = FALSE) Substitute your input vector for s in the raply() call. [Note that replicate() is about 10 times faster than raply() for this example.] The result should be an 800 x 1002 (two original variables + 1000 reshuffles) data frame. Writing to a csv file is a convenient intermediary between R and Excel, but there are several ways to write data from R to Excel. See http://rwiki.sciviews.org/doku.php?id=tips:data-io:ms_windows HTH, Dennis On Mon, Oct 18, 2010 at 4:37 AM, Peter Francis <peterfran...@me.com> wrote: > Dear List, > > I have a table i have read into R: > > Name Yes/No > > John 0 > Frank 1 > Ann 0 > James 1 > Alex 1 > > etc - 800 different times. > > What i want to do is shuffle yes/no and randomly re-assign them to the > name. > > I have used sample() and permute(), however there is no way to do this 1000 > times. Furthermore, i want to copy the data into a excel spreadsheet in the > same order as the data was input so i can build up a distribution of the > statistic for each name. When i use shuffle the date gets returned like this > - > > [1] 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 > [34] 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 > [67] 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 1 1 > [100] 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 > [133] 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 > [166] 0 0 0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 1 > [199] 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 > [232] 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 > [265] 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 > [298] 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 > [331] 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 > > etc > > Rather than like this > > John 0 > Frank 1 > Ann 0 > James 1 > Alex 1 > > Can anyone suggest a script that would achieve this? > > Thanks > > Peter > > ______________________________________________ > 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. > [[alternative HTML version deleted]] ______________________________________________ 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.