2014-01-12 3 views
3

나는 이것이 사소한 것이라고 확신합니다. 그럼에도 불구하고 어떤 도움을 주시면 감사하겠습니다.매트릭스에 적어도 하나의 제로 요소가 있는지 확인

문제는 간단합니다. 행렬이 주어지면 문제의 행렬에 적어도 하나의 요소가 0 인 경우 TRUE을 얻고 싶습니다.

B <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3, byrow = TRUE) 

> B 
    [,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 4 5 6 

FALSE을 반환하는 동안 그래서,

A <- matrix(c(1, 2, 3, 4, 5, 0), nrow = 2, ncol = 3, byrow = TRUE) 

> A 
    [,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 4 5 0 

을 확인하는 것은, TRUE 반환합니다.

if (A == 0) { cat("\nZero detected")} 

같은

뭔가 경고를 제공합니다. 이 작업을 수행하는 간단한 방법이 있습니까?

답변

7

경고가 생성됩니다.

any(A==0) 
## [1] TRUE 
any(B==0) 
## [1] FALSE 

또한 논리적 벡터의 모든 값이 TRUE입니다 여부를 결정하는 함수 all있다 : 논리 값 어떤TRUE을 경우 any 말할 수있는 기능입니다.

+0

감사합니다. Matthew, 좋은 답변 두 가지가 있지만 페르난도보다 앞서 있습니다. 빠른 답변을 위해 두 분 모두에게 감사드립니다! – HypersonicNinja

4

0 %in% A 

그것은 TRUE 또는 FALSE 반환해야보십시오. 너무 NA 작동 : 단일 값을 기대 if, 논리적의 벡터를 제시하고 있기 때문에

x = matrix(1:24, ncol = 4) 
x[3, 3] = NA 

NA %in% x 
#TRUE 
관련 문제