Определите, являются ли все значения смежными целыми числами в R - PullRequest
3 голосов
/ 16 марта 2012

Я пытаюсь проверить, все ли значения в объекте (если упорядочены) являются смежными целочисленными значениями.Например:

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

Есть мысли о хорошем подходе?

1 Ответ

7 голосов
/ 16 марта 2012

Вот решение.Я построил его так, чтобы он возвращал 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...