как сделать вектор различных значений в R для линейной регрессии - PullRequest
0 голосов
/ 01 мая 2020

У меня есть матрица (data1) в виде:

 gene       S869      S907       S909   S016          S090         S160
1 S1          0          0          0   0.000000          0          0
2 S2          0          0          0   0.000000          0          0
3 S3          0          0          0   0.423405          0          0
4 S4          0          0          0   0.000000          0          0
5 S5          0          0          0   0.000000          0          0
6 S6          0          0          0   0.000000          0          0

У меня есть другой набор данных (data2) в виде:

Cultivar  Dose
S869  10
S907  5
S909  7
S016  19
S090  15
S160  12

Затем я хочу сделать линейную регрессию, используя

for (gene in 1:ngenes){
model = lm(Dose~X[gene,])
}

Я хочу проверить регрессию между генами и дозой, используя эти два набора данных. Так что я получаю значения p для всех генов для дозы для всех сортов. Заранее спасибо!

1 Ответ

0 голосов
/ 01 мая 2020

Мы можем использовать Map до l oop над столбцом 'Cultivar,' Dose ', создать столбец' Dose 'в подмножестве' data1 'на основе столбца' Cultivar 'и применить lm

Map(function(x, y) lm(Dose ~ ., transform(data1[x], Dose = y)), 
          as.character(data2$Cultivar), data2$Dose)

данные

data1 <- structure(list(gene = c("S1", "S2", "S3", "S4", "S5", "S6"), 
    S869 = c(0L, 0L, 0L, 0L, 0L, 0L), S907 = c(0L, 0L, 0L, 0L, 
    0L, 0L), S909 = c(0L, 0L, 0L, 0L, 0L, 0L), S016 = c(0, 0, 
    0.423405, 0, 0, 0), S090 = c(0L, 0L, 0L, 0L, 0L, 0L), S160 = c(0L, 
    0L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6"))

data2 <- structure(list(Cultivar = c("S869", "S907", "S909", "S016", "S090", 
"S160"), Dose = c(10L, 5L, 7L, 19L, 15L, 12L)), class = "data.frame",
row.names = c(NA, 
-6L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...