我尝试将tidyselect函数where与pivot_longer一起使用,但得到了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())这给出了我想要的结果。
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: This tidyselect interface doesn't support predicates yet)
d %>%
select(where(is.character))发布于 2020-05-28 03:05:22
在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 rowshttps://stackoverflow.com/questions/62050920
复制相似问题