С ?diag
:
Usage:
diag(x = 1, nrow, ncol)
Details:
‘diag’ has four distinct usages:
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’ (‘complex’, ‘numeric’, ‘integer’,
‘logical’, or ‘raw’) 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 и 4 является наиболее однозначным, но использование 2 и 3 должно быть лучше объяснено.
Это помогает понять, если мы думаем о создании скалярная матрица с функцией diag
.x
- это скаляр на главной диагонали, а nrow
- это размерность матрицы.
diag(2, 3)
# [,1] [,2] [,3]
#[1,] 2 0 0
#[2,] 0 2 0
#[3,] 0 0 2
diag(-1, 2)
# [,1] [,2]
#[1,] -1 0
#[2,] 0 -1
Тождественная матрица является частным случаем скалярной матрицы с x = 1
.
diag(1, 3)
# [,1] [,2] [,3]
#[1,] 1 0 0
#[2,] 0 1 0
#[3,] 0 0 1
diag(1, 0)
#<0 x 0 matrix>
Эта спецификация с двумя аргументами является рекомендуемым способом генерации единичной матрицы .Но есть часто используемый ярлык с одним аргументом:
diag(3)
diag(0)
Таким образом, скалярное значение должно быть неотрицательным, поскольку оно интерпретируется как размерность матрицы.