在函数内部使用 tukey_hsd() 和在 R 中使用 add_xy_position() 的问题
Problem with using tukey_hsd() inside a function and add_xy_position() in R
在函数内部使用 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")
在函数内部使用 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")