2017-12-08 22 views
0

現在、いくつかの要素がベクトルに配置されているかどうかを調べようとしています。私はタイプが'character'の本当に大きなベクトルで作業しています。要素は、ベクター全体ではほぼ同じですが、時には、彼らは次のように戻って自分の元の値に変更し、その変更:私はuniqueを使用する場合、私が得るRのベクトルの要素をただちに変更する

v1 <- c("A","A","A","B","B","B","A","A","B","B","C","C","A") 

"A","B","C" 

しかし、私が本当に必要です:

"A","B","A","B","C","A" 

つまり、ベクターの元の順序を保持することです。 誰かが自分の問題を解決する機能を知っていますか?

+0

'rle(v1)$ values'。私は嘘を見つけることができるかどうかを見ます。 – Frank

+0

@Frankこの質問には、問題を複雑にするdata.frameから行を削除する特別な質問があるので、これは特定の質問の正確な複製であるかどうかはわかりません。これはおそらく他の質問の重複です。 – Dason

+1

@Dason合意しました。まだ見ています。私はあなたの良い答えをアップアップしましたが、diffを使っていくつかあまりにも巧妙なバリエーションを得る前に、それを閉じるために最高の数字を示します。 – Frank

答えて

3

rle機能は、「ランレングス符号化」です。基本的に、各値が何回繰り返されるかを示す方法でベクトルをエンコードする方法を説明します。私たちはこれから価値を得ることができ、あなたが望むものを与えるはずです。

> v1 <- c("A","A","A","B","B","B","A","A","B","B","C","C","A") 
> rle(v1) 
Run Length Encoding 
    lengths: int [1:6] 3 3 2 2 2 1 
    values : chr [1:6] "A" "B" "A" "B" "C" "A" 
> rle(v1)$values 
[1] "A" "B" "A" "B" "C" "A" 
関連する問題