2012-03-16 5 views
3

개체의 모든 값 (인접한 경우)이 인접한 정수 값인지 테스트하려고합니다. 예 :모든 값이 인접한 정수인지 확인 R

x <- c(1,2,3) 
is.adjacent(x) 
TRUE 

y <- c(1,2,4) 
is.adjacent(y) 
FALSE 

z <- c(4,2,1,3) 
is.adjacent(z) 
TRUE 

좋은 접근 방법에 대한 의견이 있으십니까?

답변

7

다음은 해결책입니다. 반복 정수 중 하나가 포함 된 벡터에 대해 TRUE을 반환하도록 구성했습니다. 심지어 일부 반복됩니다 (예 : c(1,3,2,1,1,1)). 이 경우 FALSE을 반환하려면 unique()이라는 부품을 제거하십시오.

is.adjacent <- function(X) { 
    all(diff(sort(unique(X))) == 1) 
} 

# Try it out 
x <- c(1,2,3) 
y <- c(1,2,4) 
z <- c(4,2,1,3) 

is.adjacent(x) 
is.adjacent(y) 
is.adjacent(z) 
+1

엄밀히 말하면, 당신은 또한 함수가 X'는 정수 벡터이다'여부를 테스트 할 것 (그래서 C (3.5, 4.5 '같은 것을, 2.5)'TRUE ''로 평가하지 않습니다) 하지만 그것은 솔루션에 추가하기에는 너무 성급한 것처럼 보입니다. –

+0

감사합니다. 실제로 요소가 정수인지 먼저 테스트 한 (별도의) 함수가 있습니다. – mike

관련 문제