r - 邓恩的测试循环数据框的列
问题描述
我正在尝试对 Iris 数据执行 Dunn 检验。我想遍历 4 列并对不同物种的每一列执行 Dunn 检验。但是,当我尝试获取列名时,它不起作用。谁能告诉我为什么?
library(rstatix)
data<-iris
for (i in seq(1:4)) {
a<-colnames(data)
colname1 <-as.character(a[5])
colname2 <-as.character(a[i])
dtest<-data %>%
dunn_test( get(colname2) ~ get(colname1), p.adjust.method = "BH")
print(dtest)
print(i)
}
解决方案
您可以使用lapply
迭代列名并reformulate
创建公式对象。使用iris
数据集,您可以:
colname1 <- names(iris)[5]
colname2 <- names(iris)[1:4]
data <- lapply(colname2, function(x) {
rstatix::dunn_test(iris, reformulate(colname1, x),
p.adjust.method = "BH")
})
data
#[[1]]
# 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 Sepal.Length setosa versicolor 50 50 6.11 1.02e- 9 1.53e- 9 ****
#2 Sepal.Length setosa virginica 50 50 9.74 2.00e-22 6.00e-22 ****
#3 Sepal.Length versicolor virginica 50 50 3.64 2.77e- 4 2.77e- 4 ***
#[[2]]
# 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 Sepal.Width setosa versicolor 50 50 -7.79 6.82e-15 2.05e-14 ****
#2 Sepal.Width setosa virginica 50 50 -5.37 7.68e- 8 1.15e- 7 ****
#3 Sepal.Width versicolor virginica 50 50 2.41 1.58e- 2 1.58e- 2 *
#...
#...
推荐阅读
- d3.js - d3.js 中路径的颜色部分根据序数值使用不同的颜色
- android - 交易或启动新活动时如何创建 AlertDialog?
- r - 将带有逗号的字符串转换为R中的向量
- javascript - 在fusion360中使用坐标在空间中的每个点绘制球体
- git - 如何在 git 存储库之间共享 swagger 文档
- spring-boot - 无法使用 Webflux 返回大型 JSON 响应 - netty 和 jetty 均失败
- angular - 已部署的 Angular 8 应用程序在初始路由 url 上出现错误
- python - if - range 命令有问题
- asp.net-mvc - asp custom format for string
- if-statement - 在 Haskell 中努力解析 if 语句和代码布局