1
私は2つのデータセットを持っています:GRACesオブジェクトとして1つはGRangesList
で複数のサブセットもう1つ(テスト)。 grl
のすべてのサブセットをループし、 "GenomicRanges"ライブラリのfindOverlaps
関数を使用して、その重複をTest
とし、リスト内のデータ(各反復後に1つの値のみ)を保存したいとします。GRangesオブジェクトをループするときにエラーが発生しました(エラーeval(expr、envir、enclos):非機能を適用しようとしました)
出力は次のようになります。
gr1 2
gr2 5
gr3 1
gr1 <-
GRanges(seqnames = "chr2", ranges = IRanges(3, 6),
strand = "+", score = 5L, GC = 0.45)
gr2 <-
GRanges(seqnames = c("chr1", "chr1"),
ranges = IRanges(c(7,13), width = 3),
strand = c("+", "-"), score = 3:4, GC = c(0.3, 0.5))
gr3 <-
GRanges(seqnames = c("chr1", "chr2"),
ranges = IRanges(c(1, 4), c(3, 9)),
strand = c("-", "-"), score = c(6L, 2L), GC = c(0.4, 0.1))
grl <- GRangesList("gr1" = gr1, "gr2" = gr2, "gr3" = gr3)
grl
Test <-
GRanges(seqnames = c("chr1", "chr1"),
ranges = IRanges(c(1, 5), c(2, 6)),
strand = c("-", "-"), score = c(6L, 2L), GC = c(0.5, 0.2))
myFunction <- function(input,feature){
tmp = list()
for (f in 1:length(objects(feature))){
mtch = findOverlaps(currmySegm, eval(parse(text=paste0("feature$", objects(feature[f]), sep = "")))))
**some calculations**
value <- mean(...)
}
temp[[objects(feature[f])]] <- value
}
myFunction(Test,grl)
Error in eval(expr, envir, enclos) : attempt to apply non-function
私は機能findOverlaps
にgrl
のサブセットを渡すか、またはリスト
'' GRanges'と 'GRangesList'オブジェの両方で動作しますfindOverlaps' cts( '?GenomicRanges :: findOverlaps'を参照してください)。 'findOverlaps(grl、Test)'または(明示的に) 'lapply(grl、function(x)findOverlaps(x、Test))'を実行することによって、全ての重なりを得ることができます。あなたのサンプルデータによると、 'gr3'だけが' Test'と重なっています。 –
@MauritsEversありがとうございました。それは私が問題を解決するのを助けた。 mtch = lapply(grl、function(x)findOverlaps(x、Test))が機能しました。しかし、もし私がやりたければ:myRanges = ranges(mtch、ranges(Test)、lapply(grl、function(x)ranges(x)))は動作しません。私はlapply(mtch、function(y ranges(y))と置き換えたとき、myRanges = ranges(lapply(mtch、function(y ranges(y))、私があなたに助けてもらえますか? –
'レンジ'で何をしようとしているのか分かりません。 'mtch'はあなたにヒット(すなわちインデックス)を与えるでしょう。重なり合った '' GRanges''エントリー。重複するフィーチャーの数を数えたいのですか、あるいは交差する範囲を抽出しますか? –