Я новичок в программировании (т. Е. С циклами и операторами if-else), но не новичок в статистике в R.
У меня есть около 16 черт, которые я хочу сравнить между мужчинами и женщинами в 5 разных популяциях, так что сравнения 5x16. Сначала я хочу проверить, равны ли дисперсии мужских и женских черт (var.test), а затем использовать эту информацию для определения правильной версии функции t.test (либо var = T, либо var = F). Я пытаюсь написать цикл для автоматизации этого процесса.
Я написал работающий оператор if-else:
if ((var.test(male$mass,female$mass)$p.value < 0.05) == "TRUE") {
t.test(male$mass,female$mass, var = F)
} else
t.test(male$mass,female$mass, var = T)
Но я, кажется, не могу понять, как применить это ко всем своим качествам.
Я не хочу использовать два вложенных оператора for:
for (i in c(male$trait1, male$trait2,...)) {
for (j in c(female$trait1, female$trait2,...)) {
...
}
}
Потому что это создаст матрицу, выполняющую var.test и t.test для всех комбинаций признаков. Принимая во внимание, что я хочу, чтобы мужские и женские версии каждой черты были спарены.
Вот формат моих данных. Я сделал два подмножества данных (мужской и женский):
head(male)
id location gens log.gens sex mass head cbl
49 Hawaii 268 2.428135 M 583.86 78.648 65.54
27 Hawaii 268 2.428135 M 692.30 83.604 69.67
33 Hawaii 268 2.428135 M 647.70 81.180 67.65
34 Hawaii 268 2.428135 M 704.70 84.720 70.60
35 Hawaii 268 2.428135 M 604.90 82.440 68.70