當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R diag 矩陣對角線


R語言 diag 位於 base 包(package)。

說明

提取或替換矩陣的對角線,或構造對角矩陣。

用法

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

參數

x

矩陣、向量或一維 array ,或缺失。

nrow , ncol

x 不是矩陣時結果的可選維度。

names

(當 x 是矩陣時)邏輯指示結果向量(x 的對角線)是否應從 dimnames(x) 繼承 names(如果可用)。

value

單個值或長度等於當前對角線長度的向量。應該是可以強製為 x 的模式。

細節

diag 有四種不同的用法:

  1. x是一個矩陣,當它提取對角線時。

  2. 缺少 x 且指定了 nrow,它返回一個單位矩陣。

  3. x 是一個標量(長度為一個向量),也是唯一的參數,它返回一個大小由標量給定的方單位矩陣。

  4. x 是 ‘numeric’ ( complexnumericintegerlogicalraw )向量,長度至少為 2 或者還有其他參數。這將返回一個具有給定對角線和零非對角線條目的矩陣。

在第一種情況下指定nrowncol 是錯誤的。

如果 x 是矩陣,則 diag(x) 返回 x 的對角線。如果 names 為 true 並且矩陣 x 具有匹配的列名和行名,則生成的向量將具有 names

替換形式將矩陣 x 的對角線設置為給定值。

在所有其他情況下,該值是具有 nrow 行和 ncol 列的對角矩陣(如果未給出 ncol,則矩陣為方陣)。這裏 nrow 如果指定則從參數中獲取,否則從 x 推斷:如果它是長度為 2 或更多的向量(或一維數組),則其長度為行數,但如果它的長度為1 並且 nrowncol 均未指定, nrow = as.integer(x)

當返回對角矩陣時,對角線元素都是 1,除了第四種情況,當 x 給出對角線元素時:它將根據需要回收或截斷,但小數回收和截斷會給出警告。

注意

如果 x 是長度為 1 的向量,則使用 diag(x) 可能會產生意想不到的效果。使用 diag(x, nrow = length(x)) 以獲得一致的行為。

例子

dim(diag(3))
diag(10, 3, 4) # guess what?
all(diag(1:3) == {m <- matrix(0,3,3); diag(m) <- 1:3; m})

## other "numeric"-like diagonal matrices :
diag(c(1i,2i))    # complex
diag(TRUE, 3)     # logical
diag(as.raw(1:3)) # raw
(D2 <- diag(2:1, 4)); typeof(D2) # "integer"

require(stats)
## diag(<var-cov-matrix>) = variances
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
diag(M, names = FALSE) # w/o names

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

upper.trilower.trimatrix

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Matrix Diagonals。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。