[R] Three values that add to the same number by 0.01 steps

arun smartpink111 at yahoo.com
Tue Jan 28 22:20:38 CET 2014


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 <richardkwock at 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.Ellison at 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 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