Я пытаюсь запустить команду collect() для фреймов данных и программно присвоить имя столбца .key, используя !!quo(). Но я продолжаю получать «Ошибка: неверная спецификация столбца». Я даже нашел закрытый тикет, где показано, что он должен работать (https://github.com/tidyverse/tidyr/issues/293).
Я собираюсь вернуться к использованию rename_() в качестве обходного пути, но было бы неплохо использовать более элегантный NSE.
library('tidyverse')
data(mtcars)
my_var <- 'my_col_name'
Следующее работает, но это пони с одним трюком
> mtcars %>%
as_tibble %>%
rownames_to_column('car_make') %>%
gather(my_col_name, values, -car_make)
# A tibble: 352 x 3
car_make my_col_name values
<chr> <chr> <dbl>
1 Mazda RX4 mpg 21.0
2 Mazda RX4 Wag mpg 21.0
3 Datsun 710 mpg 22.8
4 Hornet 4 Drive mpg 21.4
5 Hornet Sportabout mpg 18.7
6 Valiant mpg 18.1
7 Duster 360 mpg 14.3
8 Merc 240D mpg 24.4
9 Merc 230 mpg 22.8
10 Merc 280 mpg 19.2
# ... with 342 more rows
Следующие попытки использовать tidyval two дают ту же ошибку:
> mtcars %>%
as_tibble %>%
rownames_to_column('car_make') %>%
gather(!!quo(my_var), values, -car_make)
Error: Invalid column specification
> mtcars %>%
as_tibble %>%
rownames_to_column('car_make') %>%
gather(!!enquo(my_var), values, -car_make)
Error: Invalid column specification
Версии библиотеки
tidyverse_1.1.1
dplyr_0.7.0
tidyr_0.6.3
rlang_0.1.1
gather()
находится вtidyr
, а неdplyr
, и я не думаю, что текущий опубликованныйtidyr
(0.6.3) использует новый синтаксисrlang
, который используетdplyr
. Возможно, это работает в версии для разработчиков. - person MrFlick   schedule 07.07.2017devtools::install_github("tidyverse/tidyr")
- person MrFlick   schedule 07.07.2017