【发布时间】:2019-07-07 21:23:40
【问题描述】:
我正在尝试创建一个函数来对我的数据运行 Kruskal Wallis 测试,但具有不同的分组类别。我尝试创建的函数将能够以感兴趣的不同分组类别的名称命名。我的代码基于此处看到的类似问题:
R: Kruskal-Wallis test in loop over specified columns in data frame
我正在尝试使用 rlang 0.4 包中的新 curly-curly 运算符。
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 =.${"
我相信我在环境或如何使用这个新的 curly-curly 运算符方面缺少一些东西。我有点迷茫,所以任何帮助将不胜感激!
【问题讨论】:
-
你最后没有
}大括号,但是,即使你添加了它也不会起作用
标签: r