R Крускал-Уоллис с несколькими факторами
Я ищу помощь в выполнении теста Крускала-Уоллиса на моем наборе данных для большого количества факторов. Я могу выполнить тест для одного фактора, например, AD_1yr:
kruskal.test(Shannon ~ AD_1y, data=comm)
Но у меня есть более 50 факторов, которые я хочу протестировать, и я надеялся, что есть код, который я могу ввести, который будет выполнять тест для всех факторов без необходимости вручную выполнять тест 50 раз.
1 ответ
Мы можем использовать 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)))