Если у вас самое последнее обновление библиотеки rlang
v0.4.0 (июнь 2019 г.), вы можете использовать двойные фигурные скобки {{ }}
(он же «фигурные фигурные»), чтобы упростить программирование с помощью dplyr.
# Note: needs installation of rlang 0.4.0 or later
get_pivot <- function(data, predictor,target) {
result <-
data %>%
group_by(as.factor( {{ predictor }} )) %>%
summarise(sum=sum( {{ target }} ),total=n()) %>%
mutate(percentage=sum*100/total);
print(result)
}
# Edit -- thank you Rui Barradas
> get_pivot(mtcars, cyl, mpg_cat)
# A tibble: 3 x 4
`as.factor(cyl)` sum total percentage
<fct> <dbl> <int> <dbl>
1 4 11 11 100
2 6 3 7 42.9
3 8 0 14 0
Причина, по которой это требуется, заключается в том, что dplyr
и другие tidyverse
пакеты используют «нестандартную оценку», как вы сталкиваетесь с некоторыми базовыми функциями R, такими как lm(mpg~factor(am),data=mtcars)
.Эта практика часто делает «интерактивный» код короче, проще и легче для чтения, но за счет усложнения программирования.В этом случае оператор {{ }}
служит для переноса указанного столбца в контекст функции.
https://www.tidyverse.org/articles/2019/06/rlang-0-4-0/