在R中没有for循环的情况下获取重叠数据帧值的计数

Arkol258

我有两个数据框,一个叫做segments包含数字“开始”和“停止”值

segments <- as.data.frame(
  cbind(
    rep(seq(1, 22, 1), 2),
    seq(500000, 3000000, 57000),
    seq(1000000, 3500000, 57000)
  )
)
colnames(segments) <- c("chr", "segment.start", "segment.end")

另一个,称为positions包含数值。

positions <- as.data.frame(cbind(1, seq(750000, 2000000, 56000)))
colnames(positions) <- c("chr", "pos")

我有兴趣计算segments“开始”和“停止”值之间的区域与每个值重叠的行positions数,并将这些计数添加到positions.

positions$count <- 0

我可以使用以下 for 循环获得这些计数,但在大型数据集上这非常慢。

for (n in 1:nrow(segments)) {
  segment <- segments[n, ]
  to.update <- which(
    positions$pos >= segment$segment.start &
      positions$pos <= segment$segment.end & 
      positions$chr == segment$chr
    )
  positions[to.update, "count"] <- positions[to.update, "count"] + 1
}

有谁知道如何在没有 for 循环的情况下获得这些计数?

r2evans

无需验证,我认为这可以用data.table. 我确信它可以用其他工具(base 或tidyverse来完成,但这速度很快,并且使用了我最近经常使用的工具:foverlaps.

library(data.table)
setDT(segments)
setDT(positions)
positions[, pos2 := pos ]

setkey(segments, segment.start, segment.end)
setkey(positions, pos, pos2)

作为解释点,foverlaps要求两帧都有两个场,功能的前提是一帧范围内的重叠与另一帧的重叠。尽管有人可能会争辩说,在此重叠检查中使用单列选项可能很有用,但添加第二列(pos2在这种情况下)是微不足道的,并且无需更改data.table代码即可实现完全相同的功能

编辑:更新为包含“by chr”逻辑。

编辑 2:倒置,导致positions作为主要:

foverlaps(positions, segments) [
    , .(count = sum(!is.na(segment.start))), by = .(chr, pos, pos2) ][
    , pos2 := NULL ]
#     chr     pos count
#  1:   1  750000     1
#  2:   1  806000     1
#  3:   1  862000     1
#  4:   1  918000     1
#  5:   1  974000     1
#  6:   1 1030000     0
#  7:   1 1086000     0
#  8:   1 1142000     0
#  9:   1 1198000     0
# 10:   1 1254000     0
# 11:   1 1310000     0
# 12:   1 1366000     0
# 13:   1 1422000     0
# 14:   1 1478000     0
# 15:   1 1534000     0
# 16:   1 1590000     0
# 17:   1 1646000     0
# 18:   1 1702000     0
# 19:   1 1758000     1
# 20:   1 1814000     1
# 21:   1 1870000     1
# 22:   1 1926000     1
# 23:   1 1982000     1
#     chr     pos count

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在没有for循环的情况下从不同的数据帧中获取值?

来自分类Dev

在没有For循环的情况下跨R中的数据帧进行匹配和分解

来自分类Dev

在R数据帧中没有值的情况下输入0

来自分类Dev

在R中没有列标题的情况下将数据帧写入csv文件

来自分类Dev

在R中没有列标题的情况下将数据帧写入csv文件

来自分类Dev

在没有for循环的情况下在R中操作数据帧

来自分类Dev

如何在没有任何循环语句的情况下获取数组中多个文件的值

来自分类Dev

在没有循环的情况下计算 R 中的总和

来自分类Dev

在没有tiebraker策略的情况下获取熊猫数据帧的最大行

来自分类Dev

在没有每个循环的情况下计算输入值

来自分类Dev

在JavaScript中,如何在没有for循环的情况下计算对象数组中的值差?

来自分类Dev

如何在没有任何循环的情况下获取php中的特定键数组

来自分类Dev

在MATLab中没有for循环的情况下从数组移动值的最佳方法?

来自分类Dev

在没有for循环的情况下找到vector <vector <int >>中的最大值

来自分类Dev

在没有输入的情况下获取表单值

来自分类Dev

在没有for循环的情况下更改数据框中多个列的类

来自分类Dev

在没有for循环的情况下更改数据框中多列的类

来自分类Dev

在没有parseJSON的情况下获取高图数据

来自分类Dev

在没有API的情况下从软件获取数据

来自分类Dev

在没有$ scope的情况下从角度$ http获取数据

来自分类Dev

在没有Viewbag的情况下获取模型数据

来自分类Dev

如何在R中没有for循环的情况下创建条件整数序列的组合?

来自分类Dev

在Microsoft Excel中,如何在没有额外列的情况下获取vlookup值数组?

来自分类Dev

在没有URL解析的情况下获取HTML中的href值

来自分类Dev

在没有表单操作的情况下获取php变量中的输入标签值

来自分类Dev

我如何在Flutter中没有密钥的情况下获取JSON数据?

来自分类Dev

用户ajax在javaScript中没有“onClick函数”的情况下获取数据

来自分类Dev

有没有办法在没有 ID 的情况下获取 SELECT TAG 中的所有选项值?

来自分类Dev

如何在R中没有未选择数据的情况下绘制子集数据

Related 相关文章

  1. 1

    如何在没有for循环的情况下从不同的数据帧中获取值?

  2. 2

    在没有For循环的情况下跨R中的数据帧进行匹配和分解

  3. 3

    在R数据帧中没有值的情况下输入0

  4. 4

    在R中没有列标题的情况下将数据帧写入csv文件

  5. 5

    在R中没有列标题的情况下将数据帧写入csv文件

  6. 6

    在没有for循环的情况下在R中操作数据帧

  7. 7

    如何在没有任何循环语句的情况下获取数组中多个文件的值

  8. 8

    在没有循环的情况下计算 R 中的总和

  9. 9

    在没有tiebraker策略的情况下获取熊猫数据帧的最大行

  10. 10

    在没有每个循环的情况下计算输入值

  11. 11

    在JavaScript中,如何在没有for循环的情况下计算对象数组中的值差?

  12. 12

    如何在没有任何循环的情况下获取php中的特定键数组

  13. 13

    在MATLab中没有for循环的情况下从数组移动值的最佳方法?

  14. 14

    在没有for循环的情况下找到vector <vector <int >>中的最大值

  15. 15

    在没有输入的情况下获取表单值

  16. 16

    在没有for循环的情况下更改数据框中多个列的类

  17. 17

    在没有for循环的情况下更改数据框中多列的类

  18. 18

    在没有parseJSON的情况下获取高图数据

  19. 19

    在没有API的情况下从软件获取数据

  20. 20

    在没有$ scope的情况下从角度$ http获取数据

  21. 21

    在没有Viewbag的情况下获取模型数据

  22. 22

    如何在R中没有for循环的情况下创建条件整数序列的组合?

  23. 23

    在Microsoft Excel中,如何在没有额外列的情况下获取vlookup值数组?

  24. 24

    在没有URL解析的情况下获取HTML中的href值

  25. 25

    在没有表单操作的情况下获取php变量中的输入标签值

  26. 26

    我如何在Flutter中没有密钥的情况下获取JSON数据?

  27. 27

    用户ajax在javaScript中没有“onClick函数”的情况下获取数据

  28. 28

    有没有办法在没有 ID 的情况下获取 SELECT TAG 中的所有选项值?

  29. 29

    如何在R中没有未选择数据的情况下绘制子集数据

热门标签

归档