Skip to content

Instantly share code, notes, and snippets.

@nilforooshan
Last active March 30, 2019 10:00
Show Gist options
  • Save nilforooshan/5bcc32de298296b59ecbe9b6acae017f to your computer and use it in GitHub Desktop.
Save nilforooshan/5bcc32de298296b59ecbe9b6acae017f to your computer and use it in GitHub Desktop.
R: Print lower.tri-diag (with/without diags) of a matrix

R function for printing lower.tri-diag (with/without diags) of a matrix

The function:

lpLdiag <- function(x,diags=TRUE)
{
    x[upper.tri(x, diag=!diags)] <- NA
    print(x)
    for(i in 1:nrow(x)) print(c(na.omit(x[i,])))
}

Example:

(m2 <- matrix(1:20, 4, 5))

Output:

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
lpLdiag(m2)

Output:

    [,1] [,2] [,3] [,4] [,5]
[1,]    1   NA   NA   NA   NA
[2,]    2    6   NA   NA   NA
[3,]    3    7   11   NA   NA
[4,]    4    8   12   16   NA
[1]  1
[1]  2  6
[1]  3  7 11
[1]  4  8 12 16
lpLdiag(m2, diags=TRUE)

Output:

     [,1] [,2] [,3] [,4] [,5]
[1,]    1   NA   NA   NA   NA
[2,]    2    6   NA   NA   NA
[3,]    3    7   11   NA   NA
[4,]    4    8   12   16   NA
[1]  1
[1]  2  6
[1]  3  7 11
[1]  4  8 12 16
lpLdiag(m2, diags=FALSE)

Output:

     [,1] [,2] [,3] [,4] [,5]
[1,]   NA   NA   NA   NA   NA
[2,]    2   NA   NA   NA   NA
[3,]    3    7   NA   NA   NA
[4,]    4    8   12   NA   NA
integer(0)
[1]  2
[1]  3  7
[1]  4  8 12
(m2 <- matrix(1:20, 5, 4))

Output:

     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20
lpLdiag(m2)

Output:

     [,1] [,2] [,3] [,4]
[1,]    1   NA   NA   NA
[2,]    2    7   NA   NA
[3,]    3    8   13   NA
[4,]    4    9   14   19
[5,]    5   10   15   20
[1]  1
[1]  2  7
[1]  3  8 13
[1]  4  9 14 19
[1]  5 10 15 20
lpLdiag(m2, diags=TRUE)

Output:

     [,1] [,2] [,3] [,4]
[1,]    1   NA   NA   NA
[2,]    2    7   NA   NA
[3,]    3    8   13   NA
[4,]    4    9   14   19
[5,]    5   10   15   20
[1]  1
[1]  2  7
[1]  3  8 13
[1]  4  9 14 19
[1]  5 10 15 20
lpLdiag(m2, diags=FALSE)

Output:

     [,1] [,2] [,3] [,4]
[1,]   NA   NA   NA   NA
[2,]    2   NA   NA   NA
[3,]    3    8   NA   NA
[4,]    4    9   14   NA
[5,]    5   10   15   20
integer(0)
[1]  2
[1]  3  8
[1]  4  9 14
[1]  5 10 15 20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment