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

Это мой первый пост, поэтому заранее извиняюсь, если не совсем ясно. У меня есть сложная задача (!! не курсовая работа !!) с большим набором данных идентификаторов генов (столбец 1) и уровней экспрессии (столбцы 40-47). Я пишу функцию, которая возвращает результат, если стандартное отклонение больше среднего. До сих пор я был в состоянии распечатать результаты, но я хочу напечатать имена генов, если для этой строки нет выводов FALSE.

Я также получаю предупреждение и не могу понять, почему.

Пожалуйста, помогите! (z) - это фрейм данных, который я буду вызывать после.

> getHighlyVariableGenes <- function(z) {
  for (i in z[40:47]) {
    if (output <- sapply(z[,40:74], sd) > rowMeans(z[,40:74])){
    return(output)
    } else {
    return("")
    }
    }
  }

> getHighlyVariableGenes(RNA_data)

Что дает мне:

 [947]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [958]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
 [969]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [980]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [991]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [ reached getOption("max.print") -- omitted 62652 entries ]
Warning messages:
1: In sapply(z[, 40:74], sd) > rowMeans(z[, 40:74]) :
  longer object length is not a multiple of shorter object length
2: In if (output <- sapply(z[, 40:74], sd) > rowMeans(z[, 40:74])) {     :
  the condition has length > 1 and only the first element will be used

Я также пробовал:

>getHighlyVariableGenes <- function(z) {
  for (i in z[40:47]) {
    if (output <- sapply(z[,40:74], sd) > rowMeans(z[,40:74])){
    return(z['gene_id'])
    } else {
    return("")
  }
  }
}

Который, по-видимому, печатает каждое значение в первом столбце и не выдает ложных выходных данных:

>995   ENSG00000066735
>996   ENSG00000066739
>997   ENSG00000066777
>998   ENSG00000066813
>999   ENSG00000066827
>1000  ENSG00000066855
[ reached getOption("max.print") -- omitted 62652 rows ]

Любое предложение приветствуется!

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