零之间每个数字的最大长度

时间:2018-01-31 03:44:19

标签: r

我有一个大矩阵,我想找出,每行最大长度为零之间。 小例子

lapply/sapply
  • 第一行有两组零数字,第一组有3个数字,第二行有2,最大长度是3,这就是我要找的东西
  • 第二行有3个零之间的组,第一个有1个数字,第二个有3个,第三个有1个数字最大长度是3个数字
  • 第三行有2个组,第一个为零,第二个有2个数字,最大长度为2。

我只想在新矩阵中使用这些最大长度数 我希望它清楚地理解

1 个答案:

答案 0 :(得分:3)

使用applyrle的基本R基础方法,其中我们返回两个零之间的最大非零值。

apply(mat == 0, 1, function(x) {
    ind = rle(x)
    max(ind$lengths[!ind$values])
})

#[1] 3 3 2

使用tablecumsum

更简洁的另一种方法
apply(mat == 0, 1, function(x) max(table(cumsum(x))) - 1)

#[1] 3 3 2