2016-05-26 14 views
2

私は、内部に30行1000列程度のテキストファイルを持っています。私がread.tableを使用してView()を使用すると、データのレイアウトは以下のようになります。私は多くのメソッドを使用して、私の場合は削除するdata.frameの重複した隣接値を削除しますが、動作させないようにしています。私は、出力はこのようなものになるだろうと予想行列の重複した値を削除するR

1 1 1 2 2 2 3 3 3 3 2 2 
2 2 2 2 2 2 2 2 2 2 2 2 

:私は重複をフィルタリングした後

1 2 3 2 
2 

、私は戻って新しい行列にそれを書き込みます。

答えて

5

rleを使用できます。それは、ベクトル内の等しい値のランの長さと値を "[c] ompute [s]で置き換えます"。

DF <- read.table(text = "1 1 1 2 2 2 3 3 3 3 2 2 
2 2 2 2 2 2 2 2 2 2 2 2") 

x <- apply(DF, 1, function(x) unname(rle(x)$values)) 

do.call(rbind, lapply(x, `length<-`, max(lengths(x)))) 
#  [,1] [,2] [,3] [,4] 
#[1,] 1 2 3 2 
#[2,] 2 NA NA NA 
+0

なぜ[[c] ompute [s] 'で、' calculate 'ではないのですか? – zx8754

+2

@ zx8754さて、 'help(" rle ")'では "Compute"です。私は引用の規則に従っています。 – Roland

+0

それは働いた。ありがとうございました。しかし、今では、多くのNAsが連続しているので、すべてのNAsを削除する機能をフィルタリングしようとしますが、それでもまだテーブルxに残っています。別の方法がありますか? – Alex

関連する問題