在 R 中看不到观察的最长时间
Maximum times without seeing an observation in R
我有一个向量,基本上包含 100,000 个条目,由 1 到 6 之间的数字组成(我的意思是,条目一 = 4,条目二 = 2,依此类推)。基本上,包含 1、2、3、4、5 和 6 的向量的 100,000 倍样本。
我想计算没有值的连续条目的最大数量(例如,在这些数字上:1,1,3,4,3,6,6,6 没有的最大次数' t appear 是 5,因为我们有 5 个观察结果在 6 出现之前不是 6),我正在考虑在向量上使用 for 循环进行迭代,计算所需值未出现的次数,但我不确定如何防止它只计算该值出现的次数。这有点像连胜的反面,我不想计算我们连续观察了多少次,而是想计算我们没有观察到多少次。
我基本上一直在思考 for 循环的结构,我有一种直觉,觉得有更简单的方法,有什么想法吗?
为此我们可以使用 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
您应该能够对此进行调整以解决您的问题。如果你有困难,post一个例子。
我有一个向量,基本上包含 100,000 个条目,由 1 到 6 之间的数字组成(我的意思是,条目一 = 4,条目二 = 2,依此类推)。基本上,包含 1、2、3、4、5 和 6 的向量的 100,000 倍样本。
我想计算没有值的连续条目的最大数量(例如,在这些数字上:1,1,3,4,3,6,6,6 没有的最大次数' t appear 是 5,因为我们有 5 个观察结果在 6 出现之前不是 6),我正在考虑在向量上使用 for 循环进行迭代,计算所需值未出现的次数,但我不确定如何防止它只计算该值出现的次数。这有点像连胜的反面,我不想计算我们连续观察了多少次,而是想计算我们没有观察到多少次。
我基本上一直在思考 for 循环的结构,我有一种直觉,觉得有更简单的方法,有什么想法吗?
为此我们可以使用 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
您应该能够对此进行调整以解决您的问题。如果你有困难,post一个例子。