假设我有一个位置值列表:
> head(jap["POS"])
POS
1 836924
2 922009
3 1036959
4 141607615
5 164000000
6 118528028
[...]
和间隔列表:
> genes_of_interest
MGAM SI TREH SLC2A2 SLC2A5 SLC5A1 TAS1R3 LCT
1 141607613 164696686 118528026 170714137 9095166 32439248 1266660 136545420
2 141806547 164796284 118550359 170744539 9148537 32509016 1270694 136594754
我想检查第一个 Dataframe 中的每个位置,如果它在第二个 Dataframe 中的任何间隔内。
所以在这种情况下我应该
FALSE FALSE FALSE TRUE FALSE TRUE
由于141607615
属于第一个区间(MGAM
),118528028
属于第三个区间(TREH
)。
你知道怎么做吗?
先谢谢你。
3条答案
按热度按时间rggaifut1#
在dplyr 1.1.0及更高版本中,如果你首先将
genes_of_interest
转换成一个整洁的格式,你可以使用一个非等长的left_join()
。这将非常快,如果你还有其他列要连接,这将非常灵活。nkhmeac62#
我们可以使用
sapply
遍历genes_of_interest
中的所有列,并将jap
中显示的位置与间隔进行比较。然后用另一个apply
Package 它,以确定行的any
是否为TRUE
。或者我们可以将外部apply
替换为as.logical(rowSums())
,两个函数的输出相同。请注意,
between
函数来自dplyr
包。输出
juud5qan3#
使用矩阵: