Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pivot_更长时间使用tidyselect where,where但不使用谓词?_R_Dplyr_Pivot_Predicate_Tidyselect - Fatal编程技术网

pivot_更长时间使用tidyselect where,where但不使用谓词?

pivot_更长时间使用tidyselect where,where但不使用谓词?,r,dplyr,pivot,predicate,tidyselect,R,Dplyr,Pivot,Predicate,Tidyselect,我试图使用tidyselect函数,其中使用pivot_的时间更长,但得到的错误是tidyselect包不支持谓词。这似乎有点不合理,所以我很可能有语法错误。我意识到,代码调试并非如此。我想如果有人能告诉我如何完成这项任务,会帮助我更好地理解 d <- dplyr::tribble( ~cups, ~glasses, "YES", "NO", "NO" , "YES", "YES", "NO", "YES", "NO", "NO" , "YES", "YES",

我试图使用tidyselect函数,其中使用pivot_的时间更长,但得到的错误是tidyselect包不支持谓词。这似乎有点不合理,所以我很可能有语法错误。我意识到,代码调试并非如此。我想如果有人能告诉我如何完成这项任务,会帮助我更好地理解

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


表明它确实适用于dplyr,所以我没有犯这个错误: tidyr_1.1.0和dplyr的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

你的一切都还在继续。请注意,我的selectwhereis.character与您的select\u if执行相同的操作。你是说我需要两个步骤,不能再在pivot_中进行选择了。另外,您没有保留id字段。@HarlanNelson在您的帖子中没有明确说明,因为您展示的两种方法都可以正常工作me@HarlanNelsontidyr的软件包版本是什么。在tidyr 1.0.2不适用于我的情况下,它可以正常工作:d%>%pivot\u longerwhere.character,values\u to='result',names\u to='group',我需要tidyr\u 1.0。谢谢
d %>% 
  pivot_longer(where(is.character),values_to = 'result', names_to =  'group')    
d %>% 
  select(where(is.character))
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