Создание функции в R для подмножества и вычисления дифференциального выражения, когда число и названия выборок неизвестны - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь настроить скрипт для вычисления дифференциальной экспрессии гена (geneX - geneControl). Моя цель - настроить этот сценарий таким образом, чтобы нам не нужно было знать количество протестированных генов или имена, чтобы он был полезен во всех экспериментальных данных. Примечание: geneControl одинаков во всех экспериментах.

Входные данные

    Well      Sample.Name   Target.Name    Cт  
1   A1          W1              A8           23.67683 
2   A2          W2           A8          23.17297 
3   A3         KO1              A8           22.80132 
4   A4         KO2           A8         22.77349 
5   A5         UX1           A8         22.90352 
6   A6         UX2           A8         23.52261
dCT <- function(sub) {    
  tryCatch(data.frame(Sample = sub$Sample.Name,
                      Target = sub$Target.Name,
                      CT = sub$Cт,
                      dCT = (sub$Cт[1] - sub$Cт[2])),
           error = function(e)
             data.frame(Sample = sub$Sample.Name,
                        Target = sub$Target.Name,
                        CT = sub$Cт,
                        dCT = (sub$Cт[1] - sub$Cт[2]))
  )
}

# CALL BY(), PASSING SUBSETS TO DEFINED FUNCTION
df_list <- by(data, data[c("Target.Name")], dCT)

Пример вывода:

$A8
   Sample Target       CT dCT
1      W1     A8 23.67683  NA
2      W2     A8 23.17297  NA
3     KO1     A8 22.80132  NA
4     KO2     A8 22.77349  NA
5     UX1     A8 22.90352  NA
6     UX2     A8 23.52261  NA

$C4
   Sample Target       CT dCT
1      W1     C4 25.53656  NA
2      W2     C4 24.45682  NA
3     KO1     C4 23.88133  NA
4     KO2     C4 24.44674  NA
5     UX1     C4 24.80964  NA
6     UX2     C4 25.21688  NA

В столбце dCT указан ген $ C4 - должен быть найден ген $ A8.

...