次のコードはデータフレームをサブセット化しますが、サブセットに行名を含めます。
mpg = subset(mtcars, cyl=='6', select=mpg)
結果の mpg オブジェクトを値のみを含むベクトルに変換するにはどうすればよいですか? つまり、結果の mpg オブジェクトから行名を取り除く必要があります
いくつかのオプションがあります。
まず、 を使用しているためsubset
、引数を指定できますがdrop=TRUE
、この回答の後半にある警告を参照してください):
subset(mtcars, cyl=='6', select=mpg, drop=TRUE)
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
[
しかし、長期的には、R サブセット演算子、[[
、およびに慣れる必要があり$
ます。
mtcars[mtcars$cyl==6, "mpg"]
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
そして、関数を使用してコードの最後の行を簡素化できますwith
(ただし、警告を参照してください)。
with(mtcars, mtcars[cyl==6, "mpg"])
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
警告:とのいくつかの側面はsubset
、with
有害と見なされる場合があります。すべてのオブジェクトは、最初にデータ フレームのコンテキストで評価されます。したがって、データ フレーム内の列と同じ名前の変数を使用した場合、式は変数ではなく列名に評価されます。
with(mtcars,mtcars[cyl==6,"mpg"])
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
gear <- 6
with(mtcars,mtcars[cyl==gear,"mpg"])
[1] 22.8 24.4 22.8 32.4 30.4 33.9 27.3 21.4
subset(mtcars, cyl==gear, select=mpg, drop=TRUE)
[1] 22.8 24.4 22.8 32.4 30.4 33.9 27.3 21.4
with
andのsubset
呼び出しはgear
、6 に設定した場所からではなく、データ フレームから取得されました。