| bed_closest | R Documentation | 
Identify closest intervals.
bed_closest(x, y, overlap = TRUE, suffix = c(".x", ".y"))
x | 
 ivl_df  | 
y | 
 ivl_df  | 
overlap | 
 report overlapping intervals  | 
suffix | 
 colname suffixes in output  | 
input tbls are grouped by chrom by default, and additional
groups can be added using dplyr::group_by(). For example,
grouping by strand will constrain analyses to the same strand. To
compare opposing strands across two tbls, strands on the y tbl can
first be inverted using flip_strands().
ivl_df with additional columns:
.overlap amount of overlap with overlapping interval. Non-overlapping
or adjacent intervals have an overlap of 0. .overlap will not be included
in the output if overlap = FALSE.
.dist distance to closest interval. Negative distances
denote upstream intervals. Book-ended intervals have a distance of 1.
For each interval in x bed_closest() returns overlapping intervals from y
and the closest non-intersecting y interval. Setting overlap = FALSE will
report the closest non-intersecting y intervals, ignoring any overlapping y
intervals.
https://bedtools.readthedocs.io/en/latest/content/tools/closest.html
Other multiple set operations: 
bed_coverage(),
bed_intersect(),
bed_map(),
bed_subtract(),
bed_window()
x <- tibble::tribble(
  ~chrom, ~start, ~end,
  "chr1", 100,    125
)
y <- tibble::tribble(
  ~chrom, ~start, ~end,
  "chr1", 25,     50,
  "chr1", 140,    175
)
bed_glyph(bed_closest(x, y))
x <- tibble::tribble(
  ~chrom, ~start, ~end,
  "chr1", 500,    600,
  "chr2", 5000,   6000
)
y <- tibble::tribble(
  ~chrom, ~start, ~end,
  "chr1", 100,    200,
  "chr1", 150,    200,
  "chr1", 550,    580,
  "chr2", 7000,   8500
)
bed_closest(x, y)
bed_closest(x, y, overlap = FALSE)
# Report distance based on strand
x <- tibble::tribble(
  ~chrom, ~start, ~end, ~name, ~score, ~strand,
  "chr1", 10, 20, "a", 1, "-"
)
y <- tibble::tribble(
  ~chrom, ~start, ~end, ~name, ~score, ~strand,
  "chr1", 8, 9, "b", 1, "+",
  "chr1", 21, 22, "b", 1, "-"
)
res <- bed_closest(x, y)
# convert distance based on strand
res$.dist_strand <- ifelse(res$strand.x == "+", res$.dist, -(res$.dist))
res
# report absolute distances
res$.abs_dist <- abs(res$.dist)
res
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.