Loop in R (набор данных Bioconductor ALL)
Я использую набор данных ALL из набора Bioconductor.
У меня есть следующая линейная модель для уровней экспрессии генов во время ремиссии. Мне удалось создать модель для одного конкретного гена, но я не могу разработать цикл или применить сниппет (), который будет работать с каждой строкой (12 КБ).
Я обновил свои пакеты для включения Limma и разработал следующую модель:
> ourData <- exprs(ALL)
> ourDataFactor <- ourDataFactor <- pData(ALL)$age
> design <-model.matrix(~ ourDataFactor)
> fit <- lmFit(ourData, design)
> fit <- ebayes(fit)
> topTable(fit)
Тем не менее, я продолжаю получать следующую ошибку для шага lmFit (также не отображается как функция с помощью (lmFit).
> fit <- lmFit(ourData, design)
Error in lmFit(ourData, design) :
row dimension of design doesn't match column dimension of data object
Почему я не могу завершить этот шаг? Я знаю, что он имеет дело с моим pData (фреймом данных), который имеет 128 строк, а мои exprs (матрица) имеют 12625. Пациенты - это то, что отображают два набора данных и находятся в строках для pData и в столбцах для exprs.
1 ответ
Есть несколько проблем с вашим кодом.
- Самое главное, ваш пример кода не воспроизводится:
days2remiss
нигде не определено. Также для будущих сообщений всегда включайте любую внешнюю библиотеку / данные, которые вы загружаете. Рассмотрим следующее
library(ALL) data(ALL) expr <- exprs(ALL)
expr
содержит значения экспрессии гена на пациента (столбец) по идентификатору зонда Affymetrix (строки). Экспрессия из нескольких зондов (то есть набора зондов) характеризует экспрессию одного гена. Так что подгонка линейной модели только к одному датчику не имеет смысла. Необходимо сопоставить идентификаторы зонда с некоторым идентификатором гена (Entrez, Ensembl и т. Д.), А затем суммировать значения экспрессии на уровне гена. После этого вы можете моделировать экспрессию генов в статистической (линейной) модели.