问题
I'm looking for help on performing the Kruskal-Wallis test on my set of data for a large number of factors. I can perform the test for a single factor, like AD_1yr:
kruskal.test(Shannon ~ AD_1y, data=comm)
But I have over 50 factors I want to test, and was hoping there is a code I can enter that will perform the test for all the factors without having to manually perform the test 50 different times.
回答1:
We can use lapply
to loop over the factor
columns, create a data.frame
with the 'shannon' column and do the kruskal.test
allfactorcolumns <- sapply(comm, is.factor)
lst <- lapply(comm[allfactorcolumns], function(x)
kruskal.test(Shannon~., data= data.frame(x, comm['Shannon'])))
If we need to extract the 'p.value', 'df', etc.
do.call(rbind, lapply(lst, function(x) data.frame(Pval= x$p.value,
stat= x$statistic, df= x$parameter)))
来源:https://stackoverflow.com/questions/35091164/r-kruskal-wallis-with-multiple-factors