Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 选择表示两个位置之间范围的行,以便仅包括至少包含另一个表的一个位置的间隔_R_Merge_Set_Data.table - Fatal编程技术网

R 选择表示两个位置之间范围的行,以便仅包括至少包含另一个表的一个位置的间隔

R 选择表示两个位置之间范围的行,以便仅包括至少包含另一个表的一个位置的间隔,r,merge,set,data.table,R,Merge,Set,Data.table,仅当间隔(开始/结束)至少包含“地图”表格的一个“位置”(开始)时,我需要保存“参考”中的行: 参考“ref”表的示例: ref 更详细的: rows_to_keep <- ref$start %in% map$start | ref$end %in% map$start rows_to_keep # [1] TRUE TRUE FALSE TRUE ref[rows_to_keep, ] # chr start end # 1 chr1 1 2 # 2 chr2

仅当间隔(开始/结束)至少包含“地图”表格的一个“位置”(开始)时,我需要保存“参考”中的行:

参考“ref”表的示例:

ref
更详细的:

rows_to_keep <- ref$start %in% map$start | ref$end %in% map$start
rows_to_keep
# [1]  TRUE  TRUE FALSE  TRUE

ref[rows_to_keep, ]
#    chr start end
# 1 chr1     1   2
# 2 chr2     2  10
# 4 chr2     6  10
根据本主题保留行
""
“一般来说,使用bioconductor package IRanges来处理与间隔相关的问题是非常合适的”
给你:

library("GenomicRanges")
library("data.table")


gr1 = with(ref, GRanges(Rle(factor(chr, 
                                       levels=c("chr1", "chr2"))), IRanges(start, end)))

gr2 = with(map, GRanges(Rle(factor(chr, 
                                        levels=c("chr1", "chr2"))), IRanges(start, start)))

olaps<-subsetByOverlaps(gr1, gr2)

olaps <- as.data.frame(olaps)
col_headings <- c('chr','start', 'end', 'width', 'strand')
names(olaps) <- col_headings

final <- subset(olaps, select = c("chr", "start", "end"))

    > final
       chr start end
    1 chr1     1  10
    2 chr1    30  40
    3 chr2    80  90
库(“基因组范围”)
库(“数据表”)
gr1=带(参考,格兰杰(Rle)系数(chr,
级别=c(“chr1”、“chr2”)),伊朗(开始、结束)
gr2=带(地图、格兰杰(Rle)系数(chr、,
级别=c(“chr1”、“chr2”)),伊朗(开始,开始)

olapsI知道这个例子中的结果是一样的,但是这个命令没有考虑chr(染色体编号)…而且,看起来这没有得到映射表之间的间隔。仅当map(开始)中包含的某些值在“ref”(开始-结束)范围内时)@Fpertille这两条评论都是正确的;但是,从给定的示例来看,这些要求并不明显。在这一点上,我建议发布一个新的问题和示例数据集来说明这些细节。我必须感谢您的好答案,并对坏示例表示抱歉,但我提出的问题是:仅当间隔(开始/结束)包含(在)“map”表的至少一个“position”(开始)时,我才需要保存“ref”中的行。根据StackOverflow规则,我不应该做多余的新问题。@Fpertille您能更具体一点,编辑您的问题吗?给出一些应该“通过”逻辑的事情和应该“失败”的事情的例子——这听起来与其他一些帖子类似:
final<-"chr start end
chr1 1 10 
chr1 30 40 
chr2 80 90"
final<-read.table(text=final,header=T)
ref$tag <- paste0(ref$chr, "-", ref$start)
ref$tag1 <- paste0(ref$chr, "-", ref$end)
map$tag <- paste0(map$chr, "-", map$start)
ref[ref$start %in% map$start | ref$end %in% map$start, ]
rows_to_keep <- ref$start %in% map$start | ref$end %in% map$start
rows_to_keep
# [1]  TRUE  TRUE FALSE  TRUE

ref[rows_to_keep, ]
#    chr start end
# 1 chr1     1   2
# 2 chr2     2  10
# 4 chr2     6  10
library("GenomicRanges")
library("data.table")


gr1 = with(ref, GRanges(Rle(factor(chr, 
                                       levels=c("chr1", "chr2"))), IRanges(start, end)))

gr2 = with(map, GRanges(Rle(factor(chr, 
                                        levels=c("chr1", "chr2"))), IRanges(start, start)))

olaps<-subsetByOverlaps(gr1, gr2)

olaps <- as.data.frame(olaps)
col_headings <- c('chr','start', 'end', 'width', 'strand')
names(olaps) <- col_headings

final <- subset(olaps, select = c("chr", "start", "end"))

    > final
       chr start end
    1 chr1     1  10
    2 chr1    30  40
    3 chr2    80  90