使用R中的滚动窗口计算所有位置的密度

时间:2017-11-09 12:36:31

标签: r

如果在其他地方已经涵盖了这一点,请提前道歉,但我找不到简单的解决方案。

我的数据是这样安排的(这些代表变异的位置或 SNP ):

83353
83364
83402
83530
83539
83728
83929
83932
83950
83998
84001
84136
84148
84184
84187
84190
84205
84241
84247
84250
84253
84259
84264

现在我想计算不同位置的这些SNP的密度,即位置 83929 周围的SNP数量是多少?

我想做类似于rollapply的事情,在那里我可以计算出可以找到多少个SNP +/- 50 [即83879-83979范围](和+/- 100和+/- 500等)。

非常感谢任何帮助。

编辑:试图澄清SNP

1 个答案:

答案 0 :(得分:0)

这是一次尝试,让z为具有SNP位置的载体。

window <- 50
lapply(z, function(x){
  m <- x + window #window max
  n <- x - window #window min
  seq = n:m #all positions from min to max
  return(length(z[z%in%seq])) #number of snp found in seq
  })