R 为向量中的每个项计算跨越向量中的值的行数

R 为向量中的每个项计算跨越向量中的值的行数,r,R,我试图找出如何计算数据帧中的行数,这些行包含值对,这些值对跨越一个单独向量中的值,用于该单独向量中的每个项 例如,如果我有向量p: > p=seq(1,7,1);p [1] 1 2 3 4 5 6 7 和数据帧se: > s=c(1,2,2,5) > e=c(5,7,11,22) > se=data.frame(s,e);se s e 1 1 5 2 2 7 3 2 11 4 5 22 我想知道“se”中有多少行与“p”中的每个项目重叠。我预期的输出应该类似

我试图找出如何计算数据帧中的行数,这些行包含值对,这些值对跨越一个单独向量中的值,用于该单独向量中的每个项

例如,如果我有向量p:

> p=seq(1,7,1);p
[1] 1 2 3 4 5 6 7
和数据帧se:

> s=c(1,2,2,5)
> e=c(5,7,11,22)
> se=data.frame(s,e);se
  s  e
1 1  5
2 2  7
3 2 11
4 5 22
我想知道“se”中有多少行与“p”中的每个项目重叠。我预期的输出应该类似于以下内容:

1 1
2 3
3 3
4 3
5 4
6 3
7 3

您可以使用
sapply
来检查
p
中的每个值

result <- data.frame(p, overlap=sapply(p,function(x) sum(x >= se$s & x <= se$e)))
result

#  p overlap
#1 1       1
#2 2       3
#3 3       3
#4 4       3
#5 5       4
#6 6       3
#7 7       3

result=se$s&x太棒了!谢谢你!通过只计算一次和-
colSums(sappy(p,function(x)x>=se$s&x),可以稍微提高效率