我的数据框如下:
structure(list(Keyword = c("Sales", "Info", "Reply", "Service",
"Accounting", "donotreply"), Class = c("Check", "Send", "Do Not Send",
"Check", NA, "Do Not Send")), class = "data.frame", row.names = c(NA,
-6L))
我正在尝试通过将“不发送”的关键字通过管道传递到as.vector来将其转换为它们自己的向量。以下是我到目前为止的代码:
DNSkeywords <- data.frame(read_excel('Keywords List.xlsx', sheet = 'Sheet1', col_names = TRUE)) %>%
filter(Class == 'Do Not Send') %>%
select(Keyword) %>%
as.vector(.$Keyword)
我的输出应该只是以下内容:
c("Reply", "donotreply")
当然,我可以写第二行DNSkeywords <- as.vector(DNSkeywords$Keyword)
,但我宁愿将其插入。我不确定如何在tidyverse中使用as.vector()
命令,以便可以选择一个小标题中的列。
答案 0 :(得分:1)
您可以按以下方式使用pull
或pluck
。
library(tidyverse)
dat %>%
filter(Class == 'Do Not Send') %>%
pull(Keyword)
dat %>%
filter(Class == 'Do Not Send') %>%
pluck("Keyword")
或者仅从基数R中的[[
。
dat %>%
filter(Class == 'Do Not Send') %>%
`[[`("Keyword")
如果您确实想使用unlist
,也可以使用select
,但是这个词比较罗。
dat %>%
filter(Class == 'Do Not Send') %>%
select(Keyword) %>%
unlist(use.names = FALSE)
数据
dat <- structure(list(Keyword = c("Sales", "Info", "Reply", "Service",
"Accounting", "donotreply"), Class = c("Check", "Send", "Do Not Send",
"Check", NA, "Do Not Send")), class = "data.frame", row.names = c(NA,
-6L))