我编写了一个解析data.frame的函数,它用rstatix::dunn_test抛出一个错误,这是我无法解决的。这是因为变量名不正确地传递给公式。
>selectedcolnames<-"SF36"
>group_name<-"therapy"
>dunn_test(eval(parse(text=glue("{selectedcolnames}")))~eval(parse(text=glue("{group_name}"))),data=data,p.adjust.method = "holm",detailed = F)这就产生了一个错误:
Error: Can't extract columns that don't exist.
x Column `eval(parse(text = glue("{group_name}")))` doesn't exist.数据列"SF36“和分组因子列”治疗“存在。我检查了它的工作原理:
wilcox.test(eval(parse(text=glue("{selected}")))~eval(parse(text=glue("{group_name}"))),data)或
coin::wilcox_test(eval(parse(text=glue("{selected}")))~eval(parse(text=glue("{group_name}"))),data)有谁知道如何解决这个问题吗?
发布于 2021-09-10 11:41:14
我用玩具数据运行这个代码,通过重新定义,它只是在这样的方式下工作得很好;
library(rstatix)
library(glue)
selectedcolnames <- 'Petal.Length'
group_name <- 'Species'
frm <- reformulate(glue("{group_name}"),glue("{selectedcolnames}"))
dunn_test(frm,data=iris,p.adjust.method = "holm",detailed = F)输出;
# A tibble: 3 x 9
.y. group1 group2 n1 n2 statistic p p.adj p.adj.signif
* <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
1 Petal.L~ setosa versic~ 50 50 5.86 4.55e- 9 9.09e- 9 ****
2 Petal.L~ setosa virgin~ 50 50 11.4 3.38e-30 1.02e-29 ****
3 Petal.L~ versico~ virgin~ 50 50 5.56 2.77e- 8 2.77e- 8 **** 发布于 2021-09-10 14:09:32
我找到了另一种方法(可能更复杂):
library(rstatix)
library(glue)
selectedcolnames <- 'Petal.Length'
group_name <- 'Species'
dunn_test(formula=eval(parse(text=glue("{selectedcolnames}~{group_name}"))),data=iris,p.adjust.method = "holm",detailed = F)https://stackoverflow.com/questions/69130978
复制相似问题