| diag {base} | R Documentation |
Extract or replace the diagonal of a matrix, or construct a diagonal matrix.
diag(x, nrow, ncol) diag(x) <- value
If x is a matrix then diag(x) returns the diagonal of
x. The resulting vector will have names if the
matrix x has matching column and row names.
If x is a vector (or 1D array) of length two or more,
then diag(x) returns a diagonal matrix whose diagonal is x.
If x is a vector of length one then diag(x) returns an
identity matrix of order the nearest integer to x. The
dimension of the returned matrix can be specified by nrow and
ncol (the default is square).
The assignment form sets the diagonal of the matrix x to the
given value(s).
Using diag(x) can have unexpected effects if x is a
vector that could be of length one. Use diag(x, nrow =
length(x)) for consistent behaviour.
dim(diag(3))
diag(10,3,4) # guess what?
all(diag(1:3) == {m <- matrix(0,3,3); diag(m) <- 1:3; m})
diag(var(M <- cbind(X=1:5, Y=rnorm(5))))#-> vector with names "X" and "Y"
rownames(M) <- c(colnames(M),rep("",3));
M; diag(M) # named as well