Я пытаюсь создать функцию для запуска теста Крускала Уоллиса с моими данными, но с разными категориями группирования. Функция, которую я пытаюсь создать, сможет использовать имена различных группирующих категорий, представляющих интерес. Я основываю свой код на аналогичной проблеме, как показано здесь:
R: тест Крускала-Уоллиса в цикле по указанным столбцам в кадре данных
Я пытаюсь использовать новый оператор curly-curly из пакета rlang 0.4.
https://www.tidyverse.org/articles/2019/06/rlang-0-4-0/
Вот пример моей проблемы:
library(dplyr)
library(broom)
set.seed(123)
df <- tbl_df(data.frame(
group_cat1 = as.factor(rep(c("a", "b", "c"), each = 5)),
group_cat2 = as.factor(rep(c("x", "y", "z"), each = 5)),
var1 = runif(15, 0, 10),
var2 = runif(15, 0, 10),
var3 = runif(15, 0, 10)))
models_df <- df %>%
gather(variable, result, -group_cat1) %>%
group_by(variable) %>%
do(kruskal.test(x = .$result, g =.$group_cat1) %>% tidy())
Это работает хорошо, однако, если я пытаюсь обобщить проблему, определив функцию, я не могу заставить ее работать.
get_linear_model <- function(group_category) {
df %>%
gather(variable, result, -{{group_category}}) %>%
group_by(variable) %>%
do(kruskal.test(x = .$result, g =.${{group_category}) %>% tidy())
}
Я получаю следующую ошибку
Error: unexpected '{' in:
" group_by(variable) %>%
do(kruskal.test(x = .$result, g =.${"
Я полагаю, что мне что-то не хватает в отношении окружения или того, как вообще использовать этот новый оператор фигурных фигурок. Я немного растерялся, поэтому любая помощь будет принята с благодарностью!