diag
Diagonal Matrices

### Description

Creates a diagonal matrix or extracts the diagonal elements of a matrix.

### Usage

    diag(x = 1, nrow, ncol, names = TRUE)
    diag(x) <- value

### Arguments

x | a matrix, vector, or one-dimensional array. Missing values (NAs) are allowed. If you do not provide a value for x, you must specify a value for nrow.
nrow | an integer that specifies the number of rows for the output matrix.
ncol | an integer that specifies the number of columns for the output matrix. if you do not specify a value for ncol, the value you specified for nrow is used. In this case, 1s are placed on the diagonal of the result.
names | a logical value used only when x is a matrix. If TRUE (the default) and the row and column names of input matrix are identical (as with the return value of the var function), then attach those names to the output vector. If FALSE never attach names to the output vector.
value | a vector or one-dimensional array whose length is the minimum of the number of rows and the number of columns. Missing values (NAs) are allowed.

### Details

By default, the matrix is square with zeros off the diagonal, but it can be made rectangular by specifying nrow and ncol.
The diag(x) <- value form allows replacement of the values on the diagonal of a matrix.
Value

- If x is a matrix, returns the vector of diagonal elements of x.
- If x is a vector or one-dimensional array of length greater than one, returns a matrix with x on its diagonal and zeroes elsewhere.
- If x is a vector or one-dimensional array of length one, and you do not specify values for either nrow or ncol, returns an x by x identity matrix.

See Also
col, length, matrix, ncol.
Examples

    amat <- matrix(c(12,15,6,10,2,9), nrow = 2)
    diag(amat)         # extract diagonal elements ((1,1),(2,2),etc.)
    diag(diag(amat))   # create a square matrix with
                       # diagonal of amat
    diag(5)            # 5 by 5 identity matrix
    diag(nrow = 5)     # same thing
    diag(as.matrix(5)) # 5
    x <- 1:3
    diag(x, nrow = 2*length(x)) # replicate x on the diagonal of a matrix
    diag(x, nrow = length(x))   # put x on the diagonal of a matrix
    bmat <- matrix(1:4,2)
    diag(amat) <- diag(bmat)    # put diagonal of bmat into diagonal of amat

Package base version 6.1.5-18
Package Index