我想这与水平和因素有关,但我不确定到底发生了什么:
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)帮助我理解什么是正确的,什么时候会是真的,以及b)如何测试数字向量是否被排序/排序?
答案 0 :(得分:7)
在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
将区分这两类因素。