Я новичок в R и пытаюсь понять функциональное программирование и использование {{}}
.
Я не могу понять, как просто получить print
имя variable_name
из аргумента без !!, enquos
Я пробовал код ниже, но он не работает должным образом:
summarise_min <- function(data, var_min, var_group) {
print({{var_min}})
print(glue("test_{{var_min}}"))
}
summarise_min(mtcars, mpg, cyl)
summarise / group
работает исключительно в Tidyverse функциями для маскировки данных . {{X1}} и {{x2}} не такие функции.
my_summarise5 <- function(data, mean_var, sd_var) {
data %>%
summarise(
"mean_{{mean_var}}" := mean({{ mean_var }}),
"sd_{{sd_var}}" := mean({{ sd_var }})
)
}
my_summarise5(mtcars, mpg, cyl)
Я стараюсь избегать использования !!, enquo, quo_name
, поскольку они очень сбивают с толку.
Нет ли способа работать с этим, просто используя {{x0}}, и они ограничиваются только для суммирования функций?
1 ответ
{{
работает исключительно в функциях tidyverse маскирования данных . print()
и glue()
не являются такими функциями.
Вы можете сделать print(enquo(var))
. Это (1) разряжает var
и предотвращает его оценку; (2) печатает обезвоженное выражение.
Вы также можете создать свою собственную функцию для печати переменной, упаковывая этот шаблон:
print_arg <- function(arg) print(enquo(arg))
Поскольку он использует аккуратный оператор eval enquo()
, он автоматически поддерживает {{
. Вы можете назвать это так:
print_arg({{ some_arg }})
Похожие вопросы
Новые вопросы
r
R — это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, используйте минимально воспроизводимые примеры, которые другие могут запустить с помощью копирования и вставки. Показать желаемый результат полностью. Используйте dput() для данных и укажите все небазовые пакеты с помощью library(). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов по статистике используйте https://stats.stackexchange.com.