gpt4 book ai didi

r - 有效地找到向量中的相邻值

转载 作者:行者123 更新时间:2023-12-04 23:45:26 26 4
gpt4 key购买 nike

我有一个 R 数据框,其中有一个数字向量表示沿染色体的位置和一个基因名称向量。我还有一个该染色体上有趣元素的起始位置向量。我想提取每个元素上方和下方的 3 个最接近基因的名称和位置,我想知道最有效的方法来解决这个问题。

例如:

genes <- data.frame("geneStart"=sort(sample(500,10)), "geneName"=sample(LETTERS,10))
genes
geneStart geneName
1 66 X
2 158 U
3 262 N
4 385 D
5 387 H
6 418 Z
7 464 J
8 469 Y
9 475 L
10 491 I

我想最终得到一个函数,我们称之为 getAdjacent ,像这样:
getAdjacent(280)
[1] "X" "U" "N" "D" "H" "Z"
getAdjacent(479)
[1] "J" "Y" "L" "I" NA NA

最佳答案

使用 findInterval :

getAdjacent <- function(x) {
idx <- findInterval(x, genes$geneStart)
range.idx <- (idx-2):(idx+3)
range.idx <- ifelse(range.idx <= 0, NA, range.idx)
as.character(genes$geneName)[range.idx]
}

如果 x,您可能需要调整行为属于 genes$geneStart取决于您的喜好。

关于r - 有效地找到向量中的相邻值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16044143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com