R言語でデータフレームから指定した列ベクトルを取得する方法について解説します。このような方法はいくつかあり、R言語に標準で搭載されている機能を使用した方法もありますが、ここではtidyverseパッケージに含まれているdplyrパッケージのpull()を使用した方法についてお伝えします。pull()を使用する利点は、パイプ演算子と親和性が高くR言語に標準で搭載されている機能を使用する方法よりも可読性が高いコードが書けることが挙げられます。

pull()の概要

pull()は、1つの列を抽出する関数です。これは、$に似ていますが、パイプ演算での見た目が少し良くなり、リモートデータフレームでも機能し、オプションで出力に名前を付けることができるため、非常に便利です。

pull()の使い方

pull()の使い方は次になります。


pull(.data, var = -1, name = NULL, ...)

pull()の引数の意味

.data

データフレームまたはデータフレーム拡張(例:tibble)、遅延データフレーム(例:dbplyrまたはdtplyrから)を指定します。

var = -1

次を指定します。デフォルトでは、最後の列が返されます(最近作成した列であると仮定します)。この引数は式によって取得され、準引用符をサポートします(列名と列の位置を引用符で解除できます)。

  • 列名
  • 正の整数:左から数えて位置を示します
  • 負の整数:位置を右からカウントします
name = NULL

名前付きベクトルの名前として使用する列を指定する省略可能なパラメーターです。
varと同様の方法で指定されます。

pull()の戻り値

.data と同じサイズのベクトル。

準備

あらかじめ、tidyverseパッケージを読み込んでおきます。


library(tidyverse)

解説のために、次のirisデータセットを使用します。


iris |>
  head()

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

最後の列のベクトルを取得

デフォルトの列(最後の列)をpull()でベクトルを取得するサンプルコードです。irisデータセットの最後の列名「Species」のベクトルが取得されることが確認できます。


iris |>
  pull() |>
  str()

Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

列名を指定してベクトルを取得

列名を指定してpull()でベクトルを取得するサンプルコードです。


iris |>
  pull(Sepal.Length) |>
  str()

 num [1:150] 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
R入門 データフレームから指定した列ベクトルの取得