On Tue, 2006-06-06 at 13:44 -0700, Dirk Vandekerckhove wrote: > Hi, > > Is this intended behaviour of cbind? > > > a<-c(0,1,2,3) > > a > [1] 0 1 2 3 > > a<-as.ordered(a) > > a > [1] 0 1 2 3 > Levels: 0 < 1 < 2 < 3 > > a<-a[a!=0] #remove the zero from a > > a > [1] 1 2 3 > Levels: 0 < 1 < 2 < 3 > > cbind(a) > a > [1,] 2 > [2,] 3 > [3,] 4 > > #cbind adds +1 to each element
Does this help? > a [1] 1 2 3 Levels: 0 < 1 < 2 < 3 > as.integer(a) [1] 2 3 4 Note in ?cbind, the Details section indicates: "In the default method, all the vectors/matrices must be atomic (see vector) or lists (e.g., not expressions)." For a factor, the atomic data type is the underlying integer vector. You eliminated '0' from the original ordered factor, which had an integer value of 1 (not 0!): > a [1] 0 1 2 3 Levels: 0 < 1 < 2 < 3 > as.integer(a) [1] 1 2 3 4 Unless you re-level the factor (as you do below) the other elements retain the original integer values. > > a<-as.ordered(as.vector(a)) > > a > [1] 1 2 3 > Levels: 1 < 2 < 3 > > cbind(a) > a > [1,] 1 > [2,] 2 > [3,] 3 > > #now it works... Yep, you re-leveled 'a', so the integer values now correspond to the levels: > a<-as.ordered(as.vector(a)) > a [1] 1 2 3 Levels: 1 < 2 < 3 > as.integer(a) [1] 1 2 3 HTH, Marc Schwartz ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html