2012-06-15 5 views
3

대각선을 제외한 모든 0을 갖는 행렬을 가지고 있다고 가정 해 봅시다.대각선 만이 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인지 테스트 할 때 사용할 수있는 논리 체크는 무엇입니까?

답변

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

? all. 완전! –

+5

또는'all (m [! diag (nrow (m))] == 0)' –

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과 비교합니다.