R:数组上连续数的计数

时间:2014-12-01 15:18:08

标签: arrays r apply

我试图找到连续的最大数量" 1"在R中的数组的第三维上。数组由" 0"和" 1"。这是一个例子:

my_array <- array(c(1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,0,1,1), dim=c(2,2,5))

我尝试使用:

apply(my_array,c(1,2),rle)

但结果不是很简单,理想情况下,结果矩阵应如下所示:

     [,1] [,2]
[1,]    3    2
[2,]    2    3

在R?

中是否还有比rle()更充分的功能?

2 个答案:

答案 0 :(得分:2)

试试这个:

apply(my_array,c(1,2),function(x){
                         max(rle(x)$length[rle(x)$values=="1"])
                       })

#     [,1] [,2]
#[1,]    3    2
#[2,]    2    3

答案 1 :(得分:1)

使用我的&#34; SOfun&#34;中的TrueSeq包(only on GitHub),在我对surprisingly similar question的回答中也提到过,你可以这样做:

library(SOfun)
apply(my_array, c(1, 2), function(x) max(tabulate(TrueSeq(as.logical(x)))))
#      [,1] [,2]
# [1,]    3    2
# [2,]    2    3