1

我正在寻求对我的一组数据进行大量因素的 Kruskal-Wallis 检验的帮助。我可以针对单个因素执行测试,例如 AD_1yr:

kruskal.test(Shannon ~ AD_1y, data=comm)

但是我有 50 多个要测试的因素,并且希望我可以输入一个代码来执行所有因素的测试,而无需手动执行 50 次不同的测试。

4

1 回答 1

2

我们可以使用lapply遍历factor列,使用“香农”列创建一个data.frame并执行kruskal.test

allfactorcolumns <- sapply(comm, is.factor)
lst <- lapply(comm[allfactorcolumns], function(x) 
    kruskal.test(Shannon~., data= data.frame(x, comm['Shannon'])))

如果我们需要提取“p.value”、“df”等。

do.call(rbind, lapply(lst, function(x) data.frame(Pval= x$p.value, 
                     stat= x$statistic, df= x$parameter)))
于 2016-01-29T18:09:54.140 回答