如何在R代码中找到向量中的最大系列

时间:2017-03-07 08:58:55

标签: r

我想获得非零的每个系列的最大值。 例如:

x <- c(0, 0, 0, 10, 50, 30, 0, 0, 0, 0, 30, 6, 5, 44, 0, 0, 1, 2)

我想在R代码中获得50,44,2。

1 个答案:

答案 0 :(得分:3)

您可以使用rle

zero <- rle(x == 0)
y <- sapply(split(x, rep(seq_along(zero$lengths), zero$lengths)), max)
y[y > 0]
##  2  4  6 
## 50 44  2 

或者,类似地,使用“data.table”:

library(data.table)
data.table(x)[, max(x), rleid(x == 0)][V1 > 0]
##    rleid V1
## 1:     2 50
## 2:     4 44
## 3:     6  2