在函数内部使用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")