Nothing
#written June 6, 2012
#modified March 14, 2023
#note that lower.tri and upper.tri return the matrix in a different order
"lowerUpper" <-
function(lower,upper=NULL,diff=FALSE) {
if(is.null(upper)) {upper <- lower #return two from one
upper[lower.tri(upper)] <- t(upper)[lower.tri(t(upper))]
lower <- t(lower)
lower[lower.tri(lower)] <- t(lower)[lower.tri(lower)]
result <- list(lower=lower,upper=upper)
} else {
if(nrow(lower) !=ncol(lower)) {stop("lower matrix must be square")}
if(nrow(upper) !=ncol(upper)) {stop("upper matrix must be square")}
if(nrow(lower) !=ncol(upper)) {stop("lower and upper matrices must have the same dimensions")}
result <- lower
colnames(result) <- colnames(upper)
rownames(result) <-rownames(lower)
if(diff) upper <- lower - upper
result [lower.tri(result)] <- upper[lower.tri(upper)]
result <- t(result)
diag(result) <- NA}
return(result)}
#revised Oct 6, 2013 to pick up row names and column names from the two matrices
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.