R : dplyr で結果が1列のとき vector で返すには

結論としては、dplyr::pull または unlist を使うことで vector にできました。

やりたいこと

例えば次のように1列取得すると、

ret <- head(iris) %>% dplyr::select(Sepal.Length)

ret には次のように1列の data.frame が返されます。

欲しいのは、以下を実行したときの様に vector だったのですが、パイプ演算子で完結させたい。という話です。

tmp <- head(iris) %>% dplyr::select(Sepal.Length)
ret <- as.vector(tmp$Sepal.Length)
# ret の中身は
# c(5.1, 4.9, 4.7, 4.6, 5.0, 5.4)

dplyr::pull を使う

ret <- head(iris) %>%
  dplyr::select(Sepal.Length) %>%
  dplyr::pull()

dplyr にやりたいことそのものな pull がありました。

unlist を使う

ret <- head(iris) %>%
  dplyr::select(Sepal.Length) %>%
  unlist(use.names = FALSE)

base の unlist も使えました。

実際に使うなら、dplyr::pull の方でしょうか。

コメント