File: reversed.R

package info (click to toggle)
r-cran-memisc 0.99.31.8.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,136 kB
  • sloc: ansic: 5,117; makefile: 2
file content (42 lines) | stat: -rw-r--r-- 1,061 bytes parent folder | download
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
41
42
reversed.item <- function(x){
    y <- x
    if(length(labels(x))){
        l <- labels(x)
        vals <- vals.orig <- l@values
        labs <- l@.Data
        vf <- value.filter(x)
        from <- vals[is.valid2(vals,vf)]
        to <- rev(from)
        for(i in seq_along(from)){
            y[x==from[i]] <- to[i]
            vals[vals.orig==from[i]] <- to[i]
        }
        to.l <- structure(vals,names=labs)
        ii <- order(to.l)
        to.l <- to.l[ii]
        labels(y) <- to.l
    } else {
        v <- valid.values(x)
        if(length(v)){
            from <- v@filter
            to <- rev(from)
            for(i in seq_along(from)){
                y[x==from[i]] <- to[i]
            }
        } else stop("No way to determine how reverse the codes.")
    }
    return(y)
}




reversed.factor <- function(x){
    y <- factor(x,levels=rev(levels(x)))
    return(y)
}

setGeneric("reversed",
           function(x)standardGeneric("reversed"))
setMethod("reversed","item.vector",reversed.item)
setMethod("reversed","factor",reversed.factor)