私は、マトリックス中の遺伝子の「ヒットリスト」を持っています。各行はヒットし、フォーマットは「染色体(文字)開始(数字)停止(数字)」です。これらのヒットのどれが、「染色体開始停止遺伝子」というフォーマットのマトリックスである、フライゲノムの遺伝子と重複しているのかを見たいと思う。0126私はプリント()を置き換える場合しかし、R:ネストされたforループからベクターを作成する
geneListBuild <- function(dmelGenome='', hitList='', binSize='', saveGeneList='')
{
genomeColumns <- c('chr', 'start', 'stop', 'gene')
genome <- read.table(dmelGenome, header=FALSE, col.names = genomeColumns)
chr <- genome[,1]
startAdjust <- genome[,2] - binSize
stopAdjust <- genome[,3] + binSize
gene <- genome[,4]
genome <- data.frame(chr, startAdjust, stopAdjust, gene)
hits <- read.table(hitList, header=TRUE)
chrHits <- hits[hits$chr == "chr3R",]
chrGenome <- genome[genome$chr == "chr3R",]
genes <- c()
for(i in 1:length(chrHits[,1]))
{
for(j in 1:length(chrGenome[,1]))
{
if(chrHits[i,2] >= chrGenome[j,2] && chrHits[i,3] <= chrGenome[j,3])
{
print(chrGenome[j,4])
}
}
}
genes <- unique(genes[is.finite(genes)])
print(genes)
fileConn<-file(saveGeneList)
write(genes, fileConn)
close(fileConn)
}
:
genes[j] <- chrGenome[j,4]
RはchrGenome [1]に存在するいくつかの値を有するベクトルを返す)dmelGenomeました。これらの値がどのように選択されるかわからないのは、ifステートメントを満たす行にないためです。インデックス作成の問題だと思いますか?
また、これを実行するより効率的な方法があると確信しています。私はRが新しく、コードはあまり効率的ではありません。
これは、「ネストされたループの結果をRの別のベクトルに書き込む」と似ていますが、そのスレッドの情報で修正できませんでした。
ありがとうございました。
これは、私たちが再現できない(サンプルデータなし)コードの大きな塊であるため、本当に扱いにくいでしょう。 (1)データを提供し、(2)問題の原因をより正確に突き止めてください。 –
これは、非常によく似ています(ユーザー####がクロスポーリングしているのかどうか疑問に思っています)、r-helpとBioCのリストに間違いなくクロスポストされていました。このような活動は、BioConductorでよくサポートされています:https://stat.ethz.ch/pipermail/bioconductor/2011-October/041776.html –