1
df1 <- data.frame(chrom = c("chr1","chr2", "chr5"), start=c(10,20,30), end = c(100,200,300), stringsAsFactors=FALSE)

df2 <- data.frame(chrom = c("chr1", "chr4", "chr2"),start=c(15,500,150), end = c(75,1000,300), stringsAsFactors=FALSE)

私の答えは次のとおりです。

chrom start  end
1  chr1    15   75

3  chr2   150  300

私が次のことをするとき:

for(i in 1:length(df2)){

for(j in 1:length(df1)){

if(df2$chrom[i] == df1$chrom[j])

    x <- df2[which(df1$chrom[j] == df2$chrom[i]),]

}
}

私は得る:

chrom start end
1  chr1    15  75

明らかに私の論理は間違っています。その反復は 1 回だけです。誰かが私を理解するのを手伝ってもらえますか? 多分私はこの種のもののために作られていない...とにかく事前にあなたの助けに感謝します

4

1 に答える 1

4

for ループが何のためにあるのかわかりませんが、おそらくこれが目的ですか?

df2[df2$chrom %in% df1$chrom, ]

編集:ポスターの理解を深めるために:

> df2$chrom 
[1] "chr1" "chr4" "chr2"
> df2$chrom %in% df1$chrom
[1]  TRUE FALSE  TRUE
> df1$chrom
[1] "chr1" "chr2" "chr5"
于 2012-04-10T06:01:54.673 に答える