0
私は数値ベクトルに変換しようとしている要素RFyhatを持っています。必要に応じて、私はすでにそのRの因子を持つインデックスベクトル
as.numeric(levels(RFyhat))[RFyhat]
作品を発見した、と私はこのような構成で少し周りプレイしました:
c(1,2,20,4,5,6,7)[RFyhat]
も働く予想通り(RFyhat
は7つのレベルがあります)。
私はこの構造の動作を理解していますが、誰かがこの構文がどのように動作するか、あるいはそれが単なる構文的砂糖であるかどうかを説明できるかどうかは疑問です。具体的には、[RFyhat]
はインデックスベクトルとして機能しますか?もしそうであれば、要因として一般的にどのようにインデックスとして使用されますか?
'as.integer(as.character(RFyhat))'は私が探している振る舞いを持っていますが、 'as.numeric(levels(RFyhat))[RFyhat]'がそれは何をしているのか。だから、RFyhatの各要素は、あたかも「レベルが上がっていない」ように整数に変換されていますか?例えば 'c(1,2,20,3,4)[c(2,2,2,2,2,2,2,2,2,2)]'を取ると、20秒の数値ベクトルが返されます。センス。なぜ 'as.numeric(levels(RFyhat))[RFyhat]'は因子ではなく数値ベクトルを返しますか?それはRの特異性ですか?係数は 'c(2,2,2,2,2,2,2,2,2) 'のような数値ベクトルに変換されていますか? – Justin
@ジャスティンあなたが欠けている部分は、要素が整数ベクトル(レベルとともに)であると思います。しかし、それは文字通り整数コードとして格納され、 "ルックアップ"値としてのユニークなレベルだけである。スペースを節約します。 – joran
うん、それはどうなるのか。 getは整数ベクトルに変換された係数を持つ数値ベクトルをサブセット化するので、数値ベクトルを返します。 – Backlin