tidyselect меняет способ обращения к внешнему вектору имен переменных при выборе функций в R - PullRequest
1 голос
/ 04 апреля 2020

Я начал получать предупреждение при использовании выбора функций в пакетах tidyverse.

Пример:

library(dplyr)
set.seed(123)
df = data.frame(
  "id" = c(rep("G1", 3), rep("G2", 4), rep("G3", 3)),
  "total" = sample.int(n = 10),
  "C1" = sample.int(n=10),
  "C2" = sample.int(n=10),
  "C3" = sample.int(n=10))
cols.to.sum = c("C1", "C2")
df.selected = df %>% 
  dplyr::select(total, cols.to.sum)

Дача:

Note: Using an external vector in selections is ambiguous.
i Use `all_of(cols.to.sum)` instead of `cols.to.sum` to silence this message.
i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
This message is displayed once per session.

Это делает не предупреждает, если я произвожу рефакторинг на:

df.selected = df %>% 
  dplyr::select(total, all_of(cols.to.sum))

Это поведение изменилось с tidyselect_0.2.5 на tidyselect_1.0.0. До сих пор не было никакого предупреждения.

В документации об этом изменении (https://tidyselect.r-lib.org/reference/faq-external-vector.html) указано, что это всего лишь предупреждение, но в будущем оно превратится в ошибку.

Мой вопрос здесь заключается в том, как осуществить такое изменение в отношении существующего кода.

Должен ли я проводить рефакторинг каждой отдельной строки кода, использующей этот метод выбора, чтобы добавить all_of() к внешней векторной ссылке? Это звучит сложно для выполнения sh, когда в коде могут быть сотни фрагментов, в которых сделан такой выбор (это также влияет на другие функции, такие как, например, summarise_at).

Будет ли Единственная альтернатива - придерживаться tidyselect_0.2.5 для продолжения работы кода?

Каков путь к go при таких изменениях в пакете относительно существующего кода?

Спасибо

...