2017-03-07 7 views
1

ゼロ以外の各系列の最大値を求めたい。たとえば :Rコード内のベクトル内の系列の最大値を見つける方法

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

IはRのコードでは50、44、2を取得したいです。

+0

あなたは問題を少し明確にすることはできますか? 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 
+0

ありがとう!あなたはawsomeです! – NOA11120

関連する問題