fold: Folding square matrices around the diagonal

Description Usage Arguments Details Value See Also Examples

View source: R/fold.R

Description

Fold a square matrix by collapsing lower triangle on upper triangle, or vice versa, through addition.

Usage

1
fold(x, direction = c("upper", "lower"))

Arguments

x

square numeric matrix

direction

character, one of "upper" or "lower", direction of folding

Details

By default, for direction=="upper", the function takes the values in the lower triangle of x and adds them symetrically to the values in the upper triangle. The values on the diagonal remain unchanged. The lower triangle is filled with 0s. If direction=="lower" the upper triangle is collapsed on to the lower triangle.

Value

Square matrix of the same dim as x with the lower (upper) triangle folded onto the upper (lower) triangle.

See Also

upper.tri, lower.tri

Examples

1
2
3
4
5
6
7
8
(m <- matrix(1:4, 2, 2))
(f1 <- fold(m))
(f2 <- fold(m, "lower"))

stopifnot( all.equal(diag(m), diag(f1)) )
stopifnot( all.equal(diag(m), diag(f2)) )
stopifnot( all.equal(f1[1,2], m[2,1] + m[1,2]) )
stopifnot( all.equal(f2[2,1], m[2,1] + m[1,2]) )

mbojan/isnar documentation built on Feb. 18, 2021, 4:38 a.m.