我有一个数字列表(全部大于 10,000,000),并且我想查找彼此 5,000,000 以内的数字簇(这些数字对应于曼哈顿中的列)基因 SNP 突变图)。
有没有办法对列表进行聚类分析,以便我可以在其中写入一个文件: If [i]+1 < [i]+5,000,000
。
它会突出显示文件中的那些值吗?我现在将其作为 Excel 文件,但可以更改格式。谢谢。
您将在这里得到几个潜在的答案。我喜欢 data.table 包,因为它速度快并且有许多有用的内置运算符。在这种情况下,我们可以使用shift()
参数来比较观察i
和观察i + 1
。您可以将其分解为多个步骤,但将所有逻辑合并到一行中如下所示:
library(data.table)
set.seed(1)
dt <- data.table(int = sample(10000000:100000000, 10000, replace = TRUE))
dt[, highlight := ifelse(shift(int,n = 1, type = "lead") < int + 5000000, "highlight", "no highlight")]
#show how many rows fit our criteria defined above
table(dt$highlight)
#>
#> highlight no highlight
#> 5524 4475
由reprex package于2019年1月24日创建(v0.2.1)
我是一名优秀的程序员,十分优秀!