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ベクトルテスト(私が理解している限り)にはレベルがあってはいけませんよね?したがって、「false」は多かれ少なかれ正しい答えだと思います (しかし、NaN の方が良いでしょうか?)。誰でも a) is.ordered が実際に何をするのか、いつそれが真になるのかを理解するのを手伝ってくれますか? b) 数値ベクトルがソート/順序付けされているかどうかをテストする方法

4

1 に答える 1

8

R には、 unorderedとOrderedの 2 種類の因子が存在します。あなたの場合、因子ではなく、単純な数値ベクトルがあります。したがって、上記のように機能は適用されません。is.ordered

順序付けられていない因子は、カテゴリデータと呼ばれることが多く、自然な順序がありません。これを R で表すには、順序付けされていない factorを使用できます。

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

is.ordered(f)
[1] FALSE

因子に自然な順序付け (通常は序数または順序付けられたカテゴリデータと呼ばれる) がある場合、順序付けられた factorを使用して 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これら2つのタイプの要因を区別します。

于 2014-01-26T17:31:32.710 に答える