Мне нужно создать формулу для модели линейной регрессии (используя функцию glm ()), где у меня слишком много переменных, чтобы попробовать. Я делаю анализ экспрессии генов.
Итак, я ищу способ объединить все эти переменные в одну строку (в этом случае переменные будут именами столбцов моего data.frame), так что формула может быть достигнута.
Мои данные выглядят примерно так (фактический фрейм данных имеет 213 столбцов):
> df
Smoke PRR22 C15orf40 RAX2 GIMAP1 TM2D3 FAM167AAS1 LINC00161 SMCR8 CYP11B1
DP019 No 6.247058 4.609030 4.920439 3.531275 6.032196 1.576602 3.261709 5.752494 4.082924
DP021 Yes 5.767487 4.451362 4.834086 3.054192 6.049870 1.779412 2.618781 5.291328 4.274439
DP022 No 6.008855 4.841719 4.834774 3.354556 6.244215 1.580933 3.135989 4.989184 3.319836
DP025 Yes 5.390064 4.420183 4.923600 3.356938 5.516580 1.796413 2.984576 5.189582 3.833807
DP033 No 5.479384 5.987276 4.858381 3.454082 7.176767 1.640109 3.213976 5.378756 4.195856
DP035 No 5.439995 4.825332 5.469710 3.561561 6.357713 1.684058 3.635607 4.786237 3.792060
Где первый столбец («Дым») - моя переменная признака, а остальные (имена генов) - уровень экспрессии гена.
Я хотел бы построить что-то вроде этого:
glm(Smoke ~ PRR22 + C15orf40 + RAX2 + GIMAP1... and so forth
У меня вопрос: как я могу автоматизировать его так, чтобы все мои переменные были там?
Может, объединение имен столбцов в одну строку решит проблему? Например:
for (i in colnames(df)[-1]){
form <- as.formula(paste0("Smoke ~ ", i))
glm(form, data=df)
}
Но это не работает. Я уверен, что что-то упустил ... или много.
Так что, если кто-то может помочь, это было бы отлично!