diag
位於 base
包(package)。 說明
提取或替換矩陣的對角線,或構造對角矩陣。
用法
diag(x = 1, nrow, ncol, names = TRUE)
diag(x) <- value
參數
x |
矩陣、向量或一維 |
nrow , ncol |
當 |
names |
(當 |
value |
單個值或長度等於當前對角線長度的向量。應該是可以強製為 |
細節
diag
有四種不同的用法:
-
x
是一個矩陣,當它提取對角線時。 -
缺少
x
且指定了nrow
,它返回一個單位矩陣。 -
x
是一個標量(長度為一個向量),也是唯一的參數,它返回一個大小由標量給定的方單位矩陣。 -
x
是 ‘numeric’ (complex
、numeric
、integer
、logical
或raw
)向量,長度至少為 2 或者還有其他參數。這將返回一個具有給定對角線和零非對角線條目的矩陣。
在第一種情況下指定nrow
或ncol
是錯誤的。
值
如果 x
是矩陣,則 diag(x)
返回 x
的對角線。如果 names
為 true 並且矩陣 x
具有匹配的列名和行名,則生成的向量將具有 names
。
替換形式將矩陣 x
的對角線設置為給定值。
在所有其他情況下,該值是具有 nrow
行和 ncol
列的對角矩陣(如果未給出 ncol
,則矩陣為方陣)。這裏 nrow
如果指定則從參數中獲取,否則從 x
推斷:如果它是長度為 2 或更多的向量(或一維數組),則其長度為行數,但如果它的長度為1 並且 nrow
和 ncol
均未指定, 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.
也可以看看
相關用法
- R dimnames 對象的暗名稱
- R diff 滯後差異
- R dim 物體的尺寸
- R difftime 時間間隔/差異
- R dump R 對象的文本表示
- R deparse 表達式解析
- R deparseOpts 表達式解析選項
- R dots ...、..1 等在函數中使用
- R debug 調試函數
- R do.call 執行函數調用
- R dcf 以 DCF 格式讀寫數據
- R data.class 對象類
- R dyn.load 對外函數接口
- R dput 將對象寫入文件或重新創建它
- R duplicated 確定重複元素
- R dontCheck 抑製檢查的身份函數
- R drop 刪除冗餘盤區信息
- R delayedAssign 延遲評估和承諾
- R det 計算矩陣的行列式
- R detach 從搜索路徑中分離對象
- R data.frame DataFrame
- R double 雙精度向量
- R data.matrix 將 DataFrame 轉換為數字矩陣
- R date 係統日期和時間
- R droplevels 刪除因子中未使用的級別
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Matrix Diagonals。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。