web-dev-qa-db-ja.com

Python

要素が繰り返されるベクターがあり、それらを削除して各要素が1回だけ表示されるようにします。

Python私はこれを実現するためにベクトルから Set を構築できましたが、Rでこれを行うにはどうすればよいですか?

41
ashim

unique 関数をチェックアウトできます。

 > v = c(1, 1, 5, 5, 2, 2, 6, 6, 1, 3)
 > unique(v)
 [1] 1 5 2 6 3
67
sus_mlm

これは同じことを行います。遅くなりますが、重複の論理ベクトルも必要な場合に便利です。

v[duplicated(v)]
11
dardisco

連続する重複要素のみを削除するには、ベクトルをそれ自体のシフトされたバージョンと比較できます。

v <- c(1, 1, 5, 5, 5, 5, 2, 2, 6, 6, 1, 3, 3)
v[c(TRUE, !v[-length(v)] == v[-1])]
[1] 1 5 2 6 1 3

同じことは dplyr を使用してもう少しエレガントに書くことができます:

library(dplyr)
v[v != lag(v)]
[1] NA  5  2  6  1  3

lag() によって返されるNAは最初の値を削除します。最初の値を保持するために、デフォルトを最初の値とは異なる値に変更できます。

v[v != lag(v, default = !v[1])]
[1] 1 5 2 6 1 3
2
Paul Rougieux