是否有更简洁的方法将dplyr tbl的一列作为向量,从具有数据库后端的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.
但它似乎有点笨拙 .
6 回答
你也可以使用
unlist
,我觉得它更容易阅读,因为你不需要重复列的名称或指定索引 .@ Luke1018在其中一条评论中提出了这个解决方案:
例如:
我认为它应该得到自己的答案 .
根据@nacnudus的评论,看起来在dplyr 0.6中实现了
pull
函数:对于旧版本的dplyr,这里有一个简洁的功能,可以使列更好(更容易键入,更容易阅读):
这使您可以执行以下任一操作:
导致...
它也适用于数据框:
在
dplyr
的v0.2中执行此操作的好方法:或者如果您愿意:
或者,如果你的 table 不是太大,简单......
使用dplyr 0.7.0,您可以使用
pull
从tbl
获取向量 .我可能会写:
由于dplyr是为处理tbls数据而设计的,因此没有更好的方法来获取单列数据 .
我会使用
magrittr
中的extract2
便利功能: