我是R编程的新手,我目前正在寻求分析庞大的基因数据集。我正在尝试更改一个嵌套循环,该循环当前可用于在给定的已调整P值和LogFC值不同的情况下,查看哪些基因上调,但对于下调的基因,它们看起来相同。我为上调的基因生成的是一张4x4表格,用于查看满足我为P调整值和LogFC选择的临界值的基因数量如何变化。 The image shows the coding used for the nested loop当我尝试对下调的基因执行此操作时,我得到的是相同的值-我假设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("------")
}
}
答案 0 :(得分:1)
不需要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" ]))
})