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

3
我正在尝试测试一个对象中(如果有顺序)所有值是否为相邻的整数值。例如:
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
这里有一个解决方案。我构建它使得对于包含一组连续整数的向量,即使其中一些被重复(如c(1,3,2,1,1,1)),它也会返回TRUE。如果你希望在这种情况下返回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),但这似乎过于迂腐,没有必要添加到解决方案中。 - Josh O'Brien
谢谢,实际上我已经有一个(单独的)函数,首先测试元素是否为整数。 - mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接