Find or assign the implied position for graphing the levels of a factor. A new class "positioned", which inherits from "ordered" and "factor", is defined.
The default values for plotting a factor x
are the integers
1:length(levels(x))
. These functions provide a way of
specifying alternate plotting locations for the levels.
position(x) position(x) <- value ## S3 method for class 'positioned' is.numeric(x, ...) ## S3 method for class 'positioned' as.numeric(x, ...) ## S3 method for class 'positioned' x[..., drop=FALSE] ## S3 method for class 'positioned' is.na(x) as.positioned(x) as.position(x) is.positioned(x) positioned(x, ..., value) ## S3 method for class 'positioned' print(x, ...) ## S3 method for class 'positioned' unique(x, incomparables = FALSE, ...) unpositioned(x, ...)
position(x) <- value
first forces its argument to be an ordered
factor and then assigns the value
to the "position"
attribute of the ordered factor.
The result is assigned class "positioned"
and returned.
position(x)
returns the position values associated with
levels(x)
. If x
is a positioned factor, then
the "position"
attribute is returned.
If x
is a factor, then the integers
1:length(levels(x))
are returned. For anything else,
as.numeric(x)
is returned.
as.position(x)
returns a numeric vector the length of the
original vector. If x
inherits from "factor"
,
then the values in the vector are the values in
position(x)
subscripted by the levels of the factor.
If x
is numeric, then x
itself is returned.
unpositioned(x)
removes the "position"
attribute and
removes the "positioned"
value from the the class
of
the object.
Richard M. Heiberger <rmh@temple.edu>
## ordered with character levels defaults to ## integer position of specified levels tmp <- ordered(c("mm","cm","m","m","mm","cm"), levels=c("mm","cm","m")) ## size order tmp as.numeric(tmp) levels(tmp) position(tmp) as.position(tmp) as.positioned(tmp) positioned(tmp) unpositioned(tmp) unique(tmp) ## position is assigned to ordered in specified order tmp <- ordered(c("cm","mm","m","m","mm","cm"), levels=c("mm","cm","m")) ## size order levels(tmp) position(tmp) <- c(-3, -2, 0) ## log10 assigned in size order tmp as.numeric(tmp) levels(tmp) position(tmp) as.position(tmp) as.positioned(tmp) positioned(tmp) unpositioned(tmp) unique(tmp) ## numeric stays numeric tmp <- c(0.010, 0.001, 1.000, 1.000, 0.001, 0.010) tmp as.numeric(tmp) levels(tmp) position(tmp) as.position(tmp) as.positioned(tmp) positioned(tmp) unpositioned(tmp) unique(tmp) ## factor with numeric levels, position is integer position in size order tmp <- factor(c(0.010, 0.001, 1.000, 1.000, 0.001, 0.010)) tmp as.numeric(tmp) levels(tmp) position(tmp) as.position(tmp) as.positioned(tmp) positioned(tmp) unpositioned(tmp) unique(tmp) ## ordered with numeric levels, position is numeric value in size order tmp <- ordered(c(0.010, 0.001, 1.000, 1.000, 0.001, 0.010)) tmp as.numeric(tmp) levels(tmp) position(tmp) as.position(tmp) as.positioned(tmp) positioned(tmp) unpositioned(tmp) unique(tmp) ## factor with numeric levels ## position is assigned in size order tmp <- factor(c(0.010, 0.001, 1.000, 1.000, 0.001, 0.010)) levels(tmp) position(tmp) <- c(-3, -2, 0) ## log10 assigned in size order tmp as.numeric(tmp) levels(tmp) position(tmp) as.position(tmp) as.positioned(tmp) positioned(tmp) unpositioned(tmp) unique(tmp) ## boxplots coded by week tmp <- data.frame(Y=rnorm(40, rep(c(20,25,15,22), 10), 5), week=ordered(rep(1:4, 10))) position(tmp$week) <- c(1, 2, 4, 8) bwplot(Y ~ week, horizontal=FALSE, scales=list(x=list(limits=c(0,9), at=position(tmp$week), labels=position(tmp$week))), data=tmp, panel=panel.bwplot.intermediate.hh) #### You probably don't want to use the next two examples. #### You need to be aware of their behavior. ## ## factor with character levels defaults to ## integer position of sorted levels. ## you probably DON'T want to do this! tmp <- factor(c("cm","mm","m","m","mm","cm")) ## default alphabetic order tmp as.numeric(tmp) levels(tmp) ## you probably DON'T want to do this! position(tmp) ## you probably DON'T want to do this! as.numeric(tmp) ## ## position is assigned to factor in default alphabetic order. ## you probably DON'T want to do this! tmp <- factor(c("cm","mm","m","m","mm","cm")) levels(tmp) position(tmp) <- c(-3, -2, 0) ## assigned in default alphabetic order tmp as.numeric(tmp) levels(tmp) ## you probably DON'T want to do this! position(tmp) ## you probably DON'T want to do this! as.numeric(tmp)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.