确定R中是否所有值都是相邻的整数

mik*_*ike 3 integer 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
Run Code Online (Sandbox Code Playgroud)

对好方法的任何想法?

Jos*_*ien 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)
Run Code Online (Sandbox Code Playgroud)