2017-08-31 7 views
2

as_factorforcatsから注文した要因が返されますか? GitHub pageの問題として報告されているのを見ていないにもかかわらず、欠けている機能のようです。私は、やっ内の任意の潜在的な危険が存在することができない場合forcats :: as_factorは順序付けられた要素を返すことができますか?

y <- forcats::as_factor(c("a", "z", "g"), ordered = TRUE) 
is.ordered(y) 
# FALSE 

私が試してみました

y <- ordered(forcats::as_factor(c("a", "z", "g"))) 

がそれともやる方が良いでしょう:

y <- factor(c("a", "z", "g"), levels = unique(c("a", "z", "g")), ordered = TRUE)) 
+1

'forcats ::: as_factor.character'は'命じ= '引数をサポートして' fct_inorder'を呼び出しますが、(x) 'はあなたが合格何に関係なく、そのようfct_inorder'としてハードコードされているようですそれを注文するつもりはありません。代わりに 'fct_inorder(x、...)'がバグかもしれませんが、代わりに 'ordered =' – thelatemail

答えて

1

これは実際に予期せぬ動作であるようです。 forcats::as_factorは、表示された順番にそれを強制的に実行しますが、何らかの形でフラグを設定しません。しかし、それをbase::factorと組み合わせると、順序を明示的に指定する必要はありません。フラグを設定するだけでうまくいくようです。

y <- forcats::as_factor(c("a", "z", "g")) 
y 
[1] a z g 
Levels: a z g 

is.ordered(y) 
[1] FALSE 

k <- factor(y, c("a","z","g"), ordered = TRUE) 
k 
[1] a z g 
Levels: a < z < g 

is.ordered(k) 
[1] TRUE 

k2 <- factor(y, ordered = TRUE) 
k2 
[1] a z g 
Levels: a < z < g 

is.ordered(k2) 
[1] TRUE 

k3 <- factor(forcats::as_factor(c("a","g","z")), ordered = TRUE) 
k3 
[1] a g z 
Levels: a < g < z 

is.ordered(k3) 
[1] TRUE 
関連する問題