r - 将 dplyr tbl 列提取为向量

标签 r dplyr lazy-evaluation collect

是否有一种更简洁的方法可以从具有数据库后端的 tbl 中获取 dplyr tbl 的一列作为向量(即数据框/表不能直接成为子集)?

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, warn.conflicts = FALSE)
db <- src_sqlite(tempfile(), create = TRUE)
iris2 <- copy_to(db, iris)
vec <- pull(iris2, Species)
head(vec)
#> [1] "setosa" "setosa" "setosa" "setosa" "setosa" "setosa"

关于r - 将 dplyr tbl 列提取为向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21618423/

相关文章:

c# - 什么时候应该使用 Lazy<T>?

r - tidyr 完整案例嵌套误解

r - 计算 R 中的平均时间

r - 计算变量运行所用的时间

r - dplyr - 如何选择某种类型的列

c++ - SDL 1.2 -> SDL 2.0(崩溃程序)

r - 如何向R中的数据集添加标题?

r - dplyr变异,自定义函数和变量名称为字符

r - 有条件地以 dplyr 计数

haskell - GHCi 7.8.3 中的评估