假设我有一个变量
x <- c(1,3,5,7,8)
现在x
处于递增顺序
如何在R?
中检查变量是否按升序排列答案 0 :(得分:12)
来自?is.unsorted
:
测试对象是否未排序(按升序排列)......
所以,在这种情况下,您可以:
is.sorted = Negate(is.unsorted)
is.sorted(x)
#[1] TRUE
#> is.sorted(1:5)
#[1] TRUE
#> is.sorted(5:1)
#[1] FALSE
#> is.sorted(sample(5))
#[1] FALSE
#> is.sorted(sort(runif(5)))
#[1] TRUE
#> is.sorted(c(1,2,2,3))
#[1] TRUE
#> is.sorted(c(1,2,2,3), strictly = T)
#[1] FALSE
这个函数很快,因为它会循环遍历向量,并且一旦元素不是“&gt; =”(或“&gt;”,如果是“strict = T”),就会从前一个元素中断循环。 / p>
答案 1 :(得分:9)
试试这个:
all(diff(x) > 0)
或
all(diff(x) >= 0)
我同意@flodel is.unsorted
(h / t @alexis_laz)可能更好。
答案 2 :(得分:7)
看看差异:
R> x <- c(1,3,5,7,8)
R> allIncreasing <- function(x) all(diff(x)>0)
R> allIncreasing(x)
[1] TRUE
R> y <- x; y[3] <-0
R> allIncreasing(y)
[1] FALSE
R>