| symnum {stats} | R Documentation |
Symbolically encode a given numeric or logical vector or array. Particularly useful for visualization of structured matrices, e.g., correlation, sparse, or logical ones.
symnum(x, cutpoints = c(0.3, 0.6, 0.8, 0.9, 0.95),
symbols = if(numeric.x) c(" ", ".", ",", "+", "*", "B")
else c(".", "|"),
legend = length(symbols) >= 3,
na = "?", eps = 1e-5, numeric.x = is.numeric(x),
corr = missing(cutpoints) && numeric.x,
show.max = if(corr) "1", show.min = NULL,
abbr.colnames = has.colnames,
lower.triangular = corr && is.numeric(x) && is.matrix(x),
diag.lower.tri = corr && !is.null(show.max))
x |
numeric or logical vector or array. |
cutpoints |
numeric vector whose values cutpoints[j]
== c[j] (after augmentation, see corr
below) are used for intervals. |
symbols |
character vector, one shorter than (the
augmented, see corr below) cutpoints.
symbols[j]== s[j] are used as ‘code’ for
the (half open) interval (c[j], c[j+1]].
When numeric.x is FALSE, i.e., by default when
argument x is logical, the default is
c(".","|") (graphical 0 / 1 s). |
legend |
logical indicating if a "legend" attribute is
desired. |
na |
character or logical. How NAs are coded. If
na == FALSE, NAs are coded invisibly, including
the "legend" attribute below, which otherwise mentions NA
coding. |
eps |
absolute precision to be used at left and right boundary. |
numeric.x |
logical indicating if x should be treated as numbers,
otherwise as logical. |
corr |
logical. If TRUE, x contains correlations.
The cutpoints are augmented by 0 and 1 and
abs(x) is coded. |
show.max |
if TRUE, or of mode character, the
maximal cutpoint is coded especially. |
show.min |
if TRUE, or of mode character, the
minimal cutpoint is coded especially. |
abbr.colnames |
logical, integer or NULL indicating how
column names should be abbreviated (if they are); if NULL
(or FALSE and x has no column names),
the column names will all be empty, i.e., ""; otherwise if
abbr.colnames is false, they are left unchanged. If
TRUE or integer, existing column names will be abbreviated to
abbreviate(*, minlength = abbr.colnames). |
lower.triangular |
logical. If TRUE and x is a
matrix, only the lower triangular part of the matrix is coded
as non-blank. |
diag.lower.tri |
logical. If lower.triangular and
this are TRUE, the diagonal part of the matrix is
shown. |
An atomic character object of class noquote and the same
dimensions as x.
If legend is TRUE (as by default when there are more
than two classes), the result has an attribute "legend"
containing a legend of the returned character codes, in the form
c[1] ‘s[1]’ c[2] ‘s[2]’ ... ‘s[n]’ c_[n+1]
where c[j] = cutpoints[j] and
s[j] = symbols[j].
The optional (mostly logical) arguments all try to use smart defaults. Specifying them explicitly may lead to considerably improved output in many cases.
Martin Maechler maechler@stat.math.ethz.ch
ii <- 0:8; names(ii) <- ii
symnum(ii, cut= 2*(0:4), sym = c(".", "-", "+", "$"))
symnum(ii, cut= 2*(0:4), sym = c(".", "-", "+", "$"), show.max=TRUE)
symnum(1:12 %% 3 == 0)# --> "|" = TRUE, "." = FALSE for logical
## Pascal's Triangle modulo 2 -- odd and even numbers:
N <- 38
pascal <- t(sapply(0:N, function(n) round(choose(n, 0:N - (N-n)%/%2))))
rownames(pascal) <- rep("", 1+N) # <-- to improve "graphic"
symnum(pascal %% 2, symbols = c(" ", "A"), numeric = FALSE)
##-- Symbolic correlation matrices:
symnum(cor(attitude), diag = FALSE)
symnum(cor(attitude), abbr.= NULL)
symnum(cor(attitude), abbr.= FALSE)
symnum(cor(attitude), abbr.= 2)
symnum(cor(rbind(1, rnorm(25), rnorm(25)^2)))
symnum(cor(matrix(rexp(30, 1), 5, 18))) # <<-- PATTERN ! --
symnum(cm1 <- cor(matrix(rnorm(90) , 5, 18))) # < White Noise SMALL n
symnum(cm1, diag=FALSE)
symnum(cm2 <- cor(matrix(rnorm(900), 50, 18))) # < White Noise "BIG" n
symnum(cm2, lower=FALSE)
## NA's:
Cm <- cor(matrix(rnorm(60), 10, 6)); Cm[c(3,6), 2] <- NA
symnum(Cm, show.max=NULL)
## Graphical P-values (aka "significance stars"):
pval <- rev(sort(c(outer(1:6, 10^-(1:3)))))
symp <- symnum(pval, corr=FALSE,
cutpoints = c(0, .001,.01,.05, .1, 1),
symbols = c("***","**","*","."," "))
noquote(cbind(P.val = format(pval), Signif= symp))