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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。