r语言 - pivot_longer 与 tidyselect 在哪里,在哪里但不谓词?



我正在尝试将tidyselect函数wherepivot_longer一起使用,并收到tidyselect包不支持谓词的错误。 这似乎有些不合理,所以很可能我有语法错误。 (我意识到SO不是用于代码调试。 我认为如果有人能告诉我如何完成这项任务,这将有助于我更好地理解。

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())

这给出了我想要的结果。

the_columns_I_want <- c('cups','glasses')
d %>% 
pivot_longer(all_of(the_columns_I_want),values_to = 'result', names_to =  'group')    

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

d %>% 
pivot_longer(where(is.character),values_to = 'result', names_to =  'group')    

表明它确实适用于dplyr,所以我没有犯这个错误:(Tidyverse:这个 tidyselect 接口还不支持谓词(

d %>% 
select(where(is.character))

使用tidyr_1.1.0dplyr的devel版本,它工作正常

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

最新更新