1
我想获得每个非零系列的最大值。 例如:如何在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。
我想获得每个非零系列的最大值。 例如:如何在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。
您可以使用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
谢谢!你太棒了! – NOA11120
你能澄清这个问题一点?你的意思是说零运行作为子序列的分隔符,并且你想要每个子序列的最大值? –