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