2016-10-19 3 views
1

ベクトルの中で最も高い観測値を前方に運び、NAsと最後の最高観測値より低い値の両方を置き換えようとしています。例えば。最も高い観測が実行されました

c(1,2,3,NA,NA,2,NA,NA,4,NA,NA) 

c(1,2,3,3,3,3,3,3,4,4,4) 

ベクトル化の方法でこれを行うための最善の方法は何になるのでしょうか?

+0

?それは反復的でなければならない、私はこれが並列化できるとは思わない。 –

答えて

4
x <- c(1,2,3,NA,NA,2,NA,NA,4,NA,NA) 
y <- x 
y[is.na(y)] <- -Inf 
y <- cummax(y) 
y[y == -Inf] <- NA 
#[1] 1 2 3 3 3 3 3 3 4 4 4 
+0

'-Inf'と' cummax'を使い分けて、3番目のステップでは望ましい出力が得られ、 '-Inf'のインスタンスは残っていません。第4ステップの具体的な理由はありません – OdeToMyFiddle

+0

@Osssanベクトル。あなたがそのステップを除外すれば、 '-Inf'値が得られますが、それは望ましくない可能性があります。 – Roland

+0

頑丈さよ、ありがとう。 – OdeToMyFiddle

関連する問題