## Can someone suggest a simpler expression than either of these, with the goal ## of taking a long matrix into a wide one with exactly one of the factors converted to ## columns and all the rest retained as factors. I want something that generalizes beyond ## the three factors illustrated here.
## Rich meltTest <- data.frame(A=rep(c("B","C"), each=12), D=rep(c("E","F","G"), each=4, times=2), H=rep(c("I","J","K","L"), times=6), M=1:24) meltTest result.melt <- do.call("rbind", { tmp <- cast(D ~ H | A, value="M", data=meltTest) lapply(names(tmp), function(x) cbind(A=x, tmp[[x]])) ## explicit use of name "A" }) result.melt result.reshape <- reshape(meltTest, direction="wide", timevar="H", idvar=c("A","D")) names(result.reshape)[3:6] <- unique(as.character(meltTest$H)) ## explicit use of name "H" result.reshape [[alternative HTML version deleted]] ______________________________________________ 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.