M2m.loc:

Usage Arguments Examples

Usage

1
M2m.loc(m, grpc, col.dat, locfun = tmean, ...)

Arguments

m
grpc
col.dat
locfun
...

Examples

 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
##---- Should be DIRECTLY executable !! ----
##-- ==>  Define data, use random,
##--	or do  help(data=index)  for the standard data sets.

## The function is currently defined as
function (m, grpc, col.dat, locfun = tmean, ...) 
{
    flagit = F
    if (is.null(dim(m))) 
        stop("Data must be stored in a matrix or data frame")
    if (is.na(grpc[1])) 
        stop("The argument grpc is not specified")
    if (is.na(col.dat[1])) 
        stop("The argument col.dat is not specified")
    if (length(grpc) > 4) 
        stop("grpc must have length <= 4")
    m = as.data.frame(m)
    if (length(grpc) == 1) {
        p1 = ncol(m) + 1
        dum = rep(1, nrow(m))
        flagit = T
        m = cbind(m, dum)
        grpc = c(NULL, gprc, p1)
        cat1 <- sort(unique(m[, grpc[1]]))
        M = NULL
        for (ig1 in 1:length(cat1)) {
            flag1 = (m[, grpc[1]] == cat1[ig1])
            flag = (flag1 == 1)
            msub = as.data.frame(m[flag, ])
            loc = locfun(m[flag, col.dat], ...)
            M = rbind(M, as.data.frame(cbind(msub[1, grpc], loc)))
        }
        M = M[, c(1, 3)]
    }
    if (length(grpc) == 2) {
        cat1 <- sort(unique(m[, grpc[1]]))
        cat2 <- sort(unique(m[, grpc[2]]))
        M = NULL
        for (ig1 in 1:length(cat1)) {
            for (ig2 in 1:length(cat2)) {
                flag1 = (m[, grpc[1]] == cat1[ig1])
                flag2 = (m[, grpc[2]] == cat2[ig2])
                flag = (flag1 * flag2 == 1)
                msub = m[flag, ]
                loc = locfun(m[flag, col.dat], ...)
                M = rbind(M, as.data.frame(cbind(msub[1, grpc], 
                  loc)))
            }
        }
    }
    if (length(grpc) == 3) {
        cat1 <- sort(unique(m[, grpc[1]]))
        cat2 <- sort(unique(m[, grpc[2]]))
        cat3 <- sort(unique(m[, grpc[3]]))
        M = NULL
        for (ig1 in 1:length(cat1)) {
            for (ig2 in 1:length(cat2)) {
                for (ig3 in 1:length(cat3)) {
                  flag1 = (m[, grpc[1]] == cat1[ig1])
                  flag2 = (m[, grpc[2]] == cat2[ig2])
                  flag3 = (m[, grpc[3]] == cat3[ig3])
                  flag = (flag1 * flag2 * flag3 == 1)
                  msub = m[flag, ]
                  loc = locfun(m[flag, col.dat], ...)
                  M = rbind(M, as.data.frame(cbind(msub[1, grpc], 
                    loc)))
                }
            }
        }
    }
    if (length(grpc) == 4) {
        cat1 <- sort(unique(m[, grpc[1]]))
        cat2 <- sort(unique(m[, grpc[2]]))
        cat3 <- sort(unique(m[, grpc[3]]))
        cat4 <- sort(unique(m[, grpc[4]]))
        M = NULL
        for (ig1 in 1:length(cat1)) {
            for (ig2 in 1:length(cat2)) {
                for (ig3 in 1:length(cat3)) {
                  for (ig4 in 1:length(cat4)) {
                    flag1 = (m[, grpc[1]] == cat1[ig1])
                    flag2 = (m[, grpc[2]] == cat2[ig2])
                    flag3 = (m[, grpc[3]] == cat3[ig3])
                    flag4 = (m[, grpc[4]] == cat4[ig4])
                    flag = (flag1 * flag2 * flag3 * flag4 == 
                      1)
                    msub = m[flag, ]
                    loc = locfun(m[flag, col.dat], ...)
                    M = rbind(M, as.data.frame(cbind(msub[1, 
                      grpc], loc)))
                  }
                }
            }
        }
    }
    if (flagit) 
        M = M[, c(1, 3)]
    M
  }

musto101/wilcox_R documentation built on May 23, 2019, 10:52 a.m.