Also, library(gtools) x <- rdirichlet(1000, c(1,1,1) ) any(!rowSums(x)) #[1] FALSE A.K.
On Tuesday, January 28, 2014 2:20 PM, Richard Kwock <richardkw...@gmail.com> wrote: An alternative using runif. x <- round(runif(10000, 0, 1), 2) y <- round(runif(10000, 0, 1-x), 2) z <- round(1-x-y, 2) sum1 <- cbind(x, y, z) any(!(sum1[,1] + sum1[,2] + sum1[,3])) Richard On Tue, Jan 28, 2014 at 9:36 AM, S Ellison <s.elli...@lgcgroup.com> wrote: > > I'd like to create a matrix with three columns so that each element is > > between 0 and 1 and each row always adds to 1. So, if in the same row the > > You could start with expand.grid > > m <- expand.grid(x1=0:100, x2=0:100) #Avoids comparing floats > m <- m[rowSums(m)<=100,] #Throw away the oversized ones > m <- cbind(m, x3=100-rowSums(m)) #Get the final column > m <- m/100 #Scale to > [0,1] > > table(rowSums(m)) > > > S Ellison > > > > ******************************************************************* > This email and any attachments are confidential. Any u...{{dropped:13}} ______________________________________________ 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. ______________________________________________ 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.