1. ホーム
  2. r

[解決済み】dplyrのtbl列をベクトルとして抽出する

2022-04-16 07:30:27

質問

データベースのバックエンドを持つtbl(つまり、データフレーム/テーブルを直接サブセットできない)から、dplyr tblの1列をベクトルとして取得する、より簡潔な方法はありますか?

require(dplyr)
db <- src_sqlite(tempfile(), create = TRUE)
iris2 <- copy_to(db, iris)
iris2$Species
# NULL

それではあまりにも簡単なので

collect(select(iris2, Species))[, 1]
# [1] "setosa"     "setosa"     "setosa"     "setosa"  etc.

でも、ちょっと不器用な感じがしますね。

どのように解決するのですか?

dplyr >= 0.7.0だと pull() からベクトルを取得する。 tbl .



library("dplyr")
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
db <- src_sqlite(tempfile(), create = TRUE)
iris2 <- copy_to(db, iris)
vec <- pull(iris2, Species)
head(vec)
#> [1] "setosa" "setosa" "setosa" "setosa" "setosa" "setosa"