2

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

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

两次,该函数都返回FALSE,即没有一个向量是有序的。起初,我希望该函数能够测试给定向量是否在“顺序”的意义上是有序的,即“排序”。回到 的定义后is.sorted,我假设它is.ordered询问给定向量是否按其级别的顺序排序。向量测试(据我了解)不应该有任何级别,对吧?所以,“假”或多或少是正确的答案,我猜(但 NaN 会更好?)。任何人都可以a)帮助我理解 is.ordered 的真正作用以及何时会是真的,b)如何测试数字向量是否已排序/排序?

4

1 回答 1

8

在 R 中存在两种类型的因素:无序有序。在您的情况下,您有一个简单的数字向量,而不是一个因素。因此,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将这两类因素区分开来。

于 2014-01-26T17:31:32.710 回答