识别是否只有对角线非零

时间:2012-06-15 20:17:29

标签: r

我们说我有一个矩阵,所有0都是对角线除外。

m <- matrix(ncol=3,nrow=3)
m[,1] <- c(1,0,0)
m[,2] <- c(0,1,0)
m[,3] <- c(0,0,1)

我可以使用什么逻辑检查来测试矩阵的上三角和下三角是否为零?

3 个答案:

答案 0 :(得分:9)

all(m[lower.tri(m)] == 0, m[upper.tri(m)] == 0)

答案 1 :(得分:2)

这是@GregaKešpret卓越解决方案的略微替代方案:

m <- diag(11:13)
m

all(m[!diag(nrow(m))] == 0) # TRUE

m[1,2] = 0.01
all(m[!diag(nrow(m))] == 0) # FALSE

diag函数有两种主要模式:在diag(11:13)中给它一个向量,然后将它放在对角线上。或者给它一个diag(3)中的数字,它会创建一个这个大小的单位矩阵。然后我提取所有非对角元素并将它们与0进行比较。

答案 2 :(得分:1)

只需检查:

sum(m) == sum(diag(m))