相关疑难解决方法(0)

提取dplyr tbl列作为向量

是否有更简洁的方法将dplyr tbl的一列作为向量,从具有数据库后端的tbl(即数据帧/表不能直接是子集)?

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

这太容易了,所以

collect(select(iris2, Species))[, 1]
# [1] "setosa"     "setosa"     "setosa"     "setosa"  etc.
Run Code Online (Sandbox Code Playgroud)

但它似乎有点笨拙.

r lazy-evaluation collect dplyr

150
推荐指数
7
解决办法
6万
查看次数

dplyr ::选择一列并输出为向量

dplyr::select 导致data.frame,如果结果是一列,有没有办法让它返回一个向量?

目前,我必须执行额外的step(res <- res$y)将其转换为data.frame中的vector,请参阅此示例:

#dummy data
df <- data.frame(x = 1:10, y = LETTERS[1:10], stringsAsFactors = FALSE)

#dplyr filter and select results in data.frame
res <- df %>% filter(x > 5) %>% select(y)
class(res)
#[1] "data.frame"

#desired result is a character vector
res <- res$y
class(res)
#[1] "character"
Run Code Online (Sandbox Code Playgroud)

如下:

res <- df %>% filter(x > 5) %>% select(y) %>% as.character
res
# This gives strange output
[1] "c(\"F\", \"G\", \"H\", \"I\", \"J\")"

# I need:
# [1] …
Run Code Online (Sandbox Code Playgroud)

select r vector dataframe dplyr

61
推荐指数
3
解决办法
2万
查看次数

标签 统计

dplyr ×2

r ×2

collect ×1

dataframe ×1

lazy-evaluation ×1

select ×1

vector ×1