首页 > 解决方案 > 在函数中使用 tukey_hsd() 和在 R 中使用 add_xy_position() 的问题

问题描述

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

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)

但是,当我尝试像这样添加使用的 x 和 y 坐标dat$factor_varadd_xy_position()

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 中。

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

标签: rfunctionanovatukeyrstatix

解决方案


我建议将列名作为字符串传递。由于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")

推荐阅读