Hi, | I've been trying to implement an MCL model in R and have been mostly | succesful. However I'm still stuck on a few points and I'm hoping | someone can point out how to do fix them. | | To estimate an MCL model, the data must be restructured into a | person-choice file. | | * Each case must be duplicated "ncat" times ("ncat" is the number of | categories of the dependent variable) | * Each case must be identified by a strata variable (id) | * Each duplicate must be identified by a variable indexing the | choices (newy) | * A dichotomous variable must indicate which duplicate corresponds | with the respondent's choice (didep) | | I've done this as follows: | | mclgen <- function (datamat, catvar) { | ncat <- nlevels(catvar) | id <- 1:length(catvar) | datamat <- cbind(id,datamat) | perschoice <-NULL | for (i in 1:ncat) { | perschoice<-rbind(perschoice,datamat) | } | perschoice <- perschoice[sort.list(perschoice$id),] | perschoice$newy <- gl(ncat, 1, length=nrow(perschoice)) | dep <- parse(text=paste("perschoice$", substitute(catvar), sep="")) | perschoice$depvar <- as.numeric(eval(dep) == perschoice$newy) | perschoice | } | | This works but I wonder if it's the most efficient method. I tried | using "rep" rather than "rbind" in a loop but that replicated the | dataset horizontally, not vertically. Is this the best solution?
Well, in general it is not efficient to add something to a matrix in a cycle. You should in either make the datamat in required size and fill the required parts of it, or in this case you may consider e.g. > datamat <- matrix(1:4, 2, 2) > matrix(t(datamat), 4, 2, byrow=T) [,1] [,2] [1,] 1 3 [2,] 2 4 [3,] 1 3 [4,] 2 4 | I also finally figure out how to include the argument "catvar" in a | transformation involving another dataset but this solution seems very | complicated (eval+parse+substitute). Is there a simpler solution? Unfortunately, I was not able to understand quite what are you doing here. Where is the dataset logan? I did not find it on http://www.xs4all.nl/~jhckx. If I could get a simple example running, I can try further. best wishes, Ott ______________________________________________ [EMAIL PROTECTED] mailing list http://www.stat.math.ethz.ch/mailman/listinfo/r-help