我想这与水平和因素有关,但我不确定到底发生了什么:

test <- c(1,4,2,3,7,9,8)
testOrdered <- test[order(test)]
is.ordered(testOrdered)
is.ordered(rev(testOrdered))

两次,该函数均返回FALSE,即所有 vector 均未排序。首先,我期望该功能测试给定 vector 是否在“顺序”(即“已排序”)意义上是有序的。回到is.sorted的定义之后,我假设is.ordered询问给定 vector 是否按其级别顺序排序。 vector 测试(据我了解)应该没有任何水平,对吗?因此,我猜“假”或多或少是正确的答案(但NaN会更好吗?)。任何人都可以a)帮助我了解什么是有序的,什么时候是真的,以及b)如何测试数字 vector 是否已排序/有序?

最佳答案

在R中存在两种类型的因子:无序有序。在您的情况下,您有一个简单的数字 vector ,而不是一个因素。因此,函数is.ordered不适用于上面的状态。

无序因素通常是类别数据,它没有自然顺序。要在R中表示这一点,可以使用无序因子:

f <- factor(c(1,3,2,1,3))
f
[1] 1 3 2 1 3
Levels: 1 2 3

is.ordered(f)
[1] FALSE

如果因子具有自然排序(通常称为序数有序分类数据),则可以在R中使用有序因子进行定义。请注意<符号在一个有序因子的水平。
f <- factor(c(1,3,2,1,3), ordered=TRUE)
f
[1] 1 3 2 1 3
Levels: 1 < 2 < 3

is.ordered(f)
[1] TRUE

因此,is.ordered将区分这两种类型的因素。

关于r - 为什么有序向量不总是按照R中的 “is.ordered”排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21366751/

10-12 17:47