Hello, I apologize my prior email was sent in html. It is not very clear to me from the model.matrix documentation, why simply changing the order of terms in the formula may give a different design matrix. Please note I?m purposely not including main effects in the model formulae. set.seed(1) x1 <- rnorm(100) f1 <- factor(sample(letters[1:3], 100, replace = TRUE)) trt <- sample(c(-1,1), 100, replace = TRUE) df <- data.frame(x1=x1, f1=f1, trt=trt) head(model.matrix( ~ x1:trt + f1:trt, data = df)) (Intercept) x1:trt trt:f1b trt:f1c 1 1 -0.6264538 0 0 2 1 -0.1836433 0 0 3 1 0.8356286 -1 0 4 1 -1.5952808 0 0 5 1 -0.3295078 0 0 6 1 -0.8204684 1 0 head(model.matrix(~ f1:trt + x1:trt, data = df)) (Intercept) f1a:trt f1b:trt f1c:trt trt:x1 1 1 1 0 0 -0.6264538 2 1 -1 0 0 -0.1836433 3 1 0 -1 0 0.8356286 4 1 -1 0 0 -1.5952808 5 1 -1 0 0 -0.3295078 6 1 0 1 0 -0.8204684 Thanks, Axel.