Конкататировать строки в цикле для генерации одной строки - PullRequest
1 голос
/ 10 апреля 2019

Мне нужно создать формулу для модели линейной регрессии (используя функцию 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)
    }

Но это не работает. Я уверен, что что-то упустил ... или много. Так что, если кто-то может помочь, это было бы отлично!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...