Always fun to follow up your own posts.... The replicate() line should be v <- replicate(1000, sample(s)) # generates an 800 x 1000 matrix
Sorry for the bandwidth waste... Dennis On Mon, Oct 18, 2010 at 6:55 PM, Dennis Murphy <djmu...@gmail.com> wrote: > 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.