Я написал пакет R, который использует селекторы {tidyselect} (например, contains()
, starts_with()
и т. Д.). Я хотел бы добавить еще несколько вспомогательных функций select в пакет для выбора переменных на основе некоторого атрибута. Например, выберите все числовые переменные или, возможно, все логические переменные.
Я просмотрел базовый код {tidyselect}. Но я не могу предположить, как работает регистрация переменных, и поэтому не могу расширить ее, чтобы выбрать переменные по их атрибутам.
Я провел некоторый поиск, и похоже, что пакет {recipes} успешно реализовал дополнительных помощников, таких как я ищу (например, all_numeric()
), но я изо всех сил пытаюсь написать функции расширения. https://github.com/tidymodels/recipes/blob/master/R/selections.R
Я считаю, что все сводится к тому, что я не понимаю, что происходит, когда переменные регистрируются с помощью функции tidyselect::scoped_vars()
. Если я запускаю tidyselect::scoped_vars(vars = names(mtcars))
в чистой среде, я не вижу никаких изменений. Но я могу использовать помощники {tidyselect} в глобальной среде после регистрации переменных.
names(mtcars)
#> [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
#> [11] "carb"
tidyselect::scoped_vars(vars = names(mtcars))
# returns position of column 'mpg'
tidyselect::starts_with("mp")
#> 1
Буду признателен за любые советы или указания к какой-либо документации! Спасибо!