我有一个包含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.任何帮助将不胜感激!
由于
答案 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])
希望它符合您的期望。