対角線を除いてすべて 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)
行列の上三角と下三角がゼロかどうかをテストするには、どのような論理チェックを使用できますか?
対角線を除いてすべて 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)
行列の上三角と下三角がゼロかどうかをテストするには、どのような論理チェックを使用できますか?
all(m[lower.tri(m)] == 0, m[upper.tri(m)] == 0)
@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
関数には 2 つの主要なモードがありますdiag(11:13)
。または、数値を指定するdiag(3)
と、そのサイズの恒等行列が作成されます。次に、すべての非対角要素を抽出し、それらを 0 と比較します。