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

Reply via email to