Я пытаюсь перебрать большой фрейм данных [5413 столбцов] и запустить ANOVA для каждого столбца, однако я получаю сообщение об ошибке при попытке сделать это.
Я хотел бы получитьзначение P из ANOVA записывается в новую строку в кадре данных, содержащем заголовки столбцов.Но ограничиваясь своими текущими знаниями, я записываю выходные данные P-значений в файлы, которые я могу проанализировать в bash.
Вот примерная схема данных:
data()
Name, Group, aaaA, aaaE, bbbR, cccD
Apple, Fruit, 1.23, 0.45, 0.3, 1.1
Banana, Fruit, 0.54, 0.12, 2.0, 1.32
Carrot, Vegetable, 0.01, 0.05, 0.45, 0.9
Pear, Fruit, 0.1, 0.2, 0.1, 0.3
Fox, Animal, 1.0, 0.9, 1.2, 0.8
Dog, Animal, 1.2, 1.1, 0.8, 0.7
А вотвывод из dput:
structure(list(Name = structure(c(1L, 2L, 3L, 6L, 5L, 4L), .Label = c("Apple",
"Banana", "Carrot", "Dog", "Fox", "Pear"), class = "factor"),
Group = structure(c(2L, 2L, 3L, 2L, 1L, 1L), .Label = c(" Animal",
" Fruit", " Vegetable"), class = "factor"), aaaA = c(1.23,
0.54, 0.01, 0.1, 1, 1.2), aaaE = c(0.45, 0.12, 0.05, 0.2,
0.9, 1.1), bbbR = c(0.3, 2, 0.45, 0.1, 1.2, 0.8), cccD = c(1.1,
1.32, 0.9, 0.3, 0.8, 0.7)), class = "data.frame", row.names = c(NA,
-6L))
Чтобы получить успешный вывод от одного, я делаю:
summary(aov(aaaA ~ Group, data=data))[[1]][["Pr(>F)"]]
Затем я пытаюсь реализовать это в цикле:
for(i in names(data[3:6])){
out <- summary(aov(i ~ Group, data=data))[[1]][["Pr(>F)"]]
write.csv(out, i)}
Что возвращает ошибку:
Error in model.frame.default(formula = i ~ Group, data = test, drop.unused.levels = TRUE) :
variable lengths differ (found for 'Group')
Может кто-нибудь помочь обойти ошибку или внедрить ANOVA для каждого столбца?