在函数中使用tukey_hsd()和在r中使用add_xy_position()的问题



在函数内部使用rstatix包中的tukey_hsd()后,我遇到了add_xy_position()的问题。我的函数是这样的:

make_tukey_test <- function (data,variable,grouping_variable){
data %>% 
tukey_hsd(variable ~ grouping_variable)
}

当我使用下面的代码调用函数时,它工作得很好,测试结果被保存在data.frame中:

test <- make_tukey_test(data = dat, variable = dat$num_var, grouping_variable = dat$factor_var)

然而,当我尝试使用add_xy_position()添加dat$factor_var的x和y坐标时,像这样:

test <- test %>%
add_xy_position(x = “factor_var”)

我得到以下错误信息:

Error: Must group by variables found in `.data`. * Column `grouping_variable` is not found.

但是,当我在函数之外使用tukey_hsd()时,代码工作得非常好,并且坐标被添加到data.frame中。

我将非常感谢一些有用的建议,因为当我在函数中使用它时,我不知道为什么代码不起作用。

我建议将列名作为字符串传递。因为tukey_hsd接受一个公式对象,你可以使用reformulate来创建它,并传递grouping_variable,就像在add_xy_position函数中一样。

以下是mtcars数据集的示例。

library(rstatix)
library(dplyr)
dat <- mtcars %>% mutate(cyl = factor(cyl)) 
make_tukey_test <- function (data,variable,grouping_variable){
data %>% 
tukey_hsd(reformulate(grouping_variable, variable)) %>%
add_xy_position(x = grouping_variable)
}
test <- make_tukey_test(data = dat, variable = "mpg", grouping_variable = "cyl")

最新更新