関数relevelが指定されたレベルを最初に設定することがわかっています。指定されたレベルを最後に設定する組み込み関数があるかどうかを知りたい。そうでない場合、そのような関数を書く効率的な方法は何ですか?因子のレベルを最後に設定する
1
A
答えて
3
組み込み関数はありません。
lastlevel = function(f, last) {
if (!is.factor(f)) stop("f must be a factor")
orig_levels = levels(f)
if (! last %in% orig_levels) stop("last must be a level of f")
new_levels = c(setdiff(orig_levels, last), last)
factor(f, levels = new_levels)
}
x = factor(c("a", "b", "c"))
> lastlevel(x, "a")
[1] a b c
Levels: b c a
> lastlevel(x, "b")
[1] a b c
Levels: a c b
> lastlevel(x, "c")
[1] a b c
Levels: a b c
> lastlevel(x, "d")
Error in lastlevel(x, "d") : last must be a level of f
私はstats:::relevel.factor
に小さな変更を作ることができたとき、私はちょうど、そのアウト書いたので、私は少し愚かな感じ:あなたはこのようにそれを行うことができます。 relevel
から適応溶液は次のようになり:
lastlevel = function (f, last, ...) {
if (!is.factor(f)) stop("f must be a factor")
lev <- levels(x)
if (length(last) != 1L)
stop("'last' must be of length one")
if (is.character(last))
last <- match(last, lev)
if (is.na(last))
stop("'last' must be an existing level")
nlev <- length(lev)
if (last < 1 || last > nlev)
stop(gettextf("last = %d must be in 1L:%d", last, nlev),
domain = NA)
factor(x, levels = lev[c(last, seq_along(lev)[-last])])
}
それはさらにいくつかの入力をチェックし、また、(例えば、last = 2
が最後に第二レベルを移動する)の数値を受け付けます。
2
パッケージforcats
にはこれをきれいにする機能があります。
f <- gl(2, 1, labels = c("b", "a"))
forcats::fct_relevel(f, "b", after = Inf)
#> [1] b a
#> Levels: a b
関連する問題
- 1. ゴースト因子レベル
- 2. ベクトルの因子レベルのインデックス
- 3. 因子のレベルがR
- 4. 2因子のレベルによる平均
- 5. 別の因子に基づく因子レベルの並べ替え
- 6. プロット因子レベルはR
- 7. 新しい因子レベル
- 8. 列の値を、定義された因子に基づいて因子レベルに置き換える方法R
- 9. R因子レベルを減らす
- 10. R:あるレベルの因子を数値に変換する
- 11. 予測するときに新しい因子レベルの係数を手動で設定する
- 12. ggplot2:因子レベルへの色の修正
- 13. 分類 - 因子レベルの使用
- 14. R因子の欠損レベルR
- 15. 特定の因子レベルのためのggplot geom_line
- 16. Rのリスクアセスメントモデルは、因子の特定のレベルの確率を得るために
- 17. 数とすべての要因のすべての因子レベルに
- 18. R:因子レベル、recode rest to 'other'
- 19. 凡例の因子レベルの順序を変更する
- 20. 2つのレベルの因子をグループ化するR
- 21. ツールチップの最初と最後の子の位置を設定する方法
- 22. RPGゲームのバッチファイルのレベルを上げて最大レベルを設定する
- 23. 因子レベルの要素を置換する
- 24. rの因子レベルでモデルをフィットさせて予測する
- 25. データフレームを複数の因子レベルでサブセット化する
- 26. 私はこのサンプルを有するレベル因子R
- 27. データフレーム内の異なる因子レベルでループする
- 28. データフレームから指定されたレベルの因子の行を削除します
- 29. ggplot2のオーバーラップを避けるための因子レベルのグループ化
- 30. ツリーの最後のレベルにあるセット
30秒で私を倒す! –