我试图找到连续的最大数量" 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()更充分的功能?答案 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