ベクトルの最も長い順序部分を抽出することを検討しています。したがって、このベクターを用いた例:ベクトルの最長順序部分の最初のインデックス
x <- c(1,2,1,0.5,1,4,2,1:10)
x
[1] 1.0 2.0 1.0 0.5 1.0 4.0 2.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0
私はいくつかの関数を適用したい、次のように返されます:
x_ord <- some_func(x)
x_ord
[1] 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0
私はベクトルがノーであるどの時点で判断するためにis.unsorted()
を活用しようとしてきました長いソート。ここに私の厄介な試みであり、私がこれまで持っているものは:10
を生産していない右x_ord
として
for(i in 1:length(x)){
if(is.unsorted(x[i:length(x)])==TRUE){
cat(i,"\n")}
else{x_ord=print(x[i])}
}
しかし、これは明らかです。私が最初に増加配列を同定する上で立ち往生していても今
x2 <- c(1,2,1,0.5,1,4,2,1:10,2,3)
:私はまた、これは、より一般的にすると、このようなベクトル何かを同様後に順序付けられたシーケンスを非増えをカバーするために期待しています言及されたベクター。
アイデア?
は、おそらくあなたは((X)> 0差分) '増加数の最長を見つける' RLEのような何かをしたいと。 – Gregor
@Gregor - あなたは正しいです。私の見落とし。質問が反映されました。 – boshek
@Gregor - これは次のようなものです: 'x':' x [(max(rle(diff(x)> 0)[["lengths"]]) - 1):length(x)] '少し乱雑です。しかし、それを最長シーケンスの後の数字を含む 'x2'に適用すると、右の最大インデックス(つまり、' length(x) ')に設定する方法がわからないので、それらの数字が出力に含まれます。 – boshek