我正在寻求对我的一组数据进行大量因素的 Kruskal-Wallis 检验的帮助。我可以针对单个因素执行测试,例如 AD_1yr:
kruskal.test(Shannon ~ AD_1y, data=comm)
但是我有 50 多个要测试的因素,并且希望我可以输入一个代码来执行所有因素的测试,而无需手动执行 50 次不同的测试。
我正在寻求对我的一组数据进行大量因素的 Kruskal-Wallis 检验的帮助。我可以针对单个因素执行测试,例如 AD_1yr:
kruskal.test(Shannon ~ AD_1y, data=comm)
但是我有 50 多个要测试的因素,并且希望我可以输入一个代码来执行所有因素的测试,而无需手动执行 50 次不同的测试。
我们可以使用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)))