I'm sorry, the indices of my X matrix are wrong. It should be: X = x11 0 0 x12 0 0 0 x11 0 0 x12 0 0 0 x11 0 0 x12 x21 0 0 x22 0 0 0 x21 0 0 x22 0 0 0 x21 0 0 x22 ... xn1 0 0 x52 0 0 0 xn1 0 0 x52 0 0 0 xn1 0 0 x52
or X = -0.63 0 0 -0.82 0 0 0 -0.630 0 0 -0.82 0 0 0 -0.630 0 0 -0.82 0.18 0 0 0.49 0 0 0 0.18 0 0 0.49 0 0 0 0.18 0 0 0.49 ... 0.33 0 0 -0.31 0 0 0 0.33 0 0 -0.31 0 0 0 0.33 0 0 -0.31 Sorry for the confusion. Tina On Thu, Dec 15, 2011 at 10:02 AM, Clemontina Alexander <ckale...@ncsu.edu> wrote: > Dear R list, > I have the following data: > > set.seed(1) > n <- 5 # number of subjects > tt <- 3 # number of repeated observation per subject > numco <- 2 # number of covariates > x <- matrix(round(rnorm(n*numco),2), ncol=numco) # the actual covariates > x >> x > [,1] [,2] > [1,] -0.63 -0.82 > [2,] 0.18 0.49 > [3,] -0.84 0.74 > [4,] 1.60 0.58 > [5,] 0.33 -0.31 > > I need to form a matrix X such that > X = x11 0 0 x21 0 0 > 0 x11 0 0 x21 0 > 0 0 x11 0 0 x21 > x12 0 0 x22 0 0 > 0 x12 0 0 x22 0 > 0 0 x12 0 0 x22 > ... > x15 0 0 x25 0 0 > 0 x15 0 0 x25 0 > 0 0 x15 0 0 x25 > where both tt and numco can change. (So if tt=5 and numco=4, then X > needs to have 20 columns and n*tt rows. Each diagonal matrix should be > 5x5 and there will be 4 of them for the 4 covariates.) I wrote this > funky for loop: > > idd <- length(diag(1,tt)) # length of intercept matrix > X <- matrix(numeric(n*numco*idd),ncol=tt*numco) > for(i in 1:numco){ > X[,((i-1)*tt+1):(i*tt)] <- matrix( > c(matrix(rep(diag(1,tt),n),ncol=tt, byrow=TRUE)) * > rep(rep(x[,i],each=tt),tt) > , ncol=tt) > } > X > > It works fine, but is there an easier way when n, tt, and numco get > larger and larger? > Thanks, > Tina > > > -- > Clemontina Alexander > Ph.D Student > Department of Statistics > NC State University > Email: ckale...@ncsu.com -- Clemontina Alexander Ph.D Student Department of Statistics NC State University Raleigh, NC 27695 Phone: (850) 322-6878 Email: ckale...@ncsu.com ______________________________________________ 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.