R中向量中的最大连续重复

时间:2015-02-25 23:16:38

标签: r

我有一个包含0和1的向量。我想返回连续出现1次的最大值。对于例如如果x是输入向量

 x <-c(0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1)

预期产出:3

我的尝试: 我正在使用函数来完成这项工作。这是我的示例代码:

x<-c(0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1)
y<-rle(x)
max_repeat <-max(y$lengths)

在这种情况下,我输出为4(对应于0而不是1)。我尝试使用tapply来访问rle的完整输出,但是我无法提取出与值1对应的最大重复。

out <-tapply(y$lengths, y$values, max)

这就是我的目标:

0 1
4 3

当我看出out的结构时,它是“int [1:2(1d)] 4 3”。我没有足够的经验来处理这种类型的变量。我需要提取对应于1的值,即3.任何帮助将不胜感激!

由于

2 个答案:

答案 0 :(得分:4)

你可以试试这个:

x<-c(0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1)
y<-rle(x)
max(y$lengths[y$values==1])
# 3

如果您需要有关任何对象的信息,请在此处 y 使用 str 函数,该函数将返回有关包含任何对象的信息。

答案 1 :(得分:1)

我发现它像这样=&gt;

x <-c(0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1)
y=rle(x)
max(y$lengths[y$values==1])

希望它符合您的期望。