[R]base::diag() : 対角行列を生成あるいは行列の対角成分を取得/設定する関数

説明

行列の対角成分を抽出あるいは設定する。あるいは対角行列を生成する。

この関数には「詳細」の項で説明されているように4つの全く異なる用法がある。

使用法

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

引数

x : マトリックス、ベクトルあるいは1次元配列、あるいは欠損値。

nrow, ncol : xがマトリックスでない場合に、返り値の次元を指定するオプショナル引数。

value : 単一の値あるいは現在の対角成分に等しい長さのベクトル。xのモードに型変換可能なモードであるべきである。

詳細

diag()には4つの異なる用法がある。

(1) x is a matrix, when it extracts the diagonal.

(2) x is missing and nrow is specified, it returns an identity matrix.

(3) x is a scalar (length-one vector) and the only argument, it returns a square identity matrix of size given by the scalar.

(4) x is a numeric vector, either of length at least 2 or there were further arguments. This returns a matrix with the given diagonal and zero off-diagonal entries.

使用法(1)でnrow,ncolを指定するのは誤りである。

返り値

(1) 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 rownames.

置換型(replacement form)の場合、マトリックスxの対角成分を指定した値でセットする。

上記以外の全ての場合、返り値はnrow行、ncol列の対角行列である(ncolが省略された場合、返り値は正方行列である)。nrowは引数で指定された場合にはそこから、それ以外の場合はxから推定される。xが長さ2以上のベクトル(あるいは1D配列)の場合、その長さは行数である。しかしxが長さ1でありnrow,ncolともに指定されない場合、nrow = as.integer(x)で計算される。

対角行列が返り値である場合、使用法(4)では対角成分は1である。 xが対角成分を与える場合、それは必要に応じてリサイクルされたり切り詰め(truncation)られる。しかし部分的なリサイクリングや切り詰めの際には警告が表示される。

コメント