メモ

CategoryVector<-function (d = 3) 
{
    if(d == 1){
     return(matrix(1,ncol=1,nrow=1))
    }
    df <- d - 1
    diagval <- 1:d
    diagval <- sqrt((df + 1)/df) * sqrt((df - diagval + 1)/(df - 
        diagval + 2))
    others <- -diagval/(df - (0:(d - 1)))
    m <- matrix(rep(others, df + 1), nrow = df + 1, byrow = TRUE)
    diag(m) <- diagval
    m[upper.tri(m)] <- 0
    as.matrix(m[, 1:df])
}
Simplex.Vector <- function(n){
	if(n==1){
		return(matrix(1,ncol=1,nrow=1))
	}
	X <- CategoryVector(n)
	X <- cbind(rep(1/sqrt(n),n),sqrt((n-1)/n)*X)
	X
}
Make.X <- function(rs){
	ret <- matrix(1,ncol = 1, nrow =1)
	for(i in 1:length(rs)){
		ret <- Simplex.Vector(rs[i]) %x% ret
	}
	t(ret)
}
rs <- c(2,3)
X <- Make.X(rs)
X