R 为向量中的每个项计算跨越向量中的值的行数
我试图找出如何计算数据帧中的行数,这些行包含值对,这些值对跨越一个单独向量中的值,用于该单独向量中的每个项 例如,如果我有向量p: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=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),可以稍微提高效率