1 |
x |
|
MARGIN |
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 | ##---- 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 (x, MARGIN = NULL)
{
debug <- F
x <- atotal(x)
if (is.null(MARGIN))
return(x/x[length(x)])
d <- dim(x)
if (debug) {
cat("dim(x)\n")
print(d)
}
dn <- dimnames(x)
if (debug) {
cat("dimnames(x)\n")
print(dn)
}
n <- length(d)
m <- length(MARGIN)
perm <- c(MARGIN, setdiff(1:n, MARGIN))
perm.inverse <- order(perm)
if (debug)
print(perm)
if (debug)
print(perm.inverse)
x <- aperm(x, perm)
d <- dim(x)
zl <- list(x)
for (ii in 1:length(d)) zl[[ii + 1]] <- seq(if (ii <= m)
1
else d[ii], d[ii])
tots <- do.call("[", zl)
ret <- array(c(x)/c(tots), dim = d)
ret <- aperm(ret, perm.inverse)
if (debug)
print(dim(ret))
if (debug)
print(dn)
dimnames(ret) <- dn
ret
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.