r - 将大数区间转换为指定范围的较小区间

标签 r tidyverse

假设我有这张表:

chr start_coor  end_coor
1   122000001   128000000

我想把这个表变成下面的表,其中间隔设置为100万:

chr start_coor  end_coor
1   122000001   123000000
1   123000001   124000000
1   124000001   125000000
1   125000001   126000000
1   126000001   127000000
1   127000001   128000000

使用基本 R 或 tidyverse 函数,我怎样才能实现这一目标?

谢谢。

最佳答案

使用 tidyverse 你可以做到:

library(tidyverse)

df %>%
  mutate(start_coor = map2(start_coor, end_coor, seq, 1000000)) %>%
  unnest(start_coor) %>%
  mutate(end_coor = start_coor + 999999)

#    chr start_coor  end_coor
#   <int>      <dbl>     <dbl>
#1     1  122000001 123000000
#2     1  123000001 124000000
#3     1  124000001 125000000
#4     1  125000001 126000000
#5     1  126000001 127000000
#6     1  127000001 128000000

数据

df <- structure(list(chr = 1L, start_coor = 122000001L, end_coor = 128000000L), 
class = "data.frame", row.names = c(NA, -1L))

关于r - 将大数区间转换为指定范围的较小区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64786287/

相关文章:

RCPP_MODULE 用于继承类

r - 将参数传递给包含 dplyr 管道表达式 group_by 和 stringr::str_extract 的函数

r - 使用 case_when(grepl()) 对多个参数进行 transmute_at 指定的列号

r - 计算多列的总计百分比

r - 在 R 数据框上格式化作者姓名列

r - dmvnorm MVN 密度 - RcppArmadillo 实现比 R 包慢,包括一些 Fortran

r - 如何对整个数据框使用 case_when?

r - 我可以用字节码编译我的R包吗?

r - 根据列表对象中的条件过滤 R 中的列表

r - 什么!! R中的运算符均值