with the following simple data frame dd = structure(list(z = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L ), .Label = c("a", "b"), class = "factor"), x = c(0.3, 0.2, 0.1, 0, 0, 0, 0.2, 0.3)), .Names = c("z", "x"), row.names = c(NA, -8L), class = "data.frame")
I would like know if it's possible to use model.matrix() to construct the following design matrix in some sensible way: za zb 1 1 0 2 1 0 3 1 0 4 0 0 5 0 0 6 0 0 7 0 1 8 0 1 In other words, I want column 1 to be (z=="a" & x>0) and column 2 to be (z=="b" & x>0). I can construct this matrix using sweep(model.matrix(~z-1,dd),1,dd$x>0,"*") and then stick it into lm.fit -- but is there a more elegant way to do this in general? I haven't found a formula combining (z-1) and I(x>0) that works, although I can imagine there is one. thanks Ben Bolker -- Ben Bolker Associate professor, Biology Dep't, Univ. of Florida bol...@ufl.edu / www.zoology.ufl.edu/bolker GPG key: www.zoology.ufl.edu/bolker/benbolker-publickey.asc
signature.asc
Description: OpenPGP digital signature
______________________________________________ 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.