ヒストンの位置を示す関連する染色体位置のリストに対応する染色体/位置データフレームから領域を抽出しようとしています。私の現在の「パイプライン」:対応するリストで複数のデータフレームをサブセット化する際の問題
インポート元のデータセットの染色体位置を含む:
> mapinfo<- read.table()
> colnames(mapinfo)<-c("CHR","M")
> mapinfo$CHR<- paste("chr",mapinfo$CHR),sep="")
> head(mapinfo)
CHR M
1 chrX 24072640
2 chr9 131463936
3 chr14 105176736
4 chr13 115000168
5 chr8 74791285
6 chr19 3676340
インポートベッドファイルを含むヒストン位置
をMapInfoのデータフレームからサブセットに使用するための染色体特異的コードを生成> bed<-read.table()
> names(bed)<- c("Chr","Start","Stop")
> head(bed)
Chr Start Stop
1 chr4 76806896 76807598
2 chrY 10034763 10036639
3 chr2 133036421 133037716
4 chr21 27227897 27228500
5 chr1 145036931 145041607
6 chr2 91777964 91779762
> Mcodes<- by(bed,bed$Chr,function(x){paste("M>=",bed$Start,"&M<=",bed$Stop,sep="",collapse="|")})
> Mcodes[chr1]
chr1
"M>=130786932&M<=130787255|M>=133156512&M<=133156894..."
サブセットオリジナルmapinfo da私は、染色体によって個々に自分の所望の領域をサブセットするために、以下の行を使用することができます。この時点で
> subs<- split(mapinfo,mapinfo$CHR)
:染色体によってtaset
> CHR1<- eval(parse(text=paste0('subset(subs$chr1,',Mcodes["chr1"],')')))
私は中に含まれるすべての染色体の特定のデータフレームをサブセットしたいと思います"最終的に同じパイプラインに置く必要がある様々なヒストン/ヒストン変種のための複数のベッドファイルを持っているので、コードの24の最後の行を実行することなく、" Mcodes "の染色体特異的対応リストによって" subs " 。それを可能にするためにループ/適用/何かする方法はありますか?
申し訳ありませんが、些細な疑問が残っていると思われる場合は、まだR /プログラミングゲームの新機能です。 アドバイスありがとうございます。ここで
をおもちゃmapinfo
です:
"開始"と " left_join(mapinfo、bed)に続いて「停止」します。あなたのおもちゃの例とは異なり、私のデータセットには、ベッドファイル内のその染色体の開始/停止領域に入る染色体の複数の「M」ポジションが含まれています。または、私はまだ完全に結合関数を理解していないかもしれません。 –
私の例では、このようなオーバーラップを取ろうとしました。私が考えることができるベスト - 'CHR'のすべての値に一致するものがあることを確認してください。たとえば、「chr1」、「chr2」、...は両方のデータフレームに現れます(これらは大文字と小文字が区別されます)。その場合、それらが文字か要素かをチェックします( 'class(mapinfo $ CHR)')。 –
運がありません。私はまだこの場合に参加することに根本的な問題があると思っています。あなたが "|"ベッドで指定された条件に基づいてmapinfoをサブセット化するとき。そうしなければ、行をたどることしかできず、他の行に含まれている値に基づいてフィルタリングすることはできません。あなたの例には、ベッドファイルの特異領域に入るMの複数の値は含まれていません。 –