This is a test version of Biostars. For the public version, visit https://www.biostars.org.
how to check if SNP falls in the exon region

Hello,

I am a R beginner, and I have a stupid question that if I have a data frame like this, represents the chromosome position of 9 exons of a gene.

  exon_chrom_start exon_chrom_end
1         61955718       61955951
2         61956844       61956998
3         61957387       61957464
4         61958146       61958298
5         61959498       61959578
6         61959892       61960043
7         61950370       61950427
8         61955107       61955201
9         61962255       61965515

And I have another list of the positions of a batch of SNPs, for example, like

61948834
61958130
61956083
61948922
61950242
61950134
61956819

Is there a easy way to check if any of the SNP falls in the exons or not?

I tried to use match function but it didn't work for ranges set by two vectors( exon_chrom_start:exon_chrom_end)

Thank you,

r genome snp sequence gene

1 answer

Your example SNVs do not have overlapping exons. I added one to include in the range.

output:

>  sqldf("select * from snvs left join exons on  snvs.V1 between exons.exon_chrom_start and exons.exon_chrom_end")
        V1 exon_chrom_start exon_chrom_end
1 61948834               NA             NA
2 61958130               NA             NA
3 61956083               NA             NA
4 61948922               NA             NA
5 61950242               NA             NA
6 61950134               NA             NA
7 61956819               NA             NA
8 61955725         61955718       61955951

Input:

> exons
  exon_chrom_start exon_chrom_end
1         61955718       61955951
2         61956844       61956998
3         61957387       61957464
4         61958146       61958298
5         61959498       61959578
6         61959892       61960043
7         61950370       61950427
8         61955107       61955201
9         61962255       61965515

> snvs
        V1
1 61948834
2 61958130
3 61956083
4 61948922
5 61950242
6 61950134
7 61956819
8 61955725

I added 8th SNV to include one in range.

I've been looking for this R code for such a long time!! Thanks @cpad0112!!

Log in to answer this question.