如何比较不同长度的向量?

How to compare different lengths of a vector?

我有两个向量:

A <- 10 10 20 19 24 24 17 18 24 24 24 25 16 16 16 25 25 12 12 12 25 24 24 24 24  2  2

B <- 2 4 2 2 2 3 2 3 2 3 2

我想比较 A 的前两个元素(此处:10 10)。为什么?因为 B 的第一个条目是两个。然后我想比较A中的元素3到6(即:20 19 24 24),因为B的第二个元素是4。依此类推...

当我说我要比较它们时,我想做的是查看所选范围内的任何元素是否低于阈值(例如低于 20)以及其中的另一个元素是否大于另一个阈值(例如 23 ).

期望的输出是计算这两个条件的次数 完成(这里最多可能发生 11 次,因为 B 的长度为 11,这意味着我的向量 A 有 11 个范围,将进行比较)。在此示例中,只有第二个范围会满足条件。因此输出将是 1。如果可以说满足条件的是第二个范围,那也很好。因此输出将是这样的:

count: 1     range: 2

有人知道怎么做吗?

可能有帮助

res <- tapply(A,rep(seq_along(B), B), FUN=function(x)  any(x < 20) & 
                    any(x>23))+0L
res 
# 1  2  3  4  5  6  7  8  9 10 11 
# 0  1  0  0  0  0  0  0  0  0  0 

d1 <- data.frame(count=res, range=names(res))
head(d1,3)
#   count range
#1     0     1
#2     1     2
#3     0     3

数据

A <- c(10, 10, 20, 19, 24, 24, 17, 18, 24, 24, 24, 25, 16, 16, 16, 
   25, 25, 12, 12, 12, 25, 24, 24, 24, 24, 2, 2)
B <-  c(2, 4, 2, 2, 2, 3, 2, 3, 2, 3, 2)