File: reorder.R

package info (click to toggle)
gplots 3.1.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,316 kB
  • sloc: makefile: 2
file content (40 lines) | stat: -rw-r--r-- 1,203 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
reorder.factor <- function(x,
                           X,
                           FUN,
                           ...,
                           order=is.ordered(x),
                           new.order,
                           sort=mixedsort)
{
    constructor <- if (order) ordered else factor

    if(!missing(X) || !missing(FUN))
        {
            if(missing(FUN)) FUN <- 'mean'

            ## I would prefer to call stats::reorder.default directly,
            ## but it exported from stats, so the relevant code is
            ## replicated here:
            ## -->
            scores <- tapply(X = X, INDEX = x, FUN = FUN, ...)
            levels <- names(base::sort(scores, na.last = TRUE))
            if(order)
                ans <- ordered(x, levels=levels)
            else
                ans <- factor(x, levels=levels)
            attr(ans, "scores") <- scores
            ## <--
            return(ans)
        }
    else if (!missing(new.order))
      {
        if (is.numeric(new.order))
          new.order <- levels(x)[new.order]
        else
          new.order <- new.order
      }
    else
      new.order <- sort(levels(x))

    constructor(x, levels=new.order)
}