R 如何在FALSE之前计算逻辑向量中的真值数
在尝试查找向量中R 如何在FALSE之前计算逻辑向量中的真值数,r,logical-operators,R,Logical Operators,在尝试查找向量中TRUE值的数量时,我遇到了第一个。然而,这并不完全符合我的要求。我感兴趣的是在第一个FALSE之前找到向量中TRUE值的数量(如果有的话)。我有一个向量a,这里有一条捷径: sum(cumprod(a)) # [1] 3 其中,cumprod给出了一个累积乘积(在这种情况下为0和1);因此,它消除了第一个FALSE之后的所有TRUE,如中所示 cumprod(a) # [1] 1 1 1 0 0 0 使用下面的语句,我们可以很容易地得到结果 which.min(a)-1
TRUE
值的数量时,我遇到了第一个。然而,这并不完全符合我的要求。我感兴趣的是在第一个FALSE
之前找到向量中TRUE
值的数量(如果有的话)。我有一个向量a,这里有一条捷径:
sum(cumprod(a))
# [1] 3
其中,cumprod
给出了一个累积乘积(在这种情况下为0和1);因此,它消除了第一个FALSE
之后的所有TRUE
,如中所示
cumprod(a)
# [1] 1 1 1 0 0 0
使用下面的语句,我们可以很容易地得到结果
which.min(a)-1
…与基于cumprod()
的解决方案相比,在大向量上的速度要快一些。对于一个非常糟糕的示例,请比较以下两种解决方案:a此方法不适用于仅包含TRUE
值的向量。仅针对TRUE、FALSE
OK组合工作,然后需要另一个if()
检查。如果结果为0
,则需要将其更改为length(a)
。如果您需要多次或在非常大的数据上应用此方法,那么时机仍然会更好。如果您只需要将其作为一个方便的函数,那么基于cumprod()
的单行解决方案可能会更快地键入/记住。并非总是!!这将仅适用于所有TRUE
值,如果所有值都是FALSE
,则在这种情况下也会返回0
,并且不能将其更改为长度(a)