我有一个向量,该向量基本上包含100,000个条目,其中包含从1到6的数字(我的意思是,条目1 = 4,条目2 = 2,依此类推)。基本上,包含1、2、3、4、5和6的向量的100,000次采样。
我想计算没有值的连续条目的最大数量(例如,在以下数字上:1、1、3、4、3、6、6,即不出现6的最大次数是5,因为我们有5个观测值在出现6之前不是6),并且我正在考虑对向量进行for循环迭代,以计算未出现所需值的次数,但是我不确定如何避免仅计算该值出现多少次。有点像条纹,相反,我不想计算连续观察的次数,而是想计算没有观察的次数。
我基本上一直在思考for循环的结构,并且让我感觉到有一种更简单的方法,有什么想法吗?
答案 0 :(得分:4)
为此,我们可以使用rle
-它告诉您连续值的数量。我们将在您的问题中使用该示例:
x = c(1,1,3,4,3,6,6)
rle(x)
# Run Length Encoding
# lengths: int [1:5] 2 1 1 1 2
# values : num [1:5] 1 3 4 3 6
## Use it to solve your problem
rx = rle(x != 6)
# This will tell us the number of consecutive TRUE values (x isn't 6)
# and FALSE values (x is 6)
# We want to find the maximum length where the value is TRUE:
max(rx$lengths[rx$values])
# [1] 5
您应该能够对此进行调整以解决您的问题。如果遇到问题,请举一个例子。