首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pivot_longer with tidyselect where,where,但不是谓词?

pivot_longer with tidyselect where,where,但不是谓词?
EN

Stack Overflow用户
提问于 2020-05-28 03:03:18
回答 1查看 175关注 0票数 2

我尝试将tidyselect函数wherepivot_longer一起使用,但得到了tidyselect包不支持谓词的错误。这看起来有点不合理,所以很可能我有一个语法错误。(我意识到这样做不是为了调试代码。)如果有人能告诉我如何完成这项任务,我想这会帮助我更好地理解。

代码语言:javascript
复制
d <- dplyr::tribble(
  ~cups, ~glasses,
  "YES", "NO",
  "NO" , "YES",
  "YES", "NO",
  "YES", "NO",
  "NO" , "YES",
  "YES", "NO",
  "NO" , "YES",
  "NO" , "YES",
  "YES", "NO",
  "NO" , "YES",
  "YES", "NO",
  "NO" , "YES",
  "abc", "def"
) %>% 
  mutate(id = row_number())

这给出了我想要的结果。

代码语言:javascript
复制
the_columns_I_want <- c('cups','glasses')
d %>% 
  pivot_longer(all_of(the_columns_I_want),values_to = 'result', names_to =  'group')    

但我想选择某些类型的字段。

代码语言:javascript
复制
d %>% 
  pivot_longer(where(is.character),values_to = 'result', names_to =  'group')    

说明它确实适用于dplyr,所以我没有犯这个错误:(Tidyverse: This tidyselect interface doesn't support predicates yet)

代码语言:javascript
复制
d %>% 
  select(where(is.character))
EN

回答 1

Stack Overflow用户

发布于 2020-05-28 03:05:22

tidyr_1.1.0dplyr的devel版本中,它工作得很好

代码语言:javascript
复制
library(tidyr)
d %>% 
  pivot_longer(where(is.character),values_to = 'result', names_to =  'group')    
# A tibble: 26 x 3
#      id group   result
#   <int> <chr>   <chr> 
# 1     1 cups    YES   
# 2     1 glasses NO    
# 3     2 cups    NO    
# 4     2 glasses YES   
# 5     3 cups    YES   
# 6     3 glasses NO    
# 7     4 cups    YES   
# 8     4 glasses NO    
# 9     5 cups    NO    
#10     5 glasses YES   
# … with 16 more rows
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62050920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档