Использование вложенных циклов для анализа генов с повышенной и пониженной регуляцией - PullRequest
0 голосов
/ 19 ноября 2018

Я новичок в программировании на R, и сейчас я хочу проанализировать огромный набор данных генов.Я пытаюсь изменить вложенную петлю, которая в настоящее время работает, чтобы увидеть, какие гены активируются с учетом измененных скорректированных значений P и значений LogFC, чтобы увидеть то же самое, но для генов с пониженной регуляцией.То, что я сгенерировал для генов с повышенной регуляцией, - это таблица 4х4, в которой показано, как меняется число генов, которые соответствуют предельным значениям, которые я выбрал для скорректированного значения P и LogFC. На рисунке показано кодирование, используемое для вложенного цикла То, что я получаю, когда пытаюсь выполнить это для генов с пониженной регуляцией, - это те же значения - я предполагаю, что R не регистрирует никаких изменений и возвращает то же самоеномера.Любой совет будет высоко ценится.

 #--------------------------------------------------------------------------------
# Function to calculate number of up regulated genes
#--------------------------------------------------------------------------------
get.upregulated.genes <- function(dafra, p.value.max, log.fc.min) {
  gene.count <- subset(dafra, adj.P.Val <= p.value.max & logFC >= log.fc.min) %>% 
    .[["Gene.symbol"]] %>% unique %>% length
  return(gene.count)
}

get.upregulated.genes(dafra=df3, p.value.max=0.05, log.fc.min=1) # 429

p.values <- c(0.001, 0.005, 0.01, 0.05)
log.fcs <- rev(c(0.5, 1, 1.5, 2))
log.fcs
mx.up <- matrix(rep(NA, 16), ncol=4)
mx.up
colnames(mx.up) <- p.values
rownames(mx.up) <- log.fcs

for (x in p.values) {
  for (y in log.fcs) {
    z <- get.upregulated.genes(df3, x, y)
    mx.up[as.character(y),as.character(x)] <- z
  }
}
mx.up
View(mx.up)

for (x in p.values) {
  for (y in log.fcs) {
    z <- get.upregulated.genes(df3, x, y)
    print(x)
    print(y)
    print(z)
    print("------")
  }
}

1 Ответ

0 голосов
/ 19 ноября 2018

Нет необходимости в forloops, попробуйте что-то вроде этого (не проверено, так как нет примеров данных):

# get all combos
x <- expand.grid(
  p.values = c(0.001, 0.005, 0.01, 0.05),
  log.fcs = rev(c(0.5, 1, 1.5, 2)))

# loop rowby then get length of unique genes
apply(x, 1, function(i){
  length(unique(df3[ df3$adj.P.Val <= i[ 1 ] & df3$logFC >= i[ 2 ], "Gene.symbol" ]))
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...