我正在寻找帮助,对我的数据集执行Kruskal-Wallis测试,以获取大量因素。我可以针对单个因素执行测试,例如AD_1yr:
kruskal.test(Shannon ~ AD_1y, data=comm)
但我有超过50个我想测试的因素,并希望有一个我可以输入的代码,它将执行所有因素的测试,而无需手动执行50次不同的测试。
答案 0 :(得分:2)
我们可以使用lapply
循环遍历factor
列,使用'shannon'列创建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)))